[PHP/MySQL]Interrogation d'une base de donnée
Résolu
roukmouth
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
roukmouth Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
roukmouth Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Salut,
Je souhaite créer un petit site où je référence tous mes DVD avec un petit résumé. Pour cela, j'ai créé une page web pour enregistrer mes nouveaux DVD dans une base données et jusque là tout va bien. Mais maintenant, j'essaye de créer un formulaire de recherches pour cette même base de données et là ça se complique.
Ma base de données contient qu'une table : titres
Celle-ci est composée de plusieurs champs tels que :
titres_id
titres_titre
titres_rea (pour le réalisateur)
titres_sup (pour le support)
titres_cat (pour la catégorie)
titres_gen1 (pour le genre)
titres_gen2 (s'il y a 2 genres)
...
Le code de mon formulaire de recherches est :
(est-ce qu'il faut bien mettre post plutôt que get??)
et ma page de résultats est :
Cela fait des heures que je suis dessus et il me répond toujours : Exécution de la requête impossible
Merci de m'aider.
Je souhaite créer un petit site où je référence tous mes DVD avec un petit résumé. Pour cela, j'ai créé une page web pour enregistrer mes nouveaux DVD dans une base données et jusque là tout va bien. Mais maintenant, j'essaye de créer un formulaire de recherches pour cette même base de données et là ça se complique.
Ma base de données contient qu'une table : titres
Celle-ci est composée de plusieurs champs tels que :
titres_id
titres_titre
titres_rea (pour le réalisateur)
titres_sup (pour le support)
titres_cat (pour la catégorie)
titres_gen1 (pour le genre)
titres_gen2 (s'il y a 2 genres)
...
Le code de mon formulaire de recherches est :
<form action="result.php" method="post" name="recherche" id="recherche"> <table> <tr> <td>Titre : </td> <td> <input type="text" name="nom" id="nom"> (ex: Spiderman) </td> </tr> <tr> <td>Réalisateur : </td> <td> <input type="text" name="rea" id="rea"> </td> </tr> <tr> <td>Support : </td> <td> <select name="support" id="support"> <option selected value="%">Tous</option> <option value="DVD">DVD</option> <option value="CD-Rom">CD-Rom</option> <option value="Disque Dur">Disque Dur</option> <option value="K7">K7</option> </select> </td> </tr> <tr> <td>Catégorie : </td> <td> <select name="categorie" id="categorie"> <option selected value="%">Toutes</option> <option value="Animation">Animation</option> <option value="Cinéma">Cinéma</option> <option value="Dessins Animés">Dessins Animés</option> <option value="Manga">Manga</option> <option value="Série TV">Série TV</option> <option value="Spectacle">Spectacle</option> </select> </td> </tr> <tr> <td>Genre : </td> <td> <select name="genre" id="genre"> <option selected value="%">Tous</option> <option value="Action">Action</option> <option value="Aventure">Aventure</option> <option value="Drame">Drame</option> <option value="Fantastique">Fantastique</option> <option value="Guerre">Guerre</option> <option value="Histoire">Histoire</option> <option value="Horreur">Horreur</option> <option value="Humour">Humour</option> <option value="Mechas">Mechas</option> <option value="Péplum">Péplum</option> <option value="Policier">Policier</option> <option value="Romance">Romance</option> <option value="Science Fiction">Science Fiction</option> <option value="Sport">Sport</option> <option value="Thriller">Thriller</option> </select> </td> </tr> <tr> <td></td> <td> <br> <input type="reset" name="effacer" value="Réinitialiser"> <input type="submit" name="search" id="search" value="Rechercher"> </td> </tr> </table> </form>
(est-ce qu'il faut bien mettre post plutôt que get??)
et ma page de résultats est :
$connexion = mysql_connect($host, $user, $pass) or die ("Connexion au serveur impossible"); $db = mysql_select_db($base, $connexion) or die ("La base de données ne peut être sélectionnée"); $query = " SELECT * FROM titres WHERE $titres_titre = $nom AND $titres_rea = $rea AND $titres_sup = $support AND $titres_cat = $categorie AND $titres_gen1 = $genre OR $titres_gen2 = $genre ORDER BY titres_titre "; $result = mysql_query ($query) or die ("Exécution de la requête impossible"); $nblignes = mysql_num_rows ($result); for ($i=0; $i<$nblignes; $i++) { $ligne = mysql_fetch_array ($result); extract($ligne); $titre=str_replace("*","'",$titres_titre); echo " <tr> <td width='50%'> <center> <br> <a href='fichetitre_auto.php?t=$titres_titre'>"; if ($titres_image == "") { echo " <img src='affiches/nocoverdvd.gif' border='0' align='left'>"; } else { echo " <img src='affiches/$titres_image' border='0' align='left'>"; } echo " <b><h3>$titre</h3></b></a> Ajouté le $titres_date </center> </td>"; $i++; if ($i<$nblignes) { $ligne = mysql_fetch_array ($result); extract($ligne); $titre=str_replace("*","'",$titres_titre); echo " <td width='50%'> <center> <br> <a href='fichetitre_auto.php?t=$titres_titre'>"; if ($titres_image == "") { echo " <img src='affiches/nocoverdvd.gif' border='0' align='left'>"; } else { echo " <img src='affiches/$titres_image' border='0' align='left'>"; } echo " <b><h3>$titre</h3></b></a> Ajouté le $titres_date </center> </td> </tr>"; } else { $i--; echo " <td width='50%'> </td> </tr>"; } } echo " </table> <br> <center><u>Nombre total de titres : <b>$nblignes</b></u></center> <br> <center><img src='images/retour.gif' border='0' onClick='history.go(-1)'></center>"; ?>
Cela fait des heures que je suis dessus et il me répond toujours : Exécution de la requête impossible
Merci de m'aider.
A voir également:
- [PHP/MySQL]Interrogation d'une base de donnée
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Easy php - Télécharger - Divers Web & Internet
- Formules excel de base - Guide
- Mysql community server - Télécharger - Bases de données
5 réponses
Salut,
fais un echo de $query et verifie que toute tes variables sont initialisées, et copie ce code dans la fenetre de phpmyqdmin, directement sur la base pour voir si elle fonctionne. Tu sauras déja si le pb vient de ta requete ou du code qui va autour
fais un echo de $query et verifie que toute tes variables sont initialisées, et copie ce code dans la fenetre de phpmyqdmin, directement sur la base pour voir si elle fonctionne. Tu sauras déja si le pb vient de ta requete ou du code qui va autour
Merci pour tes conseils
J'ai fait ce que tu m'as dit :
Et il me répond :
SELECT * FROM titres WHERE = 187 Code Meurtre AND = AND = AND = AND = OR = ORDER BY
Exécution de la requête impossible
J'ai fait ce que tu m'as dit :
$query = " SELECT * FROM titres WHERE $titres_titre = $nom AND $titres_rea = $rea AND $titres_sup = $support AND $titres_cat = $categorie AND $titres_gen1 = $genre OR $titres_gen2 = $genre ORDER BY $titres_titre "; echo " $query <br><br>"; $result = mysql_query ($query) or die ("Exécution de la requête impossible");
Et il me répond :
SELECT * FROM titres WHERE = 187 Code Meurtre AND = AND = AND = AND = OR = ORDER BY
Exécution de la requête impossible
Je pense avoir trouvé ma principale erreur, je mettais des $ là où il n'en fallait pas. Mais cela ne résoud pas tous mes problèmes car quel que soit les critères de recherches il me répond toujours le même titre.
Voici mon nouveau code pour résultat :
$query = " SELECT * FROM titres
WHERE titres_titre = '$nom'
AND titres_rea = '$rea'
AND titres_sup = '$support'
AND titres_cat = '$categorie'
AND titres_gen1 = '$genre'
OR titres_gen2 = '$genre'
ORDER BY titres_titre ";
echo $query;
$result = mysql_query ($query) or die ("Exécution de la requête impossible");
Il m'affiche donc toujours le même titre (alors que les critères de recherches ne lui conviennent pas du tout) et $query est égale à (lorsque je ne met aucun critère) :
SELECT * FROM titres WHERE titres_titre = '' AND titres_rea = '' AND titres_sup = '' AND titres_cat = '' AND titres_gen1 = '' OR titres_gen2 = '' ORDER BY titres_titre
Voici mon nouveau code pour résultat :
$query = " SELECT * FROM titres
WHERE titres_titre = '$nom'
AND titres_rea = '$rea'
AND titres_sup = '$support'
AND titres_cat = '$categorie'
AND titres_gen1 = '$genre'
OR titres_gen2 = '$genre'
ORDER BY titres_titre ";
echo $query;
$result = mysql_query ($query) or die ("Exécution de la requête impossible");
Il m'affiche donc toujours le même titre (alors que les critères de recherches ne lui conviennent pas du tout) et $query est égale à (lorsque je ne met aucun critère) :
SELECT * FROM titres WHERE titres_titre = '' AND titres_rea = '' AND titres_sup = '' AND titres_cat = '' AND titres_gen1 = '' OR titres_gen2 = '' ORDER BY titres_titre
ok, mais si tu passes des parametres pleins ? tu ferais bien de tester avant tes variables, sinon ya tj des resultats inattendus avec des tests 'vides'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Maintenant c'est bon. Voici mon nouveau code:
Merci à tous...
$query = " SELECT * FROM titres WHERE titres_titre LIKE '%$nom%' AND titres_rea LIKE '%$rea%' AND titres_sup LIKE '$support' AND titres_cat LIKE '$categorie' AND titres_act LIKE '%$act%' AND (titres_gen1 LIKE '$genre' OR titres_gen2 LIKE '$genre') ORDER BY titres_titre "; $result = mysql_query ($query) or die ("Exécution de la requête impossible");
Merci à tous...