A partir du moment ou tu passe dans le if tu passe pas dans le elseif, là il faut mettre des if à la place.
Bonjour,
Encore moi, sur mon moteur de recherche qui me bloque.
Je vous explique, j'ai 4 critère de recherche qui son le prix, la qualité, le nombre de chambre et le lieux.
Tous fonctionne bien, mais quant un ou plusieurs critère de recherche ne donne pas de résultat mon tableau est vide,
ce que je voudrais faire c'est plusieurs requête de recherche.
Si reponse ne donne pas de résultat,
On passe a reponse1 si celui là ne donne pas de résultat,
On passe a reponse2 et ainsi de suite...
jusqu'a afficher un résultat.
Merci de votre aide,
Voilà mon code :
26 réponses
Merci de ton aide, J' ai fait les changements mais j'ai une erreur
Fatal error: Call to a member function fetch() on a non-object in /site/administration/seach_result_admin.php on line 408
Comment faire pour lui dire de passer de l'un a l'autre.
desolé j'ai fait un erreur, je cherche toujour un réponse
Bonjour, c'est normal que ton script ne fonctionne pas, tel qu'il est écris, si ta variable $reponse n'est pas nulle, tu entre dans le premier while, qui imbrique directement sur un deuxième while, mais dont la variable n'est pas défini.
Si ta variable réponse est nulle, tu n'entre pas dans le premier while, et donc, pas dans les autres.
Tu devrais structurer ton code de cette manière :
Et ainsi de suite
Merci Maxslayer44 de ton aide cela avance.
Mais j'ai pas de résultat qui s'affiche.
voilà mon code modifier
Et j'affiche mon resultat comme cela
Merci de ton aide
Dans ce cas, tu as deux solutions pour l'affichage :
- Tu affiches données dans les while
- Tu stocke le résultat dans un variable que tu exploites tard (mieux, car moins répétitif au niveau du code
Je te donne une amorce pour la deuxième solution qui est à mon sens la moins compliquée à mettre en oeuvre :$flag = false; // On lève le drapeau si la requête a donné un résultat $reponse = $bdd->query("SELECT * FROM db_purchaser, db_customer WHERE $critere AND id_customer=id_custo") or die(mysql_error());
if($reponse == null) { // Pas de résultat, on prépare la requête suivante
$reponse1 = $bdd->query(...);
} else { // Un résultat
$flag = true; // On lève la drapeau, puis on parcours les données
$donnees = $reponse->fetch();
}
if(isset($reponse1) && $reponse1 == null && !$flag) {
$reponse2 = $bdd->query(...);
} elseif($reponse1 != null) {
$flag == true;
$donnees = $reponse1->fetch();
}
// Et ainsi de suite pour le conditions
// Maintenant on passe à l'affichage, tu peux faire ça dans le même fichier
// Ou dans une vue si tu es en structure MVC ou un autre fichier ayant accès à la variable $donnees
// qu'on a défini précédement
?>
<table>
<tr>
<td>Colone 1</td>
</td>Colone 2</td>
</tr>
<?php foreach($donnees as $donnee): ?>
<tr>
<td><?= $donnees['nb_rooms']; ?></td>
<td><?= $donnees['good_quality']; ?></td>
</tr>
<?php endforeach; ?>
</table>
Merci encors de ton aide, cela ne focntionne pas.
Mais je voudrais garder le meme structure pense tu que cela est possible
Voilà mon code
Après avoir récupérer tes données, fais un var_dump($donnees);die(); pour qu'on voit ce que ça donne
Coucou,
Je pense que la condition fonctionne mais rien ne s'affiche.
J'ai tous essayer et rien.
Merci peux tu m'aider
je n'arrive pas a avancer merci de votre aide
Est-ce que tu peux faire un var_dump($donnees);die(); afin que l'on voit ce qui cloche ?
OK , J'ai cela qui s'affiche
bool(false)
Tu dois avoir un problème avec tes requêtes, teste-les dans PHPMyAdmin pour voir si elles retournent le résultat que tu souhaites
Voilà j'ai fait le test mais cela focntionne sous PHPMyAdmin avec un requette de ce type:
SELECT * FROM db_purchaser, db_customer WHERE 15000000 BETWEEN budget_min AND budget_max AND nb_rooms = '$nb_rooms' AND good_quality LIKE 'luxueux' AND id_customer=id_custo.
cela ne fonctionne pas comme ça :
SELECT * FROM db_purchaser, db_customer WHERE 15000000 BETWEEN 'budget_min' AND 'budget_max' AND nb_rooms = '$nb_rooms' AND good_quality LIKE 'luxueux' AND id_customer=id_custo.
mais comme cela c'est OK:
SELECT * FROM db_purchaser, db_customer WHERE $price BETWEEN budget_min AND budget_max AND nb_rooms = '$nb_rooms' AND good_quality LIKE '$good_quality' AND id_customer=id_custo.
j'ai retirer cela ( ' ) budget_min (') AND (') budget_max (')
j'ai fait le changement dans mon code et rien ne s'affiche.
J'ai meme tester cela SELECT * FROM db_purchaser et rien pas de résultat.
Là je comprend pas ce qui ce passe.
Tu as enlevé les while pour faire juste $donnees = $reponse->fetch() ? Si non, tente et fait un var_dump après, ça me paraît bizarre que çe ne marche pas, parce que je ne vois pas d'où ça peut venir là pour le coup
Quant je revient a mon debut de code mais tous simple sans les focntions sa marche
Bonjour,
En ce diamnche je taf sur la solution de cette condition
J'ai fait ce teste
Et quante je fait cela pas de résultat
$i = 0;
//$price = '' . $_GET['price'] . '';
// $neighborhood = '' . $_GET['neighborhood'] . '';
$nb_rooms = '' . $_GET['nb_rooms'] . '';
$good_quality = '' . $_GET['good_quality'] . '';
//if(!empty($budget_min)) { $choix[$i++] = "$price BETWEEN budget_min AND budget_max"; }
// if(!empty($neighborhood)) { $choix[$i++] = "neighborhood LIKE '$neighborhood'"; }
if(!empty($nb_rooms)) { $choix[$i++] = "nb_rooms = '$nb_rooms'"; }
if(!empty($good_quality)) { $choix[$i++] = "good_quality LIKE '$good_quality'"; }
$critere = $choix[0]."";
for($j=1;$j<$i;$j++)
{
$critere .= " AND ".$choix[$j]." ";
}
if($i > 0)
{
// requete de selection
$flag = false; // On lève le drapeau si la requête a donné un résultat
$reponse = $bdd->query("SELECT * FROM db_purchaser, db_customer WHERE $criter AND id_custo=id_customer") or die(mysql_error()); // "Quante j'ecris $criter j'ai pas de résultat."
}
if($reponse == null) { // Pas de résultat, on prépare la requête suivante
$reponse1 = $bdd->query("SELECT * FROM db_purchaser, db_customer WHERE $critere AND id_custo=id_customer") or die(mysql_error());"Quante j'ecris $critere j'ai pas de résultat."
} else { // Un résultat
$flag = true; // On lève la drapeau, puis on parcours les données
while($donnees = $reponse->fetch()) {
var_dump($donnees);die();
}
}
{
?>
<tbody>
<tr>
<td>
Bonsoir,
J'ai reussie a faire foctionner correctement mon code mais je pense que la condition ne foncntionne pas.
il y a les 4 critère il affiche ce q'il trouve si non la reponse l reponse est a nul, mais s'il y on 3 critère affiche si non il passe a l'autre requette 2 critère un si de suite voila mon code
re-bonjour,
J'ai toujour des problèmes avec mes condition je demande de l'aide, si quelqu'un peux m'aider a résoudre mon problème.
Voilà mon code, maintenant j'arrive a afficher le contenue de ma recherche, mais je pense qu'il ne fait pas les IF la suite du code.
Il ne fait que la partie de $critere.
S.O.S de l'aide SVP merci a vous,
Je pense a voire trouver ma requete
Quant elle trouve rien ne me renvoie rien alors il ne fait le if.
Il devrais renvoyé NULL.
il m'ecris cela
bool(false)
quant je met var_dump($donnees);die();
A chaque :
Essaie de remplacer tes
par
j'ai modifier comme tu ma la dit maxslayer44, mais cela ne donne rien
voilà mon code modifié
je ne comprend pas cela ne fonctionne pas quelqu'un peux m'aider, je suis perdue et ne trouve pas de solution, pouvez-vous m'aider S.V.P
Je cherche toujour la solution j'ai changer mon code et j'ai constater que mon 1er $donnees7 le renvoie cela meme si je met a 0 le nb_rooms .
voilà ce qu'il me repond est pas NULL, je pense que mon erreur vient de là.
object(PDOStatement)#19 (1) { ["queryString"]=> string(85) "SELECT * FROM db_purchaser, db_customer WHERE nb_rooms = '0' AND id_custo=id_customer" }
J'ai résolut mon problème tous fonctionne parfaitement, j'ai refait mon code avec des if else est tous est rentrée dans l'ordre merci de vos aides a tous le monde,
bonne journée