question a 10 sous pour les pros...

question a 10 sous pour les pros... - PHP - Programmation

Marsh Posté le 03-04-2004 à 15:20:09    

... ca veut dire quoi :

Citation :

$var="'%$tablo[0]%'";

???
 
en d'autre terme, a quoi servent ces %, et pourquoi ces doubles quotes ?
 
MERCI de vos lumieres, je cherche sur gougueule depuis 1 heure san trouver, et je bloque sur ce bout de code :/ ...

Reply

Marsh Posté le 03-04-2004 à 15:20:09   

Reply

Marsh Posté le 03-04-2004 à 16:21:51    

tu pourrais pas mettre plus de code?
là ce que ca fait c'est juste initialiser une variabla avec la valeur de la 1ere case de tablo entourée de "%".
C'est pour une recherche dans une base mySQL ce truc non?

Reply

Marsh Posté le 03-04-2004 à 16:32:52    

Ouais, à tous les coups, c'est utilisé pour faire un LIKE en SQL.
Et le % du début va demander pas mal de ressources...

Reply

Marsh Posté le 03-04-2004 à 16:58:07    

exact, le but c'est d'utiliser les variable d'un tableau rempli avec des mots saisis ds un moteur de recherche.
 
mais je ne pige pas a quoi servent les % au debut et à la fin ???
Pourquoi beaucoup de ressources ?  
 
voila le code du moteur que je tente de personnaliser (j'en ai juste mis un bout pour ne pas prendre 3 pages, le reste n'ets plus en rapport avec ma question, il me semble :
 

Citation :


/* $mot, c'est le nom du champ du formulaire de saisie du moteur /*
$mot=strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots);
 
/* definitions des champs a explorer dans la base */
$z=1;
$texte="Recherche sur le(s) mot(s) : "$mots[0]"";
$phrase="'%$mots[0]%'";
$phrase2="'%$mots[0]%'";
 
while($z<$nombre_mots)
 {
 $texte.=" ";
 
 $phrase.=" ".$et_ou." champ1 like '%$mots[$z]%'";
 $phrase2.=" ".$et_ou." champ2 like '%$mots[$z]%'";
 if($et_ou=="and" ){$texte.="et";}else{$texte.="ou";}
 $texte.=" &quot;$mots[$z]&quot;";
 $z++;
 }
echo "$texte"."<br><br>";
 
 
if(!isset($debut)){$debut=0;}
$page=0;
$debut=$_GET[page]*$limit;
 
//==============================================================
// REQUETE DANS LA TABLE matable  
 
$requete=mysql_db_query("$sql_bdd","select count(*) from matable where champ1 like $phrase or dchamp2 like $phrase2",$db_link);
$nb_total=mysql_result($requete,0,"count(*)" );
 
 
$requete=mysql_db_query("$sql_bdd","select * from matable where champ1 like $phrase or champ2 like $phrase2 limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete);
 
mysql_close($db_link);
 
// DEFINITION DU MESSAGE A AFFICHER
if ($mot=="" )...etc...

 
 
en fait, ce sont les roles et syntaxes des $phrase que je ne comprends pas...  

Reply

Marsh Posté le 03-04-2004 à 17:09:27    

Le caractère % signifie "n'importe quoi".
Càd "LIKE '%un%'", signifie trouver "un", précédé et suivi de n'importe quoi.
La base de données gère bien le dernier %, mais mal le premier ("commençant par n'importe quoi" va utiliser un index avec ça).

Reply

Marsh Posté le 03-04-2004 à 17:20:52    

ok, je ne savais pas qu'on pouvait utiliser ce jocker % dans l'affectation d'une variable, je pensais que c'etait reservé aux requetes sql...
sinon oui, j'ai indexe les champs concerné, ca ne sert a rien du coup ?

Reply

Marsh Posté le 03-04-2004 à 17:31:39    

Je pense que ton index sera utilisé uniquement lorsque la base vérifiera qu'il n'y a rien qui commence par "un" (pour reprendre le même exemple).
Sinon, % est bien réservé aux requêtes SQL, tout ce que fait "$phrase="'%$mots[0]%'";", c'est créer une chaîne de caractères (utilisée plus tard dans une requête SQL).

Reply

Marsh Posté le 03-04-2004 à 17:35:18    

ok, merci kalex d'avoir pris le temps de repondre :)
c'est deja plus clair !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed