Aller au contenu

Sujets conseillés

Posté

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

Posté
 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>';

}

}

Posté (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é par ouarzazat

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...