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

Résolu/Fermé
shishi1906 Messages postés 93 Date d'inscription mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014 - 18 juin 2013 à 14:26
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 19 juin 2013 à 14:24
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 15:22
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 16:09
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 16:13
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 16:28
$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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 16:38
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 16:54
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 16:58
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 17:00
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 17:12
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
Modifié par shishi1906 le 18/06/2013 à 17:16
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 17:25
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 17:28
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 17:35
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 17:39
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 17:48
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
18 juin 2013 à 17:49
Ha et pour le libelle de ma salle je met $ligne[9] et cela fonctionnera quelque soit la salle ?
0
mahdu972 Messages postés 229 Date d'inscription jeudi 14 juin 2012 Statut Membre Dernière intervention 3 août 2014 18
18 juin 2013 à 17:52
$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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
Modifié par shishi1906 le 18/06/2013 à 17:56
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 juin 2013 à 17:56
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 mercredi 1 mai 2013 Statut Membre Dernière intervention 27 mars 2014
19 juin 2013 à 11:08
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
19 juin 2013 à 14:24
Derien :)
0