espace enter sur recherche bd + ameliore performance

gussss
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 11:41

tout d'abord bonjour :)

voila je viens de creer un programme de recherche dans ma DB, mais j'ai un probleme a l'affichage :

je m'explique, j'ai une parti description qui peut comporter des enter, des espace et autre, j'ai utilise nl2br() pour les enter ca c'est ok, mais pour les espace ca va pas donc si j'ai dans ma bd ; je suis la ...
il n'affichera que je.

et aussi, je voudrai que ma recherche soit plus performante, si je rentre pas le nom exacte il trouve rien hors si j'ai un jean pierre et pierre jean et que je rentre pierre, je voudrai trouver les deux.

j'ai essaye avec un LIKE '%$ma_variable%' met alors j'ai une erreur sql ...

pouvez vous m'aider?

gusss
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 12:15

voici le code ca sera peut etre plus claire pour vous :

Code : Tout sélectionner

<?php //include("connect.php"); // Paramètres de connexion à la base de données $BD_serveur = "localhost"; $BD_utilisateur = "root"; $BD_motDePasse = ""; $BD_base = "dit"; ?> <?function recherche($name){ mysql_connect("localhost", "root", ""); mysql_select_db("dit"); if($name=='') {$requete="SELECT idclient, nom, reception, resolution FROM client ORDER BY idclient";} else{ if($name!='') { $reqlogin=" nom='$name' "; } else $reqlogin=''; $requete="SELECT idclient, nom, reception, resolution FROM client WHERE $reqlogin ORDER BY idclient"; } $sql = mysql_query($requete) or die('Erreur SQL'); echo "<table width=\"100%\">"; while(list($idclient,$name, $reception , $resolution) = mysql_fetch_array($sql)) { $resolution = nl2br ($resolution); echo "<td><input type=\"text\" disabled=\"disabled\"size=\"2\" value=\"$idclient\" name=\"id\" ></td>". "<td><input type=\"text\" disabled=\"disabled\"size=\"15\" value=\"$name\" name=\"login\"></td>". "<td><input type=\"text\" disabled=\"disabled\"size=\"15\" value=\"$reception \" name=\"reception\"></td>". "<td><input type=\"textarea\" disabled=\"disabled\" size=\"45\" value=$resolution name=\"mail\" ></td>"; } echo "</table>"; } ?> <html> <head><title>Recherche</title></head> <body> Ceci est une page de recherche. <table><form method="post" > <tr> <td> <b>Login</b>: </td> <td> <input type="text" name="name" maxlength="32"/> </td> </tr> <tr><td></td><td> <input type="submit" value="Rechercher"/> </td></tr> </form> </table> <? if (isset($_POST['name'])){ recherche($_POST['name']);} ?> </body> </html>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 févr. 2006, 12:46

Salut,

un champs de texte "textarea" ne se remplis pas ainsi, il n'y a pas d'attribut value mais:
<textarea rows="3" cols="5">
  valeur de la avriable
</textarea>
et de quel requete parles tu ? montre nous l'essaie que tu as fait

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

gussss
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 12:55

Code : Tout sélectionner

$requete="SELECT idclient, nom, reception, resolution FROM client WHERE $reqlogin LIKE '%$reqlogin%' ORDER BY idclient";
pour le text area et les espace j'ai reussit en simplifiant le tout ... juste que pas moyen d'aller a la ligne entre les lignes mais je trouverai ca

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 févr. 2006, 13:03

le probleme vient du faite que tu appel au nom du champ dans le LIKE:
...WHERE $reqlogin LIKE '%$reqlogin%' ORDER BY idclient";
avec
$reqlogin=" nom='$name' ";
cette requete devrai ressembler a ceci:
...WHERE nom LIKE '%$name%' ORDER BY idclient";
et éventuellement regarder du coté de addslashes() pour $name. sans oublié d'initialiser $name=""; pour eviter une cas particulier :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

gussss
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 13:12

avec ta requete c'est parfait ca marche, mais je comprend pas ton initialisation $name="";
car la y me reprendra tout, c'est comme faire une recherche blanche non?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 févr. 2006, 14:30

c'est juste pour eviter un message d'erreur dans le cas ou la variable n'existerai pas. Si tu t'assure de bien affecter une valeur à la variable $name, pas besoin d'initialisation.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

gussss
Invité n'ayant pas de compte PHPfrance

03 févr. 2006, 14:43

merci beaucoup