Problème formulaire recherche multi-critères
Résolu/Fermé
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
-
27 déc. 2009 à 17:06
louis1984 Messages postés 341 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 10 mars 2016 - 4 janv. 2010 à 21:00
louis1984 Messages postés 341 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 10 mars 2016 - 4 janv. 2010 à 21:00
A voir également:
- Problème formulaire recherche multi-critères
- Recherche musique - Guide
- Google recherche par image - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Formulaire de réclamation facebook - Guide
36 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 janv. 2010 à 21:06
3 janv. 2010 à 21:06
oui deux petites erreurs au moment du copier coller
//on parcours l'array $champ=index=Nom champ table $critere=valeur cherchée foreach($array_criteres as $champ=>$critere){ if($i==1){ $finrequete .=" ".$champ." = '".$critere."'"; //au premier critere on ne doit pas avoir de AND ou OR }else{ $finrequete .=" ".$operateur." ".$champ." = '".$critere."'"; //pour les criteres suivants : AND ou OR } $i++; }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 janv. 2010 à 10:38
4 janv. 2010 à 10:38
j'ai trouvé l'erreur et en même temps réorganisé tout le script, pour que chaque test soit pris en compte pour les instructions correspondantes
<?php //il faut recuperer les valeurs postées pour chaque champ if(isset($_POST['recherche'])){//le formulaire a été posté $allcriteres=$_POST['allcriteres']; $id=$_POST['id']; $nom=$_POST['nom']; $prix=$_POST['prix']; if ( $allcriteres == "oui"){ //l'erreur était là, le test d'égalité c'est == et pas = $operateur="AND"; }else{ $operateur="OR"; } $array_criteres=array(); //on empile les valeurs dans un array seulement si elles existent if ($id != "") $array_criteres['id']=$id; //on met dans un array dont l'index correspond au champ de la table et la valeur= valeur cherchée if ($nom != "") $array_criteres['nom']=$nom; if ($prix != "") $array_criteres['prix']=$prix; if(sizeof($array_criteres)>0){ $i=1; //on parcours l'array $champ=index=Nom champ table $critere=valeur cherchée foreach($array_criteres as $champ=>$critere){ if($i==1){ $finrequete .=" ".$champ." = '".$critere."'"; //au premier critere on ne doit pas avoir de AND ou OR }else{ $finrequete .=" ".$operateur." ".$champ." = '".$critere."'"; //pour les criteres suivants : AND ou OR } $i++; } //on va rajouter une trace d'erreur en cas de pb de connexion BDD $cnx = mysql_connect("123.123.123", "izimoahahah", "12345") or die("pb connexion serveur: ".mysql_error()); $db=mysql_select_db('izimo109416') or die("pb selection base: ".mysql_error()); if (!empty($finrequete)){ $sql="SELECT * FROM brokers WHERE $finrequete"; }else{ $sql="SELECT * FROM brokers"; } $res=mysql_query($sql)or die("pb avec la requette: ".mysql_error()); echo '<table>'; while ($ligne = mysql_fetch_object ($res)){ print "<tr>"; print "<td>$ligne->id</td>"; print "<td>$ligne->nom</td>"; print "<td>$ligne->prix</td>"; print "</tr>"; } echo '</table>'; }else{ echo "Veuillez saisir au moins un des critères !"; } } ?>
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
27 déc. 2009 à 18:05
27 déc. 2009 à 18:05
Personne?
JessayeDeTrouver
Messages postés
270
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
4 mai 2012
47
27 déc. 2009 à 18:24
27 déc. 2009 à 18:24
on fait des requetes APRES la connection avec la base de donnees, pas AVANT
=> donc mes de l ordre dans ton code
=> donc mes de l ordre dans ton code
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
27 déc. 2009 à 19:03
27 déc. 2009 à 19:03
Merci JessayeDeTrouver,
Le problème c'est que je n'y comprends rien.. j'ai trouvé ce code sur internet et je ne sais pas comment modifier le code..
Pourrais-tu m'aider?
Merci
Le problème c'est que je n'y comprends rien.. j'ai trouvé ce code sur internet et je ne sais pas comment modifier le code..
Pourrais-tu m'aider?
Merci
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
27 déc. 2009 à 22:10
27 déc. 2009 à 22:10
Aidez moi SVP
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 973
27 déc. 2009 à 22:25
27 déc. 2009 à 22:25
il faut faire tes SELECT apres ton mysql_connect
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
27 déc. 2009 à 22:34
27 déc. 2009 à 22:34
Si je mets le SELECT après mysql_connect j'obtiens le message d'erreur suivant:
Parse error: parse error in D:\www\izimo.eu\htdocs\Brokers\resultat.php on line 4
Le code que j'ai donc maintenant est:
<?php
$db = mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
$sql="SELECT * FROM brokers WHERE $finrequete";
else
$sql="SELECT * FROM brokers";
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
print "<tr>";
print "<td>$ligne->ID</td>";
print "<td>$ligne->NOM</td>";
print "<td>$ligne->PRIX</td>";
print "</td>";
print "</tr>";
}
?>
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
if ($ID != "")
$finrequete .= " ID LIKE '%$ID%'";
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
$finrequete .= " $operateur PRIX LIKE '%$prix%'";
else
$finrequete .= " PRIX LIKE '%$PRIX%'";
if ($finrequete != "")
?>
Que dois-je faire, je comprends rien...
Parse error: parse error in D:\www\izimo.eu\htdocs\Brokers\resultat.php on line 4
Le code que j'ai donc maintenant est:
<?php
$db = mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
$sql="SELECT * FROM brokers WHERE $finrequete";
else
$sql="SELECT * FROM brokers";
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
print "<tr>";
print "<td>$ligne->ID</td>";
print "<td>$ligne->NOM</td>";
print "<td>$ligne->PRIX</td>";
print "</td>";
print "</tr>";
}
?>
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
if ($ID != "")
$finrequete .= " ID LIKE '%$ID%'";
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
$finrequete .= " $operateur PRIX LIKE '%$prix%'";
else
$finrequete .= " PRIX LIKE '%$PRIX%'";
if ($finrequete != "")
?>
Que dois-je faire, je comprends rien...
JessayeDeTrouver
Messages postés
270
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
4 mai 2012
47
28 déc. 2009 à 11:49
28 déc. 2009 à 11:49
<?php
$db = mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
$sql="SELECT * FROM brokers WHERE $finrequete";
else{
$sql="SELECT * FROM brokers";
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
echo"<tr>";
echo"<td>$ligne->ID</td>";
echo "<td>$ligne->NOM</td>";
echo "<td>$ligne->PRIX</td>";
echo "</td>";
echo "</tr>";
}
}
?>
<?php
if ( $allcriteres == "oui")
{$operateur="AND";}
else
{
$operateur="OR";}
if ($ID != "")
{$finrequete .= " ID LIKE '%$ID%'";}
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
{$finrequete .= " $operateur PRIX LIKE '%$prix%'";}
else
{$finrequete .= " PRIX LIKE '%$PRIX%'";}
if ($finrequete != "")
?>
$db = mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
$sql="SELECT * FROM brokers WHERE $finrequete";
else{
$sql="SELECT * FROM brokers";
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
echo"<tr>";
echo"<td>$ligne->ID</td>";
echo "<td>$ligne->NOM</td>";
echo "<td>$ligne->PRIX</td>";
echo "</td>";
echo "</tr>";
}
}
?>
<?php
if ( $allcriteres == "oui")
{$operateur="AND";}
else
{
$operateur="OR";}
if ($ID != "")
{$finrequete .= " ID LIKE '%$ID%'";}
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
{$finrequete .= " $operateur PRIX LIKE '%$prix%'";}
else
{$finrequete .= " PRIX LIKE '%$PRIX%'";}
if ($finrequete != "")
?>
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 973
28 déc. 2009 à 11:52
28 déc. 2009 à 11:52
tout ton code est la ou il y en a avant? si y' en a pas avant, dis le moi, je vais essayer de te corriger, y' a plein de choses qui ne vont pas.
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
28 déc. 2009 à 20:53
28 déc. 2009 à 20:53
Non tout le code est indiquer ci-dessus.. pourrais tu m'aider?
Merci par avance
Merci par avance
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 973
28 déc. 2009 à 21:05
28 déc. 2009 à 21:05
$db = mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
if (!empty($finrequete))
{
$sql="SELECT * FROM brokers WHERE $finrequete";
}
else
{
$sql="SELECT * FROM brokers";
}
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
ca serait plutot ca mais je l' ai fait vite fait sans verifier
if (!empty($finrequete))
{
$sql="SELECT * FROM brokers WHERE $finrequete";
}
else
{
$sql="SELECT * FROM brokers";
}
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
ca serait plutot ca mais je l' ai fait vite fait sans verifier
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
29 déc. 2009 à 23:22
29 déc. 2009 à 23:22
salut graffx et merci pour ton aide.
Malheureusement je viens d'essayer ton code et ca marche pas..
Donc pour le moment le code de ma page "resultat.php" est:
<?php
$db = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX");
if (!empty($finrequete))
{
$sql="SELECT * FROM brokers WHERE $finrequete";
}
else
{
$sql="SELECT * FROM brokers";
}
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
print "<tr>";
print "<td>$ligne->ID</td>";
print "<td>$ligne->NOM</td>";
print "<td>$ligne->PRIX</td>";
print "</td>";
print "</tr>";
}
?>
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
if ($ID != "")
$finrequete .= " ID LIKE '%$ID%'";
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
$finrequete .= " $operateur PRIX LIKE '%$prix%'";
else
$finrequete .= " PRIX LIKE '%$PRIX%'";
if ($finrequete != "")
?>
Le message d'erreur est: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\www\izimo.eu\htdocs\Brokers\resultat.php on line 13
La ligne 13 correspond a: while ($ligne = mysql_fetch_object ($res))
Une idee?
Malheureusement je viens d'essayer ton code et ca marche pas..
Donc pour le moment le code de ma page "resultat.php" est:
<?php
$db = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX");
if (!empty($finrequete))
{
$sql="SELECT * FROM brokers WHERE $finrequete";
}
else
{
$sql="SELECT * FROM brokers";
}
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
print "<tr>";
print "<td>$ligne->ID</td>";
print "<td>$ligne->NOM</td>";
print "<td>$ligne->PRIX</td>";
print "</td>";
print "</tr>";
}
?>
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
if ($ID != "")
$finrequete .= " ID LIKE '%$ID%'";
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
$finrequete .= " $operateur PRIX LIKE '%$prix%'";
else
$finrequete .= " PRIX LIKE '%$PRIX%'";
if ($finrequete != "")
?>
Le message d'erreur est: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\www\izimo.eu\htdocs\Brokers\resultat.php on line 13
La ligne 13 correspond a: while ($ligne = mysql_fetch_object ($res))
Une idee?
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
30 déc. 2009 à 12:07
30 déc. 2009 à 12:07
Aidez moi SVPPP
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
30 déc. 2009 à 18:51
30 déc. 2009 à 18:51
Personne?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 déc. 2009 à 19:13
30 déc. 2009 à 19:13
il manque une chose très importante à ton code: la sélection de la base !
$cnx= mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
$db=mysql_select_db('le_nom_de_ta_base');
et ensuite tu as mis :if (!empty($finrequete))
hors cette variable $finrequette tu la charges plus bas dans ton code c'est pas bon !!
le php s'exécute dans l'ordre des lignes
donc il faut que la deuxième partie :
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
.... soit avant
<?php
$db = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX");
....
$cnx= mysql_connect("XXXXXXX", "XXXXXX", "XXXXXXX");
$db=mysql_select_db('le_nom_de_ta_base');
et ensuite tu as mis :if (!empty($finrequete))
hors cette variable $finrequette tu la charges plus bas dans ton code c'est pas bon !!
le php s'exécute dans l'ordre des lignes
donc il faut que la deuxième partie :
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
.... soit avant
<?php
$db = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX");
....
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 973
30 déc. 2009 à 19:20
30 déc. 2009 à 19:20
j' aurai du le voir :/
Mais si ca ne marche pas, dis nous quelle est l' erreur.
Mais si ca ne marche pas, dis nous quelle est l' erreur.
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
30 déc. 2009 à 19:25
30 déc. 2009 à 19:25
Merci Alain,
Juste pour etre sur (car je debute) pourrais-tu valider mon code ci-dessous:
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
if ($ID != "")
$finrequete .= " ID LIKE '%$ID%'";
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
$finrequete .= " $operateur PRIX LIKE '%$prix%'";
else
$finrequete .= " PRIX LIKE '%$PRIX%'";
if ($finrequete != "")
?>
<?php
$cnx = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXX");
$db=mysql_select_db('nom de ma base mysql');
if (!empty($finrequete))
{
$sql="SELECT * FROM brokers WHERE $finrequete";
}
else
{
$sql="SELECT * FROM brokers";
}
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
print "<tr>";
print "<td>$ligne->ID</td>";
print "<td>$ligne->NOM</td>";
print "<td>$ligne->PRIX</td>";
print "</td>";
print "</tr>";
}
?>
Merci pour ton aide.
Juste pour etre sur (car je debute) pourrais-tu valider mon code ci-dessous:
<?php
if ( $allcriteres == "oui")
$operateur="AND";
else
$operateur="OR";
if ($ID != "")
$finrequete .= " ID LIKE '%$ID%'";
if ($acteur != "")
$finrequete .= " $operateur NOM LIKE '%$nom%'";
if ($prix != "")
if ($finrequete != "")
$finrequete .= " $operateur PRIX LIKE '%$prix%'";
else
$finrequete .= " PRIX LIKE '%$PRIX%'";
if ($finrequete != "")
?>
<?php
$cnx = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXX");
$db=mysql_select_db('nom de ma base mysql');
if (!empty($finrequete))
{
$sql="SELECT * FROM brokers WHERE $finrequete";
}
else
{
$sql="SELECT * FROM brokers";
}
$res=mysql_query($sql, $db);
while ($ligne = mysql_fetch_object ($res))
{
print "<tr>";
print "<td>$ligne->ID</td>";
print "<td>$ligne->NOM</td>";
print "<td>$ligne->PRIX</td>";
print "</td>";
print "</tr>";
}
?>
Merci pour ton aide.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 déc. 2009 à 20:38
30 déc. 2009 à 20:38
Fais l'essai:
<?php //j'espère que tu as du code avant ça pour récupérer les $allcriteres $ID etc.. if ( $allcriteres == "oui"){ $operateur="AND"; }else{ $operateur="OR"; } if ($ID != ""){ $finrequete .= " ID LIKE '%$ID%'"; } if ($acteur != ""){ $finrequete .= " $operateur NOM LIKE '%$nom%'"; } if ($prix != ""){ if ($finrequete != ""){ $finrequete .= " $operateur PRIX LIKE '%$prix%'"; }else{ $finrequete .= " PRIX LIKE '%$PRIX%'"; } // if ($finrequete != "") //celui la a quoi il sert ? $cnx = mysql_connect("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXX"); $db=mysql_select_db('nom de ma base mysql'); if (!empty($finrequete)) { $sql="SELECT * FROM brokers WHERE $finrequete"; } else { $sql="SELECT * FROM brokers"; } $res=mysql_query($sql); //attention la j'ai enlevé $db while ($ligne = mysql_fetch_object ($res)) { print "<tr>"; print "<td>$ligne->ID</td>"; print "<td>$ligne->NOM</td>"; print "<td>$ligne->PRIX</td>"; print "</td>"; print "</tr>"; } ?>
louis1984
Messages postés
341
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
10 mars 2016
6
31 déc. 2009 à 11:53
31 déc. 2009 à 11:53
Merci Alain,
Euh... juste pour info je n'ai pas de code avant ça pour récupérer les $allcriteres $ID etc..
Le code que j'ai indiquer, c'est TOUT le code de ma page resultat.php il n'y a rien avant, rien apres...
Pourrais-tu m'aider car je comprends rien du tout..
Merci
Euh... juste pour info je n'ai pas de code avant ça pour récupérer les $allcriteres $ID etc..
Le code que j'ai indiquer, c'est TOUT le code de ma page resultat.php il n'y a rien avant, rien apres...
Pourrais-tu m'aider car je comprends rien du tout..
Merci