A voir également:
- Problème de requete
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Minecraft
- Erreur de requete facebook rencontre - Forum Facebook
- Requête sql pix - Forum Python
- Facebook rencontre erreur de requete - Forum Facebook
6 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
21 juil. 2005 à 23:05
21 juil. 2005 à 23:05
Salut,
En même temps ta requête, c'est toujours la même. Elle n'est pas fonction des mots clés envoyés.
Et je me demande aussi si une clause LIKE ne devrait pas plutôt être suivie d'une chaîne entourée de simple quotes ' au lieu de doubles quotes "
A mon avis, c'est toujours de simple quotes pour une chaine de caractère dans une requête mysql, mais j'en suis pas sûr.
PS: Je viens de regarder, apparemment, ça marche aussi avec des doubles-quotes.)
En même temps ta requête, c'est toujours la même. Elle n'est pas fonction des mots clés envoyés.
Et je me demande aussi si une clause LIKE ne devrait pas plutôt être suivie d'une chaîne entourée de simple quotes ' au lieu de doubles quotes "
A mon avis, c'est toujours de simple quotes pour une chaine de caractère dans une requête mysql, mais j'en suis pas sûr.
PS: Je viens de regarder, apparemment, ça marche aussi avec des doubles-quotes.)
Padoo
Messages postés
109
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
6 février 2009
18
22 juil. 2005 à 09:16
22 juil. 2005 à 09:16
atteniotn dans ton code :
<INPUT TYPE="checkbox" NAME="categorie" VALUE="oui">blabla
<INPUT TYPE="checkbox" NAME="categorie" VALUE="oui">bloblo
<INPUT TYPE="checkbox" NAME="categorie" VALUE="oui">blibli
Ici quelque soit la case cochée, la variable categorie prendra la valeur "oui". Ca ne te permet pas de savoir quelle case a ete cochee. Et si tu coches plusieurs cases, seule la derniere sera en memoire. Si tu veut l'ensemble de tes valeurs, iil faut les stoquer dans une variable de type tableau, categorie[].
//on crée la requête SQL
$sql='SELECT * FROM article WHERE mots_cles LIKE "%osier%" ORDER BY code_article';
La tu recupere dans ta BD l'ensemble de la table article
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
La tu execute ta erquete
//résultat de la requête
$recherche = $_POST['recherche'];
$mots_cles = $_POST['mots_cles'];
$categorie = $_POST['categorie'];
Et la tu recupere les variables de ton formulaire, pas les resultats de ta requete precedente!
Si tu veux recuperer le resultat de ta requete, il faut que tu fasse:
while($ligne=mysql_fetch_array($result))
{
$variable1=$ligne['variable1'];
... Pour chaque champ de ta table.
A chaque passage de boucle, tu parcourt une ligne de la BD qui correspond a ta requete. si tu sort de la boucle, tu ne conserve que les dernieres variables enregistrees, ou il faut que tu les recuprer ds un tableau, c'est tjs pareil. Tu peux aussi faire le traitement direct dans la boucle, comme un affichage par exemple.
}
<INPUT TYPE="checkbox" NAME="categorie" VALUE="oui">blabla
<INPUT TYPE="checkbox" NAME="categorie" VALUE="oui">bloblo
<INPUT TYPE="checkbox" NAME="categorie" VALUE="oui">blibli
Ici quelque soit la case cochée, la variable categorie prendra la valeur "oui". Ca ne te permet pas de savoir quelle case a ete cochee. Et si tu coches plusieurs cases, seule la derniere sera en memoire. Si tu veut l'ensemble de tes valeurs, iil faut les stoquer dans une variable de type tableau, categorie[].
//on crée la requête SQL
$sql='SELECT * FROM article WHERE mots_cles LIKE "%osier%" ORDER BY code_article';
La tu recupere dans ta BD l'ensemble de la table article
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
La tu execute ta erquete
//résultat de la requête
$recherche = $_POST['recherche'];
$mots_cles = $_POST['mots_cles'];
$categorie = $_POST['categorie'];
Et la tu recupere les variables de ton formulaire, pas les resultats de ta requete precedente!
Si tu veux recuperer le resultat de ta requete, il faut que tu fasse:
while($ligne=mysql_fetch_array($result))
{
$variable1=$ligne['variable1'];
... Pour chaque champ de ta table.
A chaque passage de boucle, tu parcourt une ligne de la BD qui correspond a ta requete. si tu sort de la boucle, tu ne conserve que les dernieres variables enregistrees, ou il faut que tu les recuprer ds un tableau, c'est tjs pareil. Tu peux aussi faire le traitement direct dans la boucle, comme un affichage par exemple.
}
Merci pour vos réponses, vous m'avez éclairé !!
Par contre j'ai changé mon formulaire et j'ai remplacé les checkboxs par un menu déroulant car j'ai trop de familles articles.
Voici mes modifs :
<FORM ACTION="ma_recherche.php" METHOD="POST"><img src="loupe.gif" width=28 height=28>
<INPUT TYPE="text" NAME="mots_cles" VALUE="mot cle" onFocus="this.value=''">
<SELECT NAME="famille">
<OPTION>- - - - - - - - - - - CHOIX - - - - - - - - - -
<OPTION VALUE="blabla">blabla
<OPTION VALUE="blibli">blibli
<OPTION VALUE="bloblo">bloblo
<OPTION VALUE="blublu">blublu
<OPTION VALUE="bleble">bleble
</OPTION>
</SELECT>
<input type="submit" name="recherche" value="OK">
<input type="reset" value="Recommencer">
</form>
Voilà donc avec ça j'arrive à récupérer tout ce qu'il y a dans ma table article.
Maintenant je voudrai récupérer le résultat de chaque famille, comment dois je m'y prendre.
Est ce que je dois écrire dans mon code une requête pour chaque famille ou bien y a t-il une autre solution.
Merci beaucoup
Par contre j'ai changé mon formulaire et j'ai remplacé les checkboxs par un menu déroulant car j'ai trop de familles articles.
Voici mes modifs :
<FORM ACTION="ma_recherche.php" METHOD="POST"><img src="loupe.gif" width=28 height=28>
<INPUT TYPE="text" NAME="mots_cles" VALUE="mot cle" onFocus="this.value=''">
<SELECT NAME="famille">
<OPTION>- - - - - - - - - - - CHOIX - - - - - - - - - -
<OPTION VALUE="blabla">blabla
<OPTION VALUE="blibli">blibli
<OPTION VALUE="bloblo">bloblo
<OPTION VALUE="blublu">blublu
<OPTION VALUE="bleble">bleble
</OPTION>
</SELECT>
<input type="submit" name="recherche" value="OK">
<input type="reset" value="Recommencer">
</form>
<? // Connexion à la base mysql_connect($host, $login, $pass) or die ("impossible de se connecter au serveur"); // Sélection de la base mysql_select_db($bdd) or die ("impossible de se connecter a la base de donnees"); //on crée la requête SQL $sql='SELECT * FROM article WHERE mots_cles LIKE "%osier%" ORDER BY code_article'; // on envoie la requête $result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); echo '<font color=#ffffff><center><hr width="50%" color=orange> ...Voici le résultat de votre recherche...<br><hr width="50%" color=orange><br> <a href="#" onclick="window.print()"><img src="imprimante.gif" border="o" alt="imprimer le résultat"></a><br><br>'; // début du tableau { echo '<table border=2 bordercolor=orange>'; } // première ligne on affiche les titres des colonnes echo '<tr>'; echo '<th bgcolor="#ffffff"><b><u>code article</center></u></b></td>'; echo '<th bgcolor="#ffffff"><b><u>nom article</u></b></td>'; echo '<th bgcolor="#ffffff"><b><u>descriptif</u></b></td>'; echo '<th bgcolor="#ffffff"><b><u>famille</u></b></td>'; echo '<th bgcolor="#ffffff"><b><u>images</u></b></td>'; echo '</tr>'."\n"; // on fait une boucle qui va faire un tour pour chaque enregistrement while($data=mysql_fetch_array($result)) { // lecture et affichage des résultats pour chaque lignes echo '<tr>'; echo '<td bgcolor="#ffffff">'.$data['code_article']. '</td>'; echo '<td bgcolor="#ffffff">'.$data['nom_article']. '</td>'; echo '<td bgcolor="#ffffff">'.$data['mots_cles']. '</td>'; echo '<td bgcolor="#ffffff">'.$data['famille']. '</td>'; echo '<td bgcolor="#ffffff">'.$data['images']. '</td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; //fin du tableau //fermeture de la connexion Mysql mysql_close(); ?>
Voilà donc avec ça j'arrive à récupérer tout ce qu'il y a dans ma table article.
Maintenant je voudrai récupérer le résultat de chaque famille, comment dois je m'y prendre.
Est ce que je dois écrire dans mon code une requête pour chaque famille ou bien y a t-il une autre solution.
Merci beaucoup
Padoo
Messages postés
109
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
6 février 2009
18
22 juil. 2005 à 18:13
22 juil. 2005 à 18:13
Bjr,
non, tu peux faire une requete avec une clause where du style
"SELECT * FROM table WHERE $famille='$famille_desiree'";
si tu demandes à l'utilisateur de selectionner la famille et que tu stockes la variable dans une variable $famille_desiree
Ravie d'avoir pu t'aider!
non, tu peux faire une requete avec une clause where du style
"SELECT * FROM table WHERE $famille='$famille_desiree'";
si tu demandes à l'utilisateur de selectionner la famille et que tu stockes la variable dans une variable $famille_desiree
Ravie d'avoir pu t'aider!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour le moment c'est + clair pour moi et l'aide que l'on m'apporte et très utile.
Je vous tiens au courant de l'évolution de mon code et si la solution est trouvée je manquerai pas de vous le dire.
merci encore
bonne soirée et bon week nd à ceux qui seront pas connectés sur le forum.
@ +++
Je vous tiens au courant de l'évolution de mon code et si la solution est trouvée je manquerai pas de vous le dire.
merci encore
bonne soirée et bon week nd à ceux qui seront pas connectés sur le forum.
@ +++
bonjour,
j'ai résolu mon problème et je voulais vous en informer.
il fallait rajouter ceci dans mon code :
et ceci juste après la création de la requête
voilà merci pour ceux qui ont essayé de m'aider.
bon courage
peut etre à bientôt
j'ai résolu mon problème et je voulais vous en informer.
il fallait rajouter ceci dans mon code :
$mots_cles = $_POST['mots_cles']; $mots_cles = trim($mots_cles); $regexp = " *\+ *| +"; $mots_cles = spliti($regexp, $mots_cles);
et ceci juste après la création de la requête
foreach($mots_cles as $mots_cles) { $sql .= "mots_cles LIKE '%".$mots_cles."%' OR "; } $sql = substr($sql, 0, strlen($sql)-3); $sql .= "ORDER BY code_article";
voilà merci pour ceux qui ont essayé de m'aider.
bon courage
peut etre à bientôt