Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jonction de deux tables

Sujet résolu
    10 avril 2011 à 10:28:45

    Bonjour je cherche à afficher dans un tableau l'auteur de la suggestion
    mais il ne m'affiche que la premiere ligne
    Je ne voit pas ou est l'erreur

    $Req="SELECT * FROM SG_lucie, ELEVE_lucie WHERE SG_lucie.EL_Id=ELEVE_lucie.EL_Id";

    $liste=mysql_query($Req);
    $n=0;

    while($enreg=mysql_fetch_object($liste))
    {
    $n=$n+1;
    $SG_Id=$enreg->SG_Id;
    $SG_Theme=$enreg->SG_Theme;
    $SG_Statut=$enreg->SG_Statut;
    $SG_Description=$enreg->SG_Description;
    $SG_Date=$enreg->SG_Date;
    $EL_Id=$enreg->EL_Id;
    $EL_Nom=$enreg->EL_Nom;
    $EL_Classe=$enreg->EL_Classe;
    print(" <TR><TD>$n<BR></TD>
    <TD> $SG_Theme</TD>
    <TD> $SG_Description</TD>
    <TD> $SG_Date</TD>
    <TD><SELECT NAME='Statut[$SG_Id]'>
    <OPTION VALUE='lu'> LU
    <OPTION VALUE='ACCEPTE'> ACCEPTE
    <OPTION VALUE='REFUSE'> REFUSE
    <OPTION VALUE='EN COURS DE REALISATION'> EN COURS DE REALISATION
    <OPTION VALUE='REALISE'> REALISE
    <OPTION SELECTED VALUE='$SG_Statut'> $SG_Statut
    </SELECT></TD>
    <TD> $EL_Nom</TD>
    <TD> $EL_Classe</TD>
    <TD><CENTER><A HREF='suppressionsuggestion.php?SG_Id=$SG_Id' TARGET='Contenu'><IMG SRC='Images/croix.jpg' WIDTH='10' HEIGHT='10'></A></CENTER></TD></TR>
    ");
    }

    print("<INPUT TYPE='SUBMIT' VALUE='Valider'>");


    merci

    je cherche quelqu'un pour m'aider dans mon projet
    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2011 à 10:33:28

      Hello,

      SELECT
      table1.champ1,
      table1.champ2,
      table2.champ1
      FROM table1 LEFT JOIN table2
      ON table1.champ1=table2.champ2
      • Partager sur Facebook
      • Partager sur Twitter
        10 avril 2011 à 10:46:24

        je suis désolez mais ca ne marche pas ou j'ai mal compris
        je suis novice
        est ce que tu peux clairement mettre en fonction de mes données stp
        • Partager sur Facebook
        • Partager sur Twitter
          10 avril 2011 à 10:53:31

          Je ne connais les champs de ta table donc ...

          $Req = 'SELECT 
          			SG_Lucie.champ1, 
          			SG_Lucie.champ2, 
          			ELEVE_Lucie.champ1, 
          			ELEVE_Lucie.champ5 
          		FROM SG_lucie LEFT JOIN ELEVE_lucie 
          		ON SG_lucie.champ1=ELEVE_lucie.champ1
          	';
          


          Evite le SELECT * au passage ^^
          • Partager sur Facebook
          • Partager sur Twitter
            10 avril 2011 à 11:10:38

            je suis vraiment nul en informatique ...
            il me met
            Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in H:\weblocal\sites\Projet2\Intranet\Projet\tablesuggestion.php on line 41
            Call Stack

            les champs c'est bien SG_Id et EL_Id ?
            • Partager sur Facebook
            • Partager sur Twitter
              10 avril 2011 à 11:19:15

              On dit jointure pas jonction, et tu es sur le mauvais forum, ici c'est PHP or ton problème concerne les bases de données.

              Néanmoins, ta requête devrait être

              SELECT *
              FROM SG_lucie
              JOIN ELEVE_lucie USING (EL.Id)
              


              Je tiens cependant à souligner comme mon camarade Hayreon que l'* doit être remplacé par le nom des champs.
              Par ailleurs je trouve le nom de tes tables particulièrement étrange. A quoi correspondent-elle ces tables ?
              Lucie est bien un prénom ? Si oui, pourquoi des tables portent le prénom de quelqu'un ? Cela signifie-t-il que tu as une table par utilisateur de ton site ?
              • Partager sur Facebook
              • Partager sur Twitter
                10 avril 2011 à 11:22:57

                Voilà un exemple concret qui fonctionne:

                $news = array();
                
                $query = query('SELECT dt_news.news_id, dt_news.user_id, dt_news.news_date, dt_news.news_titre, dt_users.user_id, dt_users.user_pseudo FROM dt_news LEFT JOIN dt_users ON dt_news.user_id=dt_users.user_id ORDER BY dt_news.news_date DESC');
                while($j = mysql_fetch_assoc($query))
                {
                	$uneNews			= array();
                	$uneNews['id']		= intval($j['news_id']);
                	$uneNews['date']	= get_date($j['news_date'],true);
                	$uneNews['auteur']	= sql_to_html($j['user_pseudo']);
                	$uneNews['titre']	= sql_to_html($j['news_titre']);
                
                	array_push($news,$uneNews);
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  10 avril 2011 à 11:31:50

                  PHP Mysql même combat pour moi

                  oui les noms sont bizard car c'est un projet pour mon école et c'est pour éviter les problemes dans les tables si un autre eleve crée la même table
                  je dois réaliser une "boite à suggestion " la je suis sur la partie administrateur et je veux afficher la personne qui a crée la suggestion (d'ou SG)
                  Normalement * sélectionne tous les champs?
                  Car moi je veux également afficher la date par exemple qui se trouve dans ma table SG_lucie
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 avril 2011 à 11:38:03

                    Oui * sélectionne toutes les colonnes mais ce n'est pas propre, il est préférable de lister les noms des colonnes.
                    Peut-être que pour toi PHP et MySQL même combat mais pour ce forum ce n'est pas le cas, merci donc de respecter la charte.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 avril 2011 à 11:44:57

                      Dans ce cas, tu es mal partis ! (ta base sql aussi)

                      Pourquoi ne pas faire

                      - Une table "eleves" avec les noms des élèves

                      ID_eleve
                      NOM_eleve

                      - Une table "suggestion" avec les suggestions

                      ID_suggestion
                      ID_eleve
                      SG_date
                      SG_suggestion

                      Tout simplement ?

                      Ensuite

                      <?php
                      
                      $query = mysql_query('SELECT eleves.ID_eleve, eleves.NOM_eleve, suggestions.ID_suggestion, suggestions.ID_eleve, suggestions.SG_date, suggestions.SG_suggestion FROM eleves LEFT JOIN suggestions ON eleves.ID_eleve=suggestions.ID_eleve ORDER BY suggestions.SG_date DESC');
                      
                      while( $j = mysql_fetch_assoc($query) )
                      {
                        $eleve = $j['NOM_eleve'];
                        $date = $j['SG_date'];
                        $suggestion = $j['SG_suggestion'];
                      
                        echo 'L\'el&eacute;ve '.$eleve.' a ajout&egrave; une suggestion le '.$date.'<br />';
                        echo $suggestion; 
                      }
                      
                      ?>
                      


                      Pense à sécuriser tes champs (htmlentities, etc...)
                      Aère ton code pour qu'il soit plus lisible.
                      Pense bien à la structure de tes tables (champs communs, dénomination, etc...)

                      Le reste viendra tout seul ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 avril 2011 à 11:56:49

                        Merci j'ai réussi la solution était
                        $Req="SELECT * FROM SG_lucie LEFT JOIN ELEVE_lucie ON SG_lucie.EL_Id=ELEVE_lucie.EL_Id";
                        Je sais ce n'est pas très propre mais mon soucis déjà c'est que ça fonctionne
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Jonction de deux tables

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown