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

Résolu
shishi1906 Messages postés 97 Statut Membre -  
jeremy.s Messages postés 1248 Statut Membre -
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 ?

18 réponses

  1. jeremy.s Messages postés 1248 Statut Membre 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
  2. shishi1906 Messages postés 97 Statut Membre
     
    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
  3. jeremy.s Messages postés 1248 Statut Membre 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
  4. shishi1906 Messages postés 97 Statut Membre
     
    $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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeremy.s Messages postés 1248 Statut Membre 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
  7. shishi1906 Messages postés 97 Statut Membre
     
    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
  8. jeremy.s Messages postés 1248 Statut Membre 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
  9. shishi1906 Messages postés 97 Statut Membre
     
    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
  10. jeremy.s Messages postés 1248 Statut Membre 79
     
    L'erreur est assez explicite non ?
    Il ne trouve pas heuredébut dans ta table réservation
    Vérifie l'arthographe
    0
  11. shishi1906 Messages postés 97 Statut Membre
     
    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
  12. jeremy.s Messages postés 1248 Statut Membre 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
  13. shishi1906 Messages postés 97 Statut Membre
     
    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
  14. jeremy.s Messages postés 1248 Statut Membre 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
  15. shishi1906 Messages postés 97 Statut Membre
     
    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
  16. jeremy.s Messages postés 1248 Statut Membre 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
  17. shishi1906 Messages postés 97 Statut Membre
     
    Ha et pour le libelle de ma salle je met $ligne[9] et cela fonctionnera quelque soit la salle ?
    0
    1. mahdu972 Messages postés 247 Statut Membre 18
       
      $Ligne['SALLE'] est plus prudent parce qu'en cas de modification du tableau, la ligne 9 ne correspondra plus aux salles..
      0
    2. shishi1906 Messages postés 97 Statut Membre
       
      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
  18. jeremy.s Messages postés 1248 Statut Membre 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
  19. shishi1906 Messages postés 97 Statut Membre
     
    Merci encore de ton aide jérémy.s encore un sujet de résolu!
    0
    1. jeremy.s Messages postés 1248 Statut Membre 79
       
      Derien :)
      0