Double requête: moteur de recherche + menu déroulant

Manu_2012
Invité n'ayant pas de compte PHPfrance

19 mars 2012, 23:38

Bonjour à tous,

Je ne sais pas si c'est à poster dans les bases de données sql ou ici en php, mais les deux sont liés.
Voici mon problème:
J'ai une DB dans laquelle je dois faire une recherche par mot clé (jusque là OK), mais je dois lier cette recherche à une sélection dans un menu déroulant (et là NOK).
Voici mon code:

TOUT SÉLECTIONNER

Code : Tout sélectionner

<form action="key_search.php" method="post" name="SearchKey" id="SearchKey"> <tr> <td><span class="Text_3">Keyword :</span></td> <td align="right"><input name="keyw" type="text" id="keyw" size="24" maxlength="50" /> </td> </tr> <tr> <td><span class="Text_3"> Location :</span></td> <td align="right"><? //LISTE DES PAYS $sql = "SELECT countryid, countrynom FROM country ORDER BY countrynom"; $resultat = mysql_query($sql) or die("Err"); echo " <SELECT NAME='countryChoix' onChange='ModifierListe(-1)'>\n"; if (!isset($contryChoix)) $contryChoix = - 1; echo "<option selected value=ALL>Select a country (optional)"; while ($enr = mysql_fetch_array($resultat)) { echo "<OPTION VALUE='".$enr[0]."'"; if ($countryChoix == $enr[0]) echo " SELECTED"; echo ">".htmlspecialchars($enr[1])."</OPTION>\n"; } echo "</SELECT> \n"; ?></td> </tr> <tr> <td height="25">&nbsp;</td> <td align="right" valign="bottom"><input name="image" type="image" src="img/but_ok.jpg" alt="Submit Form" width="31" height="20" border="0" /></td> </tr> </form>

Bref, mon code n'est surement pas de plus joli. Si qqun a un ptit exemple tout prêt tout frais pour cette double requête cela pourrait m'aider ! :)
Les requêtes simples fonctionnent très bien, c'est vraiment la liaison des deux qui me pose problème.

Mille mercis !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 mars 2012, 18:23

Salut,
Sans la validation du formulaire on ne peux pas t'aider.

À priori je dirais qu'il s'agit d'un simple et logique dans la requête SQL (dans le where).

@+
Il en faut peu pour être heureux ......

Manu_2012
Invité n'ayant pas de compte PHPfrance

21 mars 2012, 00:02

Salut moogli

En effet... sans la suite ça risque d'être difficile ... :oops:

Code : Tout sélectionner

<? $keyw = $_POST['keyw']; $ope=" ".@$_POST['combine']." "; $SQL="SELECT * FROM liensluxe WHERE ".@$_POST['combine'].""; if (@$_POST['keyw']<>"") { $SQL=$SQL.$ope."liensnom LIKE '%".@$_POST['keyw']."%' OR liensdesc LIKE '%".@$_POST['keyw']."%' OR liensinfo LIKE '%".@$_POST['keyw']."%' ORDER BY liensnom LIMIT 10"; } else { //si y a pas de keyword if (@$_POST['countryChoix']=="") { echo "Désolé, aucun résultat"; } if (@$_POST['countryChoix']<>"") { if(@$_POST['countryChoix']<>"ALL") { $SQL=$SQL.$ope."AND lienscountry='".@$_POST['countryChoix']."'"; } else { $SQL=$SQL.$ope."AND lienscountry >= 1"; } } if (@$_POST['tri']<>"") {$SQL=$SQL.$ope." AND liensdatefin>=CURDATE() ORDER BY liensnom LIMIT 10";} } //echo "SQL=".$SQL."<hr>"; $query = $SQL.";"; $result = mysql_query($query); ?>
A priori je dirais que tu as surement raison vu que je suis loin d'être doué la-dedans ... :-)

Merci

Manu_12
Invité n'ayant pas de compte PHPfrance

23 mars 2012, 19:26

Quelqu'un aurait une piste?

Merci ! :)

ViPHP
ViPHP | 2577 Messages

23 mars 2012, 21:56

...
$result = mysql_query($query);
if (mysql_errno()==0) {
   echo $query,'<br>',mysql_errno(),' : ',mysql_error();
   exit;
}
Cela devrait te permettre de savoir si ton select à un problème.

Manu_12
Invité n'ayant pas de compte PHPfrance

24 mars 2012, 13:21

Bonjour Mazarini,

en ajoutant ton code, voici ce qu'il m'affiche:

SELECT * FROM liensluxe WHERE liensnom LIKE '%test%' OR liensdesc LIKE '%test%' OR liensinfo LIKE '%test%' ORDER BY liensnom LIMIT 10;
0 :

Je ne vois pas où est l'erreur ... excepté le "0;" à la fin

Merci pour ton aide