amelioration script recherche

Eléphant du PHP | 199 Messages

19 janv. 2007, 10:12

Bonjour,

j'avais fait il y a quelque temps, et avec votre aide... un petit script de recherche dans une bdd.
<?php 
require("config.inc.php"); 

$search=$_POST['rech']; 
$table = "liste_video"; 
    
  
 $c = @mysql_connect($host,$username,$password) or die("connection impossible");
 @mysql_select_db("$bdd_name",$c) or die("selection impossible");
 $result = mysql_query("SELECT count(id) FROM `".$table."` WHERE valid = 1 AND (concat(logiciel, version_log) LIKE '%".$search."%' OR concat(os, version_os) LIKE '%".$search."%' OR `description` LIKE '%".$search."%' OR `nom` LIKE '%".$search."%') ")  or die("selection impossible") ;
 $ret = mysql_fetch_array($result) or die("selection impossible");

 // nombre de lignes
 $nb_results = $ret[0];
 if ($nb_results<=0 OR empty($search)) {
 if (empty($search)) {
 echo "<p class='texte'>Pas de recherche à effectuer.<br><br>";
 } else {
 echo "<p class='texte'>Il y a <b>$nb_results</b> résultats à votre recherche. Recommencez avec un seul mot...<br><br>";
 }
 } else {
 echo "<p class='texte'>Il y a <b>$nb_results</b> résultats à votre recherche.<br><br>";
  
 $sql = "select * FROM `".$table."` WHERE valid = 1 AND (concat(logiciel, version_log) LIKE '%".$search."%' OR concat(os, version_os) LIKE '%".$search."%' OR `description` LIKE '%".$search."%' OR `nom` LIKE '%".$search."%') order by id DESC"  or die("selection impossible");
  
 if($p = @mysql_query($sql,$c)){
 while($r = @mysql_fetch_array($p)){
  $id = "$r[id]";
 $nom = "$r[nom]";  
 echo $nom.'<br>';
  
 }
 }
 }
 // deconnection de la BDD
mysql_close();
 ?>
on m'avait suggerer d'ameliorer ma recherche avec php. Je n'ai aucune idée de quoi faire pour ameliorer ma recherche en php... est ce que quelqu'un peut m'aiguiller ?

j'ai aussi un probleme de concatenation dans ce code :
pour une recherche "windows xp" je n'est pas de resultat, parcontre sur "windowsxp" la j'ai des resultats... une idée pour corriger ca?

merci d'avance

Mammouth du PHP | 505 Messages

19 janv. 2007, 14:52

Un truc vraiment basique serait déjà de ne faire qu'une seule fois la requete et de faire le count en php.

Invité
Invité n'ayant pas de compte PHPfrance

19 janv. 2007, 15:36

je ne sais pas comment faire pour compter en php...

Eléphant du PHP | 259 Messages

19 janv. 2007, 15:53

hello,

dans ces cas là le manuel php est ton ami...

1) lorsque tu utilise une fonction et que tu en cherche une qui a rapport avec celle ci, le manuel t'en propose la liste...

dans le cas présent, lis la description de mysql_query attentivement et tu auras ta réponse.

quelques regles simples dont il faut se souvenir :
quoi que je veuille faire, il existe sans doute une fonction php pour cela... donc comment dirais-je ce que je veux faire en anglais ?
dans la plupart des cas, les noms de fonctions sont préfixés suivant ce à quoi elles servent : mysql_quelquechose, array_bidule... donc si tu connais le nom d'une fonction qui contient le préfixe, tu trouves aisément la liste des fonctions que tu cherches.

bonne lecture !

Eléphant du PHP | 199 Messages

19 janv. 2007, 16:41

merci je look :wink: