nolog Posté 3 Mai 2006 Posté 3 Mai 2006 Bonjour j'ai un formulaire de recherche a multi-criteres nom, site, mail, adresse je fais un SELECT * FROM matable WHERE nom='$_POST['nom']' or site='$_POST['site']'... mais je n'arrive a avoir que les infos concernant un critere "nom" par ex , au lieu d'avoir les infos sur "nom et sur "site" si dans mon formulaire je renseigne a la fois le champ nom et site? pouvais m'aider svp merci
nolog Posté 3 Mai 2006 Auteur Posté 3 Mai 2006 if( isset($_POST['raison']) || isset($_POST['adresse'])) { require_once('db_connect.php'); $client=mysql_query("select * FROM annuaire WHERE nom='".$_POST['raison']."' OR adresse='".$_POST['adresse']."' OR mail='".$_POST['mail']."' ;"); //Affichage de l'erreur éventuelle $erreur = mysql_error() ; if ($erreur != "") { echo "Il y a une erreur dans la requete : " . $erreur ; exit(0) ; } $nb_membre=mysql_num_rows($client); $ligne =mysql_fetch_assoc($client); if ( $nb_membre > 0) { echo'<table width="600" height="170" border="0" align="center"> <tr> <td width="69" rowspan="7" align="left" valign="top"><img src="../images/'.$ligne['image'].'"></td> <td width="189" ALIGN="left"><span class="rrech2">'.$ligne['nom'].'</span></td> <td width="289"> <span class="rrech"> Offres de vente </span> </td> </tr> <tr> <td " ALIGN="left"><span class="rrech">'.$ligne['adresse'].'</td> <td><span class="rrech"> Offres d\'achat </span></td> </tr> <tr> <td ALIGN="left"><span class="rrech">'.$ligne['mail'].'</td> <td><span class="rrech"> Appel d\'offres </span></td> </tr> <tr> <td ALIGN="left"><span class="rrech2">'.$ligne['telephonne'].'</span></td> <td><span class="rrech"> Infos activité </span></td> </tr> <tr> <td ALIGN="left"></td> <td><span class="rrech"> Coordonnées suppl </span></td> </tr> <tr> <td ALIGN="left"></td> <td><span class="rrech"> Plan d\'accès </span></td> </tr> <tr> <td ALIGN="left"></td> <td><span class="rrech"> Page catalogue </span></td> </tr></table> <hr>'; } }
ouarzazat Posté 6 Mai 2006 Posté 6 Mai 2006 (modifié) Je vais te donner un truc que l'on m'a donné sur le hub! Le principe est de rentrer tes variables de formulaire dans un tableau comme cela par exemple: <html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="testform"> <p>Nom : <input type="text" name="critere[field1]" value="" /<p> <p>Site : <input type="text" name="critere[field2]" value="1" /<p> <p>Champ 3: <input type="checkbox" name="critere[field3]" value="1" /<p> <p><input type="submit" name="submit" value="Envoyer" /> | <input type="reset" name="reset" value="Reset" /></p> </form></body></html> Puis pour définir ta clause WHERE tu utilises une boucle pour fouiner les résultats contenus dans ce tableau, c'est à dire les variables envoyées par ton formulaire: $whereclause = "";foreach($_POST['critere'] as $criterion => $value) {if ($value!=""){$whereclause .= mysql_escape_string($criterion)."='".mysql_escape_string($value)."' AND ";}}$whereclause = rtrim($whereclause," AND "); Rassemble tout ça et test: <html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="testform"> <<p>Nom : <input type="text" name="critere[field1]" value="" /<p> <p>Site : <input type="site" name="critere[field2]" value="1" /<p> <p>Champ 3: <input type="checkbox" name="critere[field3]" value="1" /<p> <p><input type="submit" name="submit" value="Envoyer" /> | <input type="reset" name="reset" value="Reset" /></p> </form> <?php $whereclause = ""; foreach($_POST['criteria'] as $criterion => $value) { $whereclause .= mysql_escape_string($criterion)."='".mysql_escape_string($value)."' AND "; } $whereclause = rtrim($whereclause," AND "); echo $whereclause; ?> </body></html> Ensuite ta requête sera donc comme suit: SELECT * FROM table WHERE $wherclause Voilà j'espère que c'est du tout bon pour toi! ++ Modifié 6 Mai 2006 par ouarzazat
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant