2017-09-17 2 views
-1

J'ai un problème avec la recherche mondiale partielle.MySQL PHP recherche partielle

Le code ci-dessous fonctionne, mais seulement avec la recherche par un mot complet. Si je mets seulement une partie du mot dans la boîte de recherche, cela ne fonctionne pas. S'il vous plaît pouvez-vous me donner un indice de ce qu'il faut changer pour être en mesure de faire une recherche partielle de mots?

<?php include "connection.php"; 


$sql = "SELECT * FROM Klienci "; 

if (isset($_POST['search'])) { 

    $search_term = mysql_real_escape_string($_POST['search_box']); 

    $sql .= "WHERE nazwaKlienta = '{$search_term}' "; 
    $sql .= " OR adresMail = '{$search_term}' "; 
    $sql .= " OR adresMail2 = '{$search_term}' "; 
} 

$query = mysql_query($sql) or die(mysql_error()); 

?> 


<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>BAZA | Dashboard</title> 
    <!-- Bootstrap core CSS --> 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 

    <link href="css/jumbotron-narrow.css" rel="stylesheet"> 
</head> 
<body> 

    <div class="container"> 
    <div class="header"> 
     <ul class="nav nav-pills pull-right"> 
     <li class="active"><a href="index.php">Home</a></li> 
     <li><a href="add_customer.php">Dodaj Firmę</a></li> 
     </ul> 
     <h3 class="text-muted">ITalents</h3> 
    </div> 

    <div class="row marketing"> 
     <div class="col-lg-12"> 

     <h2>KLIENCI</h2> 
     <table class="table table-striped"> 

      <form name="search_form" method="POST" action="display_data.php"> 
      Search: <input type="text" name="search_box" value ="" /> 
      <input type="submit" name="search" value="Search the table..." > 
      </form> 

      <tr> 
      <th>id</th> 
      <th>Klient</th> 
      <th>Email</th> 
      <th>Email 2</th> 
      <th>Data dodania do bazy</th> 
      </tr> 

      <?php while ($row = mysql_fetch_array($query)) { 

      //Display customer info 
      $output ='<tr>'; 
      $output .='<td>'.$row['id'].'</td>'; 
      $output .='<td>'.$row['nazwaKlienta'].'</td>'; 
      $output .='<td>'.$row['adresMail'].'</td>'; 
      $output .='<td>'.$row['adresMail2'].'</td>'; 
      $output .='<td>'.$row['dataDodania'].'</td>'; 
      $output .='<td><a href="edit_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Edit</a></td>'; 
      $output .='<td><a href="delete_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Delete</a></td>'; 
      $output .='</tr>'; 

      //Echo output 
      echo $output; 
      ?> 
      <?php } ?> 

      </table> 

     </div> 
     </div> 

    </div> 

    <div class="footer"> 
     <p>&copy; Company 2014</p> 
    </div> 

    </div> <!-- /container --> 


</body> 
</html> 
+2

Vous devez utiliser soit LIKE ou une expression régulière. –

+1

Utilisez 'like' et les caractères génériques, ou regarder dans la recherche de texte intégral. N'utilisez pas non plus 'mysql_ *' avec 'PDO' ou' MySQLi'. https://dev.mysql.com/doc/refman/5.7/fr/fulltext-search.html – chris85

+0

Il est bénéfique pour vous et la communauté SO si vous épuiser la recherche en ligne avant de demander ici. Si vous recherchez simplement google avec le titre de ce post, vous trouverez beaucoup de ressources pour vous aider à le résoudre ... cela dit, le mot-clé LIKE sera ce que vous cherchez. –

Répondre

0

Le code ci-dessous devrait fonctionner. Vous devez utiliser LIKE au lieu d'utiliser égal. Par exemple: O WH quelque chose COMME '% quelque2%'

<?php include "connection.php"; 


$sql = "SELECT * FROM Klienci "; 

if (isset($_POST['search'])) { 

    $search_term = mysql_real_escape_string($_POST['search_box']); 

    $sql .= "WHERE nazwaKlienta LIKE '%{$search_term}%' "; 
    $sql .= " OR adresMail LIKE '%{$search_term}%' "; 
    $sql .= " OR adresMail2 LIKE '%{$search_term}%' "; 
} 

$query = mysql_query($sql) or die(mysql_error()); 

?> 


<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>BAZA | Dashboard</title> 
    <!-- Bootstrap core CSS --> 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 

    <link href="css/jumbotron-narrow.css" rel="stylesheet"> 
</head> 
<body> 

    <div class="container"> 
    <div class="header"> 
     <ul class="nav nav-pills pull-right"> 
     <li class="active"><a href="index.php">Home</a></li> 
     <li><a href="add_customer.php">Dodaj Firmę</a></li> 
     </ul> 
     <h3 class="text-muted">ITalents</h3> 
    </div> 

    <div class="row marketing"> 
     <div class="col-lg-12"> 

     <h2>KLIENCI</h2> 
     <table class="table table-striped"> 

      <form name="search_form" method="POST" action="display_data.php"> 
      Search: <input type="text" name="search_box" value ="" /> 
      <input type="submit" name="search" value="Search the table..." > 
      </form> 

      <tr> 
      <th>id</th> 
      <th>Klient</th> 
      <th>Email</th> 
      <th>Email 2</th> 
      <th>Data dodania do bazy</th> 
      </tr> 

      <?php while ($row = mysql_fetch_array($query)) { 

      //Display customer info 
      $output ='<tr>'; 
      $output .='<td>'.$row['id'].'</td>'; 
      $output .='<td>'.$row['nazwaKlienta'].'</td>'; 
      $output .='<td>'.$row['adresMail'].'</td>'; 
      $output .='<td>'.$row['adresMail2'].'</td>'; 
      $output .='<td>'.$row['dataDodania'].'</td>'; 
      $output .='<td><a href="edit_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Edit</a></td>'; 
      $output .='<td><a href="delete_customer.php?id='.$row['id'].'" class="btn btn-default btn-sm">Delete</a></td>'; 
      $output .='</tr>'; 

      //Echo output 
      echo $output; 
      ?> 
      <?php } ?> 

      </table> 

     </div> 
     </div> 

    </div> 

    <div class="footer"> 
     <p>&copy; Company 2014</p> 
    </div> 

    </div> <!-- /container --> 


</body> 
</html> 
+0

Vous êtes le bienvenu :) –

+3

de toute façon vous devriez éviter d'utiliser mysql, je vous recommande d'apprendre mysqli ou PDO. Si vous exécutez ce code sur la nouvelle version de PHP, cela ne fonctionnera pas et rendra votre site vulnérable à l'injection SQL. apprendre mysqli est aussi facile que mysql. –

+2

Une mise à jour de @SMJobayerAlam, notez, mysql comme DB est très bien à utiliser. Les fonctions PHP 'mysql_ *' ne devraient plus être utilisées. – chris85