Problème formulaire recherche multi-critères
Résolu
louis1984
Messages postés
341
Date d'inscription
Statut
Membre
Dernière intervention
-
louis1984 Messages postés 341 Date d'inscription Statut Membre Dernière intervention -
louis1984 Messages postés 341 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai inséré un petit formulaire de recherche multi-critères (que j'ai trouvé sur internet) et j'ai ce message d'erreur lorsque j'essaie d'afficher les résultats:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\www\izimo.eu\htdocs\Brokers\resultat.php on line 24
Voici un lien vers le moteur de recherche: http://www.izimo.eu
Voici le code de la pages "résultat.php":
<?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 != "")
$sql="SELECT * FROM brokers WHERE $finrequete";
else
$sql="SELECT * FROM brokers";
?>
<?php
$db = mysql_connect("123.123.123", "XXXXX", "XXXXX");
$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";
print "</td>";
print "</tr>";
}
?>
Quelqu'un aurait-il la solution à mon problème?
Merci par avance pour votre aide.
J'ai inséré un petit formulaire de recherche multi-critères (que j'ai trouvé sur internet) et j'ai ce message d'erreur lorsque j'essaie d'afficher les résultats:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\www\izimo.eu\htdocs\Brokers\resultat.php on line 24
Voici un lien vers le moteur de recherche: http://www.izimo.eu
Voici le code de la pages "résultat.php":
<?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 != "")
$sql="SELECT * FROM brokers WHERE $finrequete";
else
$sql="SELECT * FROM brokers";
?>
<?php
$db = mysql_connect("123.123.123", "XXXXX", "XXXXX");
$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";
print "</td>";
print "</tr>";
}
?>
Quelqu'un aurait-il la solution à mon problème?
Merci par avance pour votre aide.
A voir également:
- Problème formulaire recherche multi-critères
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Formulaire de reclamation instagram - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
36 réponses
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++; }
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 !"; } } ?>
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
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
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...
<?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 != "")
?>
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.
$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
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?
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");
....
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.
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>"; } ?>