Problème de récupération d'une donnée Php

Résolu
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   -  
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Voilà mon soucis, j'ai deux table différentes contenant toutes les deux "LIBELLE". Et j'aimerai afficher à un certain endroit l'un, puis à un certain endroit l'autre or je n'y arrive pas.
Voici mon code :

$sql = 	"SELECT * FROM reservation, objet, salarie, motif
								WHERE DATERES=$an$moi$jour && reservation.IDOBJET=objet.IDOBJET && reservation.IDSALARIE=salarie.IDSALARIE && IDTYPEOBJET=2
								ORDER BY HEUREDEB ASC";
		
					//On execute la requête
					mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
					
					//$result prend les valeurs de la requete
					$result=mysql_query($sql);
					
					//creation du tableau
					while ($ligne=mysql_fetch_array($result)){
						echo "<tr>\n<td class=\"salle\">".$ligne['objet.LIBELLE']."</td>\n<td class=\"salarie\">".$ligne['NOM']." ".$ligne['PRENOM']."\n</td>\n<td class=\"heurer\">".$ligne['HEUREDEB']."</td>\n<td>".$ligne['motif.LIBELLE'].'</td>\n<td class=\"heurer\">".$ligne['HEUREFIN']."</td></tr>";



Comme vous pouvez le voir j'ai essayer en préfixant d'un "." mais cela ne fonctionne pas, quelqu'un aurait-il la solution ?
A voir également:

18 réponses

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Salut :

N'utilise pas le * dans le select.
Ensuite tu executes deux fois ta requete :
//On execute la requête
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
//$result prend les valeurs de la requete
$result=mysql_query($sql);

Pour finir, voici une structure de requete qui devrait te servir :

Select a.nom, a.prenom, b.ville
From habitant a, ville b
Where a.id_ville = b.id
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai modifier ma requête par :
$sql = "SELECT a.NOM, a.PRENOM, a.IDSALARIE, b.IDSALARIE, b.HEUREDEBUT, b.HEUREFIN, b.DATERES, b.IDOBJET, c.LIBELLE, c.IDOBJET, c.IDTYPEOBJET D.LIBELLE FROM salarie a, reservation b, objet c, motif d
WHERE b.DATERES=$an$moi$jour && b.IDOBJET=c.IDOBJET && b.IDSALARIE=a.IDSALARIE && c.IDTYPEOBJET=2
ORDER BY b.HEUREDEB ASC";

et l'affichage par :
echo "<tr>\n<td class=\"salle\">".$ligne['c.LIBELLE']."</td>\n<td class=\"salarie\">".$ligne['NOM']." ".$ligne['PRENOM']."\n</td>\n<td>".$ligne['d.LIBELLE']."</td>\n<td class=\"heurer\">".$ligne['HEUREDEB']."</td>\n<td class=\"heurer\">".$ligne['HEUREFIN']."</td></tr>";

or cela ne fonctionne pas :/
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Attention :
Quand tu déclares plusieurs table dans le FROM, il faut que chacune des tables soient "liées"
C'est à dire que dans ton where, il faut précisé les jointures.

Je reprend mon exemple :
Select a.nom, a.prenom, b.ville
From habitant a, ville b
Where a.id_ville = b.id
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
$sql = "SELECT a.NOM, a.PRENOM, a.IDSALARIE, b.IDSALARIE, b.HEUREDEBUT, b.HEUREFIN, b.DATERES, b.IDOBJET, b.IDMOTIF, c.LIBELLE, c.IDOBJET, c.IDTYPEOBJET, d.IDMOTIF, d.LIBELLE D.LIBELLE FROM salarie a, reservation b, objet c, motif d
WHERE b.DATERES=$an$moi$jour && b.IDOBJET=c.IDOBJET && b.IDSALARIE=a.IDSALARIE && c.IDTYPEOBJET=2 && b.IDMOTIF=d.IDMOTIF
ORDER BY b.HEUREDEB ASC";

le problème est que je ne vois pas quelle table n'est pas lié . Ou alors je comprend mal :/
0

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

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ok a priori c'est correct.
Ce qui me gène c'est les &&, essaye avec des AND
Et puis est-ce que tu as une erreur ? Le die n'affiche rien ?

Ensuite, essaye :
while ($ligne=mysql_fetch_array($result)){
print_r($ligne);
}

Et copie colle le résultat :)
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Oui j'ai une erreure d'afficher :
Erreur SQL !SELECT a.NOM, a.PRENOM, a.IDSALARIE, b.IDSALARIE, b.HEUREDEBUT, b.HEUREFIN, b.DATERES, b.IDOBJET, b.IDMOTIF, c.LIBELLE, c.IDOBJET, c.IDTYPEOBJET, d.IDMOTIF, d.LIBELLE D.LIBELLE FROM salarie a, reservation b, objet c, motif d WHERE b.DATERES=20130605 AND b.IDOBJET=c.IDOBJET AND b.IDSALARIE=a.IDSALARIE AND c.IDTYPEOBJET=2 AND b.IDMOTIF=d.IDMOTIF ORDER BY b.HEUREDEB ASC
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 '.LIBELLE FROM salarie a, reservation b, objet c, motif d WHERE b.DATERE' at line 1

Ensuite si je rajoute :
while ($ligne=mysql_fetch_array($result)){
print_r($ligne);
}

il ne m'affiche rien. (J'ai ajouté le while que tu m'a donné après mon while)
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ah bah si ya une erreur fallait le dire plus tot ;-)
[...] d.IDMOTIF, d.LIBELLE D.LIBELLE FROM salarie a, [...]

Laisse le print_r dans le while
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Erreure suivante :

Erreur SQL !SELECT a.NOM, a.PRENOM, a.IDSALARIE, b.IDSALARIE, b.HEUREDEBUT, b.HEUREFIN, b.DATERES, b.IDOBJET, b.IDMOTIF, c.LIBELLE, c.IDOBJET, c.IDTYPEOBJET, d.IDMOTIF, d.LIBELLE FROM salarie a, reservation b, objet c, motif d WHERE b.DATERES=20130605 AND b.IDOBJET=c.IDOBJET AND b.IDSALARIE=a.IDSALARIE AND c.IDTYPEOBJET=2 AND b.IDMOTIF=d.IDMOTIF ORDER BY b.HEUREDEB ASC
Unknown column 'b.HEUREDEBUT' in 'field list'
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
L'erreur est assez explicite non ?
Il ne trouve pas heuredébut dans ta table réservation
Vérifie l'arthographe
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Alors il ne m'affiche plus d'erreur c'est un bon début, cela étant dit il ne m'affiche rien du tout.

affichage :
while ($ligne=mysql_fetch_array($result)){
echo "<tr>\n<td class=\"salle\">".$ligne['c.LIBELLE']."</td>\n<td class=\"salarie\">".$ligne['a.NOM']." ".$ligne['a.PRENOM']."\n</td>\n<td>".$ligne['d.LIBELLE']."</td>\n<td class=\"heurer\">".$ligne['b.HEUREDEB']."</td>\n<td class=\"heurer\">".$ligne['b.HEUREFIN']."</td></tr>";
print_r($ligne);
}
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Met juste :

affichage :
while ($ligne=mysql_fetch_array($result)){
echo "<tr><td>";
print_r($ligne);
echo "</td></tr>";
}

Si tu n'as rien à l'affichage, c'est que ta requete ne trouve rien
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Donc ma requete ne trouve, il faut maintenant que je trouve pourquoi.

(Pfiou la programmation c'est cool, mais ça peut vite donner des mal de crane)
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Si tu as phpmyadmin, il y a un espace pour faire des requetes. Vas y et tape ta requete dedans. Tu peux faire tes test dedans pour voir quelle requete te trouce ce que tu souhaites
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Alors c'est bon dans mon print_r j'ai :

Array ( [0] => Alves [NOM] => Alves [1] => Magali [PRENOM] => Magali [2] => 4 [IDSALARIE] => 4 [3] => 4 [4] => 00:15:00 [HEUREDEB] => 00:15:00 [5] => 02:45:00 [HEUREFIN] => 02:45:00 [6] => 2013-01-02 [DATERES] => 2013-01-02 [7] => 4 [IDOBJET] => 4 [8] => 5 [IDMOTIF] => 5 [9] => Salle de test 2 [LIBELLE] => Danse [10] => 4 [11] => 2 [IDTYPEOBJET] => 2 [12] => 5 [13] => Danse )

Mais je n'ai rien dans les case de mon tableau, simplement des case avec le fond, mais sans les écritures à l'intérieure.
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Bah tu peux remplir ton tableau avec les infos, tu les as dans $ligne qui correspond au contenu du print_r ;-)

Donc si tu veux mettre Alves, c'est echo $ligne['NOM'] ou $ligne[0] ;-)
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Ha et pour le libelle de ma salle je met $ligne[9] et cela fonctionnera quelque soit la salle ?
0
mahdu972 Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   18
 
$Ligne['SALLE'] est plus prudent parce qu'en cas de modification du tableau, la ligne 9 ne correspondra plus aux salles..
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
oui mais dans ce que je recoit, le nom de m'a salle m'est donné simplement par [9] et jamais par ['SALLE'].
Le nom dans ma table est LIBELLE, c'est le même que pour les motif (LIBELLE) ....

(A demain je débauche, j'espere résoudre ce soucis demain)
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
D'ailleurs il y a des colonnes qui n'ont pas noms, essaye de mettre des AS ;-)
select a.nom as NOM, a.prenom as PRENOM, b.ville as VILLE

Car tu vois tes colonnes 10 12 et 13 n'ont pas nom, donc tu ne peux seulement y accéder par leur numéro
0
shishi1906 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Merci encore de ton aide jérémy.s encore un sujet de résolu!
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Derien :)
0