problème de requete [jointure]

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème de requete [jointure]

par artotal » 21 août 2006, 23:26

Sa y est j'ai compris
j'avais laisser trainé un test sur la base avec une variable $requete non initialisé.
Encore merci truc ;)

par artotal » 21 août 2006, 23:19

là je ne comprend pas :

Code : Tout sélectionner

SELECT couleur, url_photo FROM voiture ORDER BY couleur DESC LIMIT 20Query was empty
pourtant sa m'affiche deux résultat je ne comprend pas la raison, le code :
$requete0="SELECT couleur, url_photo FROM voiture ORDER BY couleur DESC LIMIT 20";
echo '<br /><br /><br /><br /><br /><br />'.$requete0;
$resultat0=mysql_query($requete0, $lien) or die (mysql_error());
	if($categorie=="couleur") {
	while($affiche_tout=mysql_fetch_assoc($resultat0)) {
	$couleur=$affiche_tout['couleur'];
	$url_photo=$affiche_tout['url_photo'];
	echo $couleur.'<br />';
	echo "<img src=".$url_photo." /><br />";
	}
	}

par Truc » 21 août 2006, 19:38

Vérifie l'orthographe pour les variables contenant la ou les requêtes et l'exécution avec mysql_query...

D'après le message tu essaies d'exécuter une requête (variable) non initialisée.

par artotal » 20 août 2006, 21:34

Je viens de tester sa, et c'est bien le résultat que j'atta quil affiche ?

par iclo » 20 août 2006, 21:00

je pense que sa ne return pas false mais renvoie un champs vide quand la boucle s'arrette ?
As-tu tester ton select dans phpMyAdmin, comme conseilllé plus haut ?
La rêgle de base en programmation, c'est d'isoler les problèmes, en utilisant phpMyAdmin, tu testes en dehors de ton code php et tu peux donc savoir si c'est la requette qui foire, ou bien le code php, et surtout avoir une vue d'ensemble de ce que le serveur mysql te renvoit.

par artotal » 20 août 2006, 20:56

je pense que sa ne return pas false mais renvoie un champs vide quand la boucle s'arrette ?
Ou la jointure atta encore des résultat ?

par iclo » 20 août 2006, 20:52

Tu as un tutorial dans la faq, sur comment débuggé les problèmes d'accès aux bases de données: (Tests ta requêtte dans phpMyAdmin)
Mais pour un résultat d'un select vide, on ne peut pas beaucoup t'aider, n'ayant pas le contenu de la base de donnée sous la main.

par artotal » 20 août 2006, 19:34

Petit tuto sympas ;)
Par contre si j'ai bien compris !
j'ai une requete vide, avec ce message d'erreur
Query was empty
Pour le voir on peux cliquer http://creatif-web.be/anaska/projet/catalogue.php
sur voiture ou couleur de la liste de mon formulaire.
Ce qui me laisse perplexe ?
$requete1="SELECT nom_modele, url_photo FROM modele AS e, voiture AS t WHERE e.id_modele = t.id_modele";
$resultat=mysql_query($requete1, $lien) or die (mysql_error());
	if($categorie=="voiture") {
	while($affiche_tout=mysql_fetch_assoc($resultat)) {
	$nom_modele=$affiche_tout['nom_modele'];
	$url_photo=$affiche_tout['url_photo'];
	echo $nom_modele.'<br />';
	echo "<img src=".$url_photo." /><br />"; 
	}
	}	
Encore merci.

par Truc » 20 août 2006, 17:46

Salut,
Rien que pour toi un tout nouveau mini-tuto sur les jointures c'est à dire des requêtes sur plusieurs tables en même temps.

Ici tu as un beau produit cartésien (répétition avec chaque valeur sur chaque table) d'où le grand nombre de résultat.

par artotal » 20 août 2006, 17:36

J'ai essayer cette syntaxe sa me renvoie toujours plus de donner que ce qui se trouve dans la table ?
$requete="SELECT couleur, url_photo, nom_modele, nom_marque, nom_modele, annee, prix_ht, poids, echelle FROM voiture, modele, marque_voiture ORDER BY nom_modele  DESC LIMIT 20";
$resultat=mysql_query($requete, $lien) or die (mysql_error());
	if($categorie=="couleur") {
	while($affiche_tout=mysql_fetch_assoc($resultat)) {
	$couleur=$affiche_tout['couleur'];
	$url_photo=$affiche_tout['url_photo'];
echo "<a href='http://creatif-web.be/anaska/projet/resultat.php?couleur=$couleur'><br />$couleur</a>";
echo "<a href='http://creatif-web.be/anaska/projet/resultat.php?url_photo=$url_photo'><br />$url_photo</a>";	
	}
	}
Sa me multiplis les résultats, je ne comprend pas pk ?

problème de requete [jointure]

par artotal » 20 août 2006, 16:56

Bonjour,
Ma requette me semble bonne, ce n'est pas un warning mais dans la construction que j'aurrai besoin de conseil ?
http://creatif-web.be/anaska/projet/catalogue.php
Je veux boucler tous les champs demander, mais j'ai justement des alias ou répétition des lignes, je n'ai que deux enregistrements et il m'en affiche 100 ?
Le premier déconne parceque j'ai mis une boucle
$requete="SELECT couleur, url_photo, nom_modele, nom_marque, nom_modele, annee, prix_ht, poids, echelle FROM voiture, modele, marque_voiture";
$resultat=mysql_query($requete, $lien) or die (mysql_error());
$i=0;
if($categorie=="couleur") {
	while($affiche_tout=mysql_fetch_array($resultat)) {
	print "Voici se que donne votre recherche par couleur :<span class='rouge'>".$affiche_tout['couleur'].'</span><br />';
	print '<br /><p><img src='.$affiche_tout['url_photo'].' /></p>'; }
	} 
le reste ne boucle pas par contre ?
elseif($categorie=="voiture") {
	$ligne=mysql_fetch_array($resultat);
	print "Voici se que donne votre recherche par nom:
	<span class='rouge'><br />".$ligne['nom_modele'].'</span>';
	print '<p><img src='.$ligne['url_photo'].' /></p>'; 
	}
elseif($categorie=="marque") {
	$ligne=mysql_fetch_array($resultat);
	print "Voici se que donne votre recherche par marque:
	<span class='rouge'><br />".$ligne['nom_marque'].'</span>';
	print '<p><img src='.$ligne['url_photo'].' /></p>'; 
	}
elseif($categorie=="modele") {
	$ligne=mysql_fetch_array($resultat);
	print "Voici se que donne votre recherche par modèle:
	<span class='rouge'><br />".$ligne['nom_modele'].'</span>';
	print '<p><img src='.$ligne['url_photo'].' /></p>'; 
	}
elseif($categorie=="prix") {
	$ligne=mysql_fetch_array($resultat);
	print "Voici se que donne votre recherche par prix:
	<span class='rouge'><br />".$ligne['prix_ht'].' €</span> (les prix s\'entendent hors taxe)';
	print '<p><img src='.$ligne['url_photo'].' /></p>'; 
	}
elseif($categorie=="annee") {
	$ligne=mysql_fetch_array($resultat);
	print "Voici se que donne votre recherche par année:
	<span class='rouge'><br />".$ligne['annee'].'</span>';
	print '<p><img src='.$ligne['url_photo'].' /></p>'; 
	 }
elseif($categorie=="poids") {
	$ligne=mysql_fetch_array($resultat);
	print "Voici se que donne le poids de toutes nos voitures:
	<span class='rouge'><br />".$ligne['poids'].'</span>';
	print '<p><img src='.$ligne['url_photo'].' /></p>';
	 }	
elseif($categorie=="echelle") {
	$ligne=mysql_fetch_array($resultat);
	print "L'echelle est en pourcentage:
	<span class='rouge'><br />".$ligne['echelle'].' Kg</span>';
	print '<p><img src='.$ligne['url_photo'].' /></p>';
	 }	  		
 else {  
 echo "<div class=\"nouveau_resultat\"><a href='http://creatif-web.be/anaska/projet/catalogue.php' title='faite une nouvelle recherche'>Souhaittez vous faire une autre recherche ?</a></div>";
		exit();
}
 if(!mysql_query($requete, $lien)) {
	$erreurbdd=mysql_error();
	echo $erreurbdd;
	return false;
	}
	else {
	return true;
	}
Merci de votre aide.