Problème de requête

Signaler
Messages postés
5
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
27 juillet 2005
-
Messages postés
5
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
27 juillet 2005
-
Bonjour,

J'ai un formulaire html qui me permet de faire une recherche article par mot-clé et on peut choisir par checkbox la catégorie de l'article.
Pour le résultat des requêtes je n'arrive pas à faire afficher le résultat voulu.
Je voudrai afficher par exemple tous les articles de ma table "article" qui comportent des accessoires.
Je ne sais pas si ça vient de ma requête, de la boucle ou bien autre chose.
J'ai aucun message d'erreur qui apparait et visiblement pas de problèmes de syntaxes mais reprenez moi si je me trompe!
Je débute alors j'ai peur de me mélanger les piceaux dans tout ça ! lol
Je vous montre le code que j'ai écrit et pouvez vous me dire d'ou vient l'erreur svp.
merci d'avance


//voici le formulaire html
<FORM ACTION= "ma_recherche.php" METHOD="POST

Catégorie
blabla
bloblo
blibli
//il y a à peu près une quizaine de checkbox pour le choix de la catégorie


</FORM>


//voici ma table


Champ Type Null Défaut
code_article text Non
nom_article varchar(20) Oui NULL
mots_cles text Non NULL
cle_unique int(10) Non auto_increment
categorie text Non


<?
//Pour la connexion à la base j'ai aucun problème tout est ok


// 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 : je voudrai rechercher tous les articles qui sont dans ma table "article" et qui ont en
//mots clé "accessoires" et le tout classé par code_article.


$sql='SELECT * FROM article WHERE mots_cles LIKE "%accessoires%" ORDER BY code_article';


// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


//ensuite je voudrai afficher les champs code_article, nom article, mots_cles et categorie
//résultat de la requête


$result = mysql_query($sql);
$recherche = $_POST['recherche'];
$mots_cles = $_POST['mots_cles'];
$categorie = $_POST['categorie'];


if (empty($mots_cles))
{
echo '<center>Vous devez entrer un mot clé
</center>';
exit;
}
if (empty($categorie))
{
echo '<center>Vous devez sélectionner au moins une catégorie
</center>';
exit;
}

$result=mysql_query('SELECT * FROM article WHERE mots_cles LIKE "%accessoires%" ORDER BY code_article') or die('Erreur SQL !
'.$sql.'
'.mysql_error());

echo '<center><hr width="50%" color=orange>
...Voici le résultat de votre recherche...
<hr width="50%" color=orange>

';
// début du tableau
{ echo '';
}

// première ligne on affiche les titres des colonnes
echo '----
';
echo ' ';
echo ' |nom article</td>';
echo 'mots clés</td>';
echo '
|catégorie</td>';
echo '<th bgcolor =\"#ffffff\">images</td>';
echo ''.\"\n\";

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data=mysql_fetch_array($req))
{

// lecture et affichage des résultats pour chaque lignes
echo '----
';
echo ''.$data['code_article']. ', ';
echo ''.$data['nom_article']. ', ';
echo ''.$data['mots_cles']. ', ';
echo ''.$data['categorie']. ', ';
echo ''.$data['images']. ', ';
echo ''.\"\n\";
}
echo '
'."\n";

//fin du tableau


//fermeture de la connexion Mysql
mysql_close();
?>

5 réponses

Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
bonjour bonjour..



bon d'abor..qques points positifs: tu dis que tu es debutante, mais ton code est tres bien écrit et dcoumenté :)



alors qques trucs que je comprends pas: tu fais deuix fois ta requete avec $result=mysql_query(..) --> pourquoi ???



ensuite dans ton formulaire, ton checkbox ne va pas fonctionner: tu ne
feras pas la différence entre blabla et blibli et bloblo vu qu'il ont
la meme valeur "oui".



ensuite, pour debuggué du MySql, rien de plus facile: la premiere chose
à faire est d'afficher ta query pour voir si elle est correcte:

après $sql='SELECT * FROM article WHERE mots_cles LIKE "%accessoires%" ORDER BY code_article';

fais un echo $sql et regarde si ta query est ok.



:) courage !
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
Messages postés
5
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
27 juillet 2005

Merci pout ta réponse.
C'est vrai je suis bien débutante mais avant de commencer je me suis bien documentée avec les tutoriaux que j'ai trouvé, d'ailleurs je pensai pas y trouver autant de réponses !

Pour les checkbox j'ai enlevé les value="oui" car ce n'est pas obligatoire c'est plutot pour les radios il me semble.
Ensuite il est vrai que j'effectuai 2 fois la meme requête, un peu d'inatention de ma part !!
Pour le reste, j'ai le meme problème, peut importe la catégorie que je chosis j'ai le meme résultat.
Est ce que dans mon code je dois écrire une requete pour chaque catégorie coché par les checkbox??
Encore merci
@ ++
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
as tu afficher ton $sql ? et testé en direct en ligne de commabde (ou phpmyadmin) ?

-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
Messages postés
5
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
27 juillet 2005

Salut,



voilà ou j'en suis.
J'ai changé mon formulaire car j'ai trop de famille article (environ une quarantaine) et avec les checkbox c'était visuellement moins joli.
De plus j'ai des sous familles qui se rajoutent, au début j'avais commencé par un menu déroulant et par la suite j'ai mis des checkbox.....tout ça pour revenir au menu déroulant !!
Avec cette requête j'affiche tout ce qu'il y a dans ma table article qui contient comme mot clé le mot "osier".
Maintenant j'aimerai afficher le résultat pour tous les mots clés possibles.
Est ce que je dois créer une requête pour chaque famille article??


@ ++


<FORM ACTION= "ma_recherche.php" METHOD="POST">


<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>


</form>


//voici ma table article


Champ Type Null Défaut
code_article text Non
nom_article varchar(20) Oui NULL
mots_cles text Non NULL
cle_unique int(10) Non auto_increment
categorie text Non



//voici le code php



<?


// 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 !
'.$sql.'
'.mysql_error());


echo '<center><hr width="50%" color=orange>
...Voici le résultat de votre recherche...
<hr width="50%" color=orange>

[# ]

';


// début du tableau
{ echo '';
}
// première ligne on affiche les titres des colonnes
echo '----
';
echo ' ';
echo ' |nom article</td>';
echo 'descriptif</td>';
echo '
|famille</td>';
echo '<th bgcolor =\"#ffffff\">images</td>';
echo ''.\"\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 '----
';
echo ''.$data['code_article']. ', ';
echo ''.$data['nom_article']. ', ';
echo ''.$data['mots_cles']. ', ';
echo ''.$data['famille']. ', ';
echo ''.$data['images']. ', ';
echo ''.\"\n\";
}
echo '
'."\n";

//fin du tableau


//fermeture de la connexion Mysql
mysql_close();
?>
Messages postés
5
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
27 juillet 2005

Salut,
mon problème est résolu.
Merci
@ +