Problème 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 jointure

par jojolapine » 26 févr. 2009, 12:19

Me semble qu'il manque une virgule... ;)
là:
sous-continent.id, sous-continent.sous_continent, sous-continent.id_continent ,
continent.id, continent.continent

par Romuald632 » 26 févr. 2009, 12:16

J'ai donc une erreur Mysql que voici.
Il faut que je regardemaes tables peut-être !
Erreur Mysql:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.id, pays.nom, pays.id_sous_continent sous-conti' at line 2

par jojolapine » 26 févr. 2009, 11:39

Je dirais même plus, un query associé à une gestion des erreurs:
$query = mysql_query($requete) or die("Erreur Mysql:<br />".mysql_error()."<br />requête:<br />".$requete);

par Maitrepylos » 26 févr. 2009, 10:47

Bonjour,

Il faut faire un query avant le fetch_assoc
<?php

$requete = "SELECT photos.image, photos.id_pays, photos.id_photos 
                              pays.id, pays.nom, pays.id_sous_continent 
                              sous-continent.id, sous-continent.sous_continent, sous-continent.id_continent 
                              continent.id, continent.continent 
                  FROM photos, pays, sous-continent, continent 
                  WHERE sous-continent.id_continent = continent.id 
                  AND sous-continent.id = pays.id_sous_continent 
                  AND pays.id = photos.id_pays 
                  ORDER BY continent.continent,sous-continent.sous_continent,pays.nom"; 

$query = mysql_query($requete);
                  
while ($affichage = mysql_fetch_assoc($query) )     
{    
    echo ''.$affichage['image'].'';
}
    
?> 

par Romuald632 » 26 févr. 2009, 10:02

Même avec mysql_fetch_assoc j'ai ce message d'erreur :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\Romuald\Travail\wamp\www\video_on_line\backoffice\nouveau_affichage_pays_photo.php on line 21
Je vous redonne mon code :
<?php

$requete = "SELECT photos.image, photos.id_pays, photos.id_photos 
                              pays.id, pays.nom, pays.id_sous_continent 
                              sous-continent.id, sous-continent.sous_continent, sous-continent.id_continent 
                              continent.id, continent.continent 
                  FROM photos, pays, sous-continent, continent 
                  WHERE sous-continent.id_continent = continent.id 
                  AND sous-continent.id = pays.id_sous_continent 
                  AND pays.id = photos.id_pays 
                  ORDER BY continent.continent,sous-continent.sous_continent,pays.nom"; 
				  
while ($affichage = mysql_fetch_assoc($requete) )     
{    
	echo ''.$affichage['image'].'';
}
	
?>
Je suis un peu perdu !!!

par Aureusms » 25 févr. 2009, 15:35

Quelle est ton erreur?
Sinon utilise mysql_fetch_assoc au lieu de mysql_fetch_array. Dans ton cas ce sera plus rapide.

par orgerix » 25 févr. 2009, 12:38

Quelle erreur ?

Et je ne comprend pas très bien l'utilité de rajouter des chaines vides de part et d'autre de la variable...

par Romuald632 » 25 févr. 2009, 10:33

Bonjour,
J'essaye depuis hier soir, mais j'y arrive pas, au moment d'afficher le résultat j'ai une erreur :
$requete = "SELECT photos.image, photos.id_pays, photos.id_photos 
                              pays.id, pays.nom, pays.id_sous_continent 
                              sous-continent.id, sous-continent.sous_continent, sous-continent.id_continent 
                              continent.id, continent.continent 
                  FROM photos, pays, sous-continent, continent 
                  WHERE sous-continent.id_continent = continent.id 
                  AND sous-continent.id = pays.id_sous_continent 
                  AND pays.id = photos.id_pays 
                  ORDER BY continent.continent,sous-continent.sous_continent,pays.nom"; 
				  
while ($affichage = mysql_fetch_array($requete) )     
{    
	echo ''.$affichage['image'].'';
}

par Aureusms » 24 févr. 2009, 13:56

<?php
//essaye cela

$requete = "SELECT Photos.image, Photos.id_pays, Photos.id_photos
                              Pays.id, Pays.nom, Pays.id_sous_continent
                              Sous-continent.id, Sous-continent.sous_continent, Sous-continent.id_continent
                              Continent.id, Continent.continent
                  FROM Photos, Pays, Sous-continent, Continent
                  WHERE Sous-continent.id_continent = Continent.id
                  AND Sous-continent.id = Pays.id_sous_continent
                  AND Pays.id = Photos.id_pays
                  ORDER BY Continent.continent,Sous-continent.sous_continent,Pays.nom";
?>

Problème jointure

par Romuald632 » 24 févr. 2009, 10:18

Bonjour à tous !
Site de photos, où j'ai créé 4 tables :
- Continent : id, continent
- Sous-continent : id, sous_continent,id_continent
- Pays : id, nom,id_sous_continent
- Photos : id_photo, id_pays, image

Je voudrai classer mes photos comme ceci :
Amérique :
- Canada
- USA

Europe :
- France
- Espagne
- ...

Actuellement je n'ai que ma liste des pays en jointure, et ça fonctionne !
Pour commencer, j'affiche mes "Continents"

Affichage continent
$continent = mysql_query("SELECT DISTINCT continent FROM continent ORDER BY continent") or die(mysql_error());
Mais insérer mes pays sous chaque continent là, je bloque

Merci pour votre aide !