Page 1 sur 1

amelioration script recherche

Posté : 19 janv. 2007, 10:12
par regne
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

Posté : 19 janv. 2007, 14:52
par titerm
Un truc vraiment basique serait déjà de ne faire qu'une seule fois la requete et de faire le count en php.

Posté : 19 janv. 2007, 15:36
par Invité
je ne sais pas comment faire pour compter en php...

Posté : 19 janv. 2007, 15:53
par Jules Petibidon
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 !

Posté : 19 janv. 2007, 16:41
par regne
merci je look :wink: