Probleme de Fonction search php

pieric62 -  
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un souci avec mon code en php, j'aimerais rechercher dans les logins de ma db or j'ai beau fair eun code identique au votre je n'obtiens pas de resulats:

[code]

<form name="search" method="post" action="searchorder.php" >

<input type="text" name="login" size = "28" MaxLength="20">

<br><br><br><INPUT type=submit Value="Rechercher" ><br><br>

<?php

if ( $_POST)
{
echo 'Resultats: <br><br><br> ';
mysql_connect("localhost","root","");
mysql_select_db("polar");

$search = $_POST['login'];

$rq = mysql_query("SELECT login FROM accounts WHERE login LIKE '%$search%' ");

while ( $data = mysql_fetch_array($rq) );

{

?>

<?php echo $data['login'] ; ?>


<?php
}


if (!$rq){ echo 'Aucun résultat trouvé !' ; }

}

?>

/code
A voir également:

4 réponses

dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   135
 
oui maix la premère erreur je ne l'ai jamais faite alors je ne l'avais pas vue
1
toto
 
Bonjour

pieric62, ton code est correct quoi qu'en dise dindoun. Seule sa remarque sur $_POST est valable.

D'abord les balises. Il est absurde de fermer une balise php ?> pour rouvrir deux lignes plus loin <?php. Le seul effet, c'est d'envoyer quelques lignes vides au client (qui ne provoquent même pas de saut de ligne à l'affichage) et de rendre ton script difficile à lire. Donc, supprime tous les ?> et les <?php qui se suivent sans rien d'utile entre les deux.

ensuite : while ( $data = mysql_fetch_array($rq) );

ton While est suivi d'une instruction vide (; seul) donc tu 'épuises' toutes les réponse à la requête sans faire aucun traitement. Le bloc ( de { à } ) qui suit est en dehors de la boucle, et $data contient FALSE quand il s'exécute. ça devrait marcher nettement mieux sans le ;

Enfin, la place logique de tout ce qui suit le if ($_POST) est avant le traitement du formulaire, pas après. Si tu veux renvoyer un formulaire avec de messages du genre "veuillez indiquer votre nom" en cas de formulaire incomplet, il faut bien que tu aies traité le formulaire précédent avant de créer le nouveau. Car tu es bien conscient que le formulaire que tu traites dans ce script n'est pas celui que tu viens d'envoyer, mais celui que le client avait rempli avant d'appeler ton script ?
0
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   135
 
salut,

if ( $_POST) je mets : if (isset ($_POST['login']))

$rq = mysql_query("SELECT login FROM accounts WHERE login LIKE '%$search%' ");
je mets
$rq = mysql_query("SELECT login FROM `accounts` WHERE login LIKE '%".$search."%' ");
et puis souvent y a des trucs en plus derrière avec _utf8

<?php echo $data['login'] ; ?>
je mets

<?php echo $data[5] ; ?> // 5 : colonne de login
-1
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   135
 
bien vu le ;
-1
toto
 
un peu classique, comme le if (x=0)
0