[PHP/MySQL]Interrogation d'une base de donnée

Résolu/Fermé
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 - 3 juin 2005 à 10:05
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 - 3 juin 2005 à 22:40
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 :
<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.

5 réponses

Timon1102 Messages postés 354 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 30 décembre 2010 109
3 juin 2005 à 10:12
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
0
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
3 juin 2005 à 11:49
Merci pour tes conseils
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
0
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
3 juin 2005 à 12:23
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
0
Timon1102 Messages postés 354 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 30 décembre 2010 109
3 juin 2005 à 12:34
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'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
3 juin 2005 à 22:40
Maintenant c'est bon. Voici mon nouveau code:

$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...
0