Problème variable moteur de recvherche
Fermé
Jean_Bono
-
13 mai 2012 à 18:14
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 20 mai 2012 à 21:26
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 20 mai 2012 à 21:26
A voir également:
- Problème variable moteur de recvherche
- Google moteur de recherche page d'accueil - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Safari moteur de recherche - Télécharger - Navigateurs
- Copernic moteur de recherche - Télécharger - Navigateurs
22 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
18 mai 2012 à 15:17
18 mai 2012 à 15:17
j'ai fais une base bidon et cherché pourquoi, c'est tout con !
tu ne peux pas mettre or die (mysql_error)) pour mysql_num_rows
il semble que dans le cas ou aucun résultat le die s'execute donc sortie du script !!
il faut simplement:
tu ne peux pas mettre or die (mysql_error)) pour mysql_num_rows
il semble que dans le cas ou aucun résultat le die s'execute donc sortie du script !!
il faut simplement:
$nbre = mysql_num_rows($query);
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 975
13 mai 2012 à 20:58
13 mai 2012 à 20:58
J' avoue que je ne sais pas, attendons la reponse d' un meilleur!
Bonsoir,
Ton script devrait ressembler à un truc comme ceci :
A améliorer bien évidemment... ;-)
Ton script devrait ressembler à un truc comme ceci :
$req = "SELECT DISTINCT id,titre,cp FROM ann"; if(isset($_POST['cp']) && !empty($_POST['cp'])) { $rcp = $_POST['cp']; $req .= " WHERE cp='".$rcp."'"; if(isset($_POST['mots']) && !empty($_POST['mots'])) { $mots = $_POST['mots']; $req .= " AND mots='".$mots."'"; } } elseif(isset($_POST['mots']) && !empty($_POST['mots'])) { $mots = $_POST['mots']; $req .= " WHERE mots='".$mots."'"; } $req .= " ORDER BY id DESC"; $query = mysql_query($req)or die(mysql_error());
A améliorer bien évidemment... ;-)
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 13/05/2012 à 22:30
Modifié par Alain_42 le 13/05/2012 à 22:30
une variante:
<?php $array_recherche=array(); $req="SELECT DISTINCT id,titre,cp FROM ann "; if(isset($_POST['cp'])&& !empty($_POST['cp'])) $array_recherche[]= " cp=".mysql_real_escape_string($_POST['cp']); if(isset($_POST['mots']) && !empty($_POST['mots']) $array_recherche[]= " mots=".mysql_real_escape_string($_POST['mots']); if(sizeof($array_recherche) >0){ //au moins un des criteres rempli $conditions= "WHERE "; $conditions.=implode($array_recherche," AND "); $req.=$conditions." ORDER BY id DESC "; }else{ echo 'vous devez rentrer au moins un critere !'; } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci a vous deux pour votre réponse, je vais pour l' instant me baser sur celui de RedloG ca ril parait moins compliqué car pas de array.
Ca a l' air de fonctionner a deux détails prés : page blanche si pas de résultat, et il ne prend en compte que les phrases complètes, par exemple si un titre se nomme "lot de vélos", si je tape juste "lot", il ne trouve rien.
Voici ce que j' ai fait, a savoir que je n' ai plus d'erreur, juste le probleme de groupe de mots et page blanche si pas de résultat!
Merci en tout cas de vous impliquer a ce point!!!
Ca a l' air de fonctionner a deux détails prés : page blanche si pas de résultat, et il ne prend en compte que les phrases complètes, par exemple si un titre se nomme "lot de vélos", si je tape juste "lot", il ne trouve rien.
Voici ce que j' ai fait, a savoir que je n' ai plus d'erreur, juste le probleme de groupe de mots et page blanche si pas de résultat!
<?php $req = "SELECT DISTINCT id,titre,cp FROM bernay_ann"; if(isset($_POST['cp']) && !empty($_POST['cp'])) { $rcp = $_POST['cp']; $req .= " WHERE cp='".$rcp."'"; if(isset($_POST['search']) && !empty($_POST['search'])) { $mots = $_POST['search']; $req .= " AND titre='".$mots."'"; } } elseif(isset($_POST['search']) && !empty($_POST['search'])) { $mots = $_POST['search']; $req .= " WHERE titre='".$mots."'"; } $req .= " ORDER BY id DESC"; $query = mysql_query($req)or die(mysql_error()); $nbre = mysql_num_rows($query)or die(mysql_error()); if($nbre != 0) { while ($ann= mysql_fetch_array($query)) { echo $ann['titre']; echo $ann['cp']; } } else { echo 'Pas de résultat!'; } ?>
Merci en tout cas de vous impliquer a ce point!!!
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
14 mai 2012 à 21:17
14 mai 2012 à 21:17
l'avantage de la solution avec un array c'est qu'elle fonctionne avec plusieurs critères, sans être obligé de passer par une ribanbelle de if
pour ton pb de mots à la place de:
$mots = $_POST['search'];
$req .= " WHERE titre='".$mots."'";
il faut mettre:
pour ton pb de mots à la place de:
$mots = $_POST['search'];
$req .= " WHERE titre='".$mots."'";
il faut mettre:
$mots = $_POST['search']; $req .= " WHERE titre LIKE '%".$mots."%' ";
Alors j' ai modifié ce que tu m' a mis, ca fonctionne avec une partie des mots, seulement si je valide le formulaire sans autre critere. Si je met le cod epostal seul ca marche aussi. Une partie des mots + CP, marche plus alors que titre complet d' une annonce + CP ca marche.
Ca devient dur a comprendre. :s
Ca devient dur a comprendre. :s
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 975
15 mai 2012 à 18:29
15 mai 2012 à 18:29
Pour ta methode alain il me dit:
Parse error: syntax error, unexpected T_VARIABLE in
la ligne 17 est la deuxieme de ces deux ci:
if(isset($_POST['cp'])&& !empty($_POST['cp'])) $array_recherche[]= " cp=".mysql_real_escape_string($_POST['cp']);
if(isset($_POST['search']) && !empty($_POST['search']) $array_recherche[]= " titre=".mysql_real_escape_string($_POST['search']);
Parse error: syntax error, unexpected T_VARIABLE in
la ligne 17 est la deuxieme de ces deux ci:
if(isset($_POST['cp'])&& !empty($_POST['cp'])) $array_recherche[]= " cp=".mysql_real_escape_string($_POST['cp']);
if(isset($_POST['search']) && !empty($_POST['search']) $array_recherche[]= " titre=".mysql_real_escape_string($_POST['search']);
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
15 mai 2012 à 21:30
15 mai 2012 à 21:30
il manque une )
if(isset($_POST['search']) && !empty($_POST['search']))$array_recherche[]= " titre=".mysql_real_escape_string($_POST['search']);
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 975
15 mai 2012 à 22:10
15 mai 2012 à 22:10
J'essaie aussi en meme temps, les array c'est pas forcement mon truc non plus, en fait c'est pas si compliqué, inscrit toi et copie moi ta page en mp!
Merci!
Alors voila, j' avais fait une erreur (pfiou!)
Probleme encore, plusieurs mots ou mots coupés separés d' un espace et ca ne fonctionne plus.
Pour "lot de serviettes"
Si je met "lo serviett"
Il ne trouve plus car plusieurs mots!
Alors voila, j' avais fait une erreur (pfiou!)
$req = "SELECT DISTINCT * FROM bernay_ann"; if(isset($_POST['cp']) && !empty($_POST['cp'])) { $rcp = $_POST['cp']; $req .= " WHERE cp='".$rcp."'"; if(isset($_POST['search']) && !empty($_POST['search'])) { $mots = $_POST['search']; $req .= " AND titre LIKE '%".$mots."%'"; } } elseif(isset($_POST['search']) && !empty($_POST['search'])) { $mots = $_POST['search']; $req .= " WHERE titre LIKE '%".$mots."%' "; } $req .= " ORDER BY id DESC"; $query = mysql_query($req)or die(mysql_error()); $nbre = mysql_num_rows($query)or die(mysql_error()); if($nbre != 0) { while ($ann= mysql_fetch_array($query)) {
Probleme encore, plusieurs mots ou mots coupés separés d' un espace et ca ne fonctionne plus.
Pour "lot de serviettes"
Si je met "lo serviett"
Il ne trouve plus car plusieurs mots!
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
15 mai 2012 à 23:13
15 mai 2012 à 23:13
pour plusieurs mots essayes comme ça:
$req = "SELECT DISTINCT * FROM bernay_ann"; if(isset($_POST['cp']) && !empty($_POST['cp'])) { $rcp = $_POST['cp']; $req .= " WHERE cp='".$rcp."'"; if(isset($_POST['search']) && !empty($_POST['search'])) { $array_mots = explode(' ',$_POST['search']); //on sépare les mots $req .= " AND titre LIKE '%".implode($array_mots,"%' OR titre LIKE '% ")."%'"; } } elseif(isset($_POST['search']) && !empty($_POST['search'])) { $array_mots = explode(' ',$_POST['search']); //on sépare les mots $req .= " WHERE titre LIKE '%".implode($array_mots,"%' OR titre LIKE '% ")."%'"; } $req .= " ORDER BY id DESC"; $query = mysql_query($req)or die(mysql_error()); $nbre = mysql_num_rows($query)or die(mysql_error()); if($nbre != 0) { while ($ann= mysql_fetch_array($query)) {
Wow bravo et merci!! Simple et trés fonctionnel!
Par contre j' ai une page blanche quand il n' y a aucune résultat au lieu de mon message "pas de résultat".
Juste fait ca:
if($nbre != 0)
{
while ($ann= mysql_fetch_array($query))
{
}
}
else
{
echo 'Pas de résultat';
}
Comment cela se fait il?
Merci encore!!
Par contre j' ai une page blanche quand il n' y a aucune résultat au lieu de mon message "pas de résultat".
Juste fait ca:
if($nbre != 0)
{
while ($ann= mysql_fetch_array($query))
{
}
}
else
{
echo 'Pas de résultat';
}
Comment cela se fait il?
Merci encore!!
Je n' ai toujours pas trouvé pourquoi j' ai une page blanche si aucun résultat:
<?php session_cache_limiter('private_no_expire, must-revalidate'); ?><table width="950" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="1286" height="209"><table width="950" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="710" align="center" valign="top"><br /> <?php $req = "SELECT DISTINCT * FROM bernay_ann"; if(isset($_POST['cp']) && !empty($_POST['cp'])) { $rcp = $_POST['cp']; $req .= " WHERE cp='".$rcp."'"; if(isset($_POST['search']) && !empty($_POST['search'])) { $array_mots = explode(' ',$_POST['search']); //on sépare les mots $req .= " AND titre LIKE '%".implode($array_mots,"%' OR titre LIKE '% ")."%'"; } } elseif(isset($_POST['search']) && !empty($_POST['search'])) { $array_mots = explode(' ',$_POST['search']); //on sépare les mots $req .= " WHERE titre LIKE '%".implode($array_mots,"%' OR titre LIKE '% ")."%'"; } $req .= " ORDER BY id DESC"; $query = mysql_query($req)or die(mysql_error()); $nbre = mysql_num_rows($query)or die(mysql_error()); if($nbre != 0) { while ($ann= mysql_fetch_array($query)) { ?> <table width="690" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td style="background:url(images/divers/bg_ann.gif);"> <table width="690" height="90" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="96" align="center" valign="middle"><img src="images/shops/<?php echo $ann['photo1']; ?>" alt="" width="80" height="70" /></td> <td width="594" align="left" valign="top"><table width="585" border="0" align="right" cellpadding="0" cellspacing="0"> <tr> <td height="10" colspan="2"></td> </tr> <tr> <td width="402" height="19" style="font-weight:bolder; font-size:14px; color:#300;"><a href="index.php?a=ann&id=<?php echo $ann['id']; ?>=&t=<?php echo $_GET['t']; ?>&cp=<?php echo $_GET['cp']; ?>&v=<?php echo $_GET['v']; ?>&pmn=<?php echo $_GET['pmn']; ?>&pmx=<?php echo $_GET['pmx']; ?>"> <?php echo $ann['titre']; ?> </a></td> <td width="183" align="right" style="font-weight:bolder; font-size:14px; color:#300;"><table width="170" border="0" align="right" cellpadding="0" cellspacing="0"> <tr> <td align="right" valign="top"><a href="index.php?a=cpte&pr=<?php echo $ann['vendeur']; ?>" title="Ceci est la note globale du vendeur donnée par les acheteurs. Vous pouvez consulter son profil pour plus d' informations"> <?php if($ann['pro'] == '1') { ?> <?php $vendeuru = $ann['vendeur']; $prou2 = mysql_query('SELECT pseudo FROM bernay_users WHERE pseudo = "'.$vendeuru.'"'); $prou= mysql_fetch_array($prou2) ?> <?php echo '<a href="index.php?a=cpte&id='.$prou['pseudo'].'"><img src="images/divers/pro.png" title="'.$prou['pseudo'].'" alt="" border="0" align="absbottom" /></a><img src="images/header/blank.gif" alt="" width="20" />'; } ?> <?php $annvendeur = $ann['vendeur']; $retour_app2=mysql_query("SELECT COUNT(*) AS id FROM bernay_app WHERE cible = '".$annvendeur."' "); //Nous récupérons le contenu de la requête dans $retour_total $donnees_app2=mysql_fetch_assoc($retour_app2); //On range retour sous la forme d'un tableau. $app2=$donnees_app2['id']; //On récupère le total pour le placer dans la variable $total. ?> <?php $req_app2="SELECT SUM(note) as total FROM bernay_app WHERE cible = '".$annvendeur."'"; $result1_app2=mysql_query($req_app2); $val1_app2=mysql_fetch_array($result1_app2); $total_app2 = $val1_app2['total']; if($app2 > '0') { $total_app3 = ($total_app2 / $app2); } ?> <?php if ($app2 == '0') { echo '0 '; } else { echo $total_app3; echo ' '; } ?> / 10</a></td> <td width="20"> </td> </tr> </table></td> </tr> <tr> <td height="50" align="left" valign="bottom" style="font-weight:bolder; font-size:14px; color:#300;"><?php echo $ann['cp']; echo ' '; echo $ann['ville']; ?></td> <td align="left" valign="bottom"><table width="100" border="0" align="right" cellpadding="0" cellspacing="0"> <tr> <td align="right" valign="top" style="font-weight:bolder; font-size:14px; color:#300;"><?php echo $ann['prix']; ?> €</td> <td width="20" align="right" valign="top" style="font-weight:bolder; font-size:14px; color:#300;"> </td> </tr> </table></td> </tr> </table></td> </tr> </table> </td> </tr> </table> <?php } } else { echo '<table width="550" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2" align="center" valign="top" style="font-size:14px; font-weight:bolder; text-align:center;">Aucun résultat pour cette recherche, recommencez !<br /><br /> <img src="images/divers/bureaucrate.png" width="500" height="402" /><br /><br /></td> </tr> <tr> <td width="50%" align="center" valign="top"> <script type="text/javascript"><!-- google_ad_client = "ca-pub-2988340172457918"; /* 336x280, date de création 05/12/09 */ google_ad_slot = "9129849470"; google_ad_width = 336; google_ad_height = 280; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></td> <td height="20" align="center" valign="top"> <script type="text/javascript"><!-- google_ad_client = "ca-pub-2988340172457918"; /* grand carre 2 */ google_ad_slot = "0826716095"; google_ad_width = 336; google_ad_height = 280; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </td> </tr> </table> '; } ?> </td> <td width="240" height="547" align="left" valign="top"><span style="z-index:100;"> </span><br /> <table width="230" height="203" border="0" align="right" cellpadding="0" cellspacing="0"> <tr> <td height="230" align="left" valign="top"> <?php include ('crit.php'); ?> </td> </tr> </table></td> </tr> </table></td> </tr> </table>
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 975
17 mai 2012 à 21:19
17 mai 2012 à 21:19
Apparement tu as des includes, tu n'aurais pas un conflit avec une autre variable similaire? Enfin y' a pas de raison mais bon!
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
17 mai 2012 à 21:43
17 mai 2012 à 21:43
et si au lieu de :
if($nbre != 0)
tu mets:
on ne sait jamais ?
if($nbre != 0)
tu mets:
if($nbre > 0)
on ne sait jamais ?
Non Graffx, rien de conflictuel.
Mon pauvre Alain, ca ne change rien du tout, j' ai meme essayé ca il y a pas 2h :/
A quoi cela pourrai etre du en php une page blanche uniquement dans un de deux cas d' une condition???
Mon pauvre Alain, ca ne change rien du tout, j' ai meme essayé ca il y a pas 2h :/
A quoi cela pourrai etre du en php une page blanche uniquement dans un de deux cas d' une condition???
Effectivement, merci mille fois Alain pour tout ce temps passé à m' aider, c'est tout bonnement incroyable de ta part.
Un million de mercis!
Je ne voudrai pas abuser....ho et puis si! J' ose! J' ai une derniere question:
Si je voulais rajouter un champs prix minimum et prix maximum, comment faire cela?
Merci encore!!
Un million de mercis!
Je ne voudrai pas abuser....ho et puis si! J' ose! J' ai une derniere question:
Si je voulais rajouter un champs prix minimum et prix maximum, comment faire cela?
$req = "SELECT DISTINCT * FROM bernay_ann"; if(isset($_POST['cp']) && !empty($_POST['cp'])) { $rcp = $_POST['cp']; $req .= " WHERE cp='".$rcp."'"; if(isset($_POST['search']) && !empty($_POST['search'])) { $mots = $_POST['search']; $req .= " AND titre='".$mots."'"; } } elseif(isset($_POST['search']) && !empty($_POST['search'])) { $mots = $_POST['search']; $req .= " WHERE titre='".$mots."'"; } $req .= " ORDER BY id DESC"; $query = mysql_query($req)or die(mysql_error()); $nbre = mysql_num_rows($query); if($nbre != 0) { while ($ann= mysql_fetch_array($query)) {
Merci encore!!
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
18 mai 2012 à 23:41
18 mai 2012 à 23:41
donc deux champs optionnels supplémentaires.
La les conditions if se compliquent, puisqu'il y a beaucoup de combinaisons, d'où l'intérêt de la solution de l'array comme je t'avait proposé au début.
Pour le moment je n'ai pas trop le temps mais si je peux je te ferai ça
La les conditions if se compliquent, puisqu'il y a beaucoup de combinaisons, d'où l'intérêt de la solution de l'array comme je t'avait proposé au début.
Pour le moment je n'ai pas trop le temps mais si je peux je te ferai ça