Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème dans un while...

...certaines données ne s'affichent pas

    10 juillet 2006 à 15:36:09

    Salut

    j'ai fais un code :

    <?
            $sujets= ('SELECT * FROM sujet LEFT JOIN reponse ON sujet.titre = reponse.sujet ORDER BY time DESC LIMIT 0, 10'); // Requête
    $sujets1 = mysql_query($sujets) or die(mysql_error());
    while ($sujet = mysql_fetch_array($sujets1) )

    { ?>

          <table width="99%" border="0" align="center">
            <tr>
              <td width="54%" class="Style10">Sujet : </td>
              <td width="19%" class="Style10">Auteur : </td>
              <td width="27%" class="Style11 Style12">Date : </td>
            </tr>
            <tr>
              <td class="cadrederniers"><? echo $sujet['titre']; ?></td>
              <td class="cadrederniers"><? echo $sujet['auteur']; ?></td>
              <td class="cadrederniers"><div align="center">
                <?php
                      $timestamp = $sujet['time'];
                      echo date('d/m/Y', $timestamp);
                      ?>
                <br />
              <? echo date('H\h i\m\i\n s\s', $timestamp); ?></div></td>
            </tr>
            <tr>
              <td colspan="3" class="Style10"><div align="left">Message : </div></td>
            </tr>
            <tr>
              <td colspan="3">
                      <? $final = nl2br(stripslashes(substr($sujet['message'], 0, 120)));
                             echo $final;?>
                             ...</td>
            </tr>
          </table>
          <div align="center">___________________________________________________________      </div>
          <? } ?>


    pour la page principale de mon forum. Ce code sert à afficher les 15 derniers posts du forum mais seulement les résultats de $sujet['titre'] et ['time'] s'affichent et pas le reste.

    Pouvez-vous m'aider SVP ?

    Merci ;)

    @+
    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2006 à 15:43:14

      Vérfie que ces données Existent dans ta BDD
      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2006 à 15:53:29

        utilise print_r($sujet); pour débuger ;)
        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2006 à 15:55:41

          encadre tes print_r avec echo "<pre>"; et echo "</pre>"; pour une plus grande lisibilité :)

          Vérifie aussi que tes champs que tu mets dans la boucle correspondent bien à ceux de la BDD (la casse compte il me semble)
          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2006 à 16:13:28

            Citation :

            Array ( [0] => 17 [id] => [1] => frgdfgdgfdfsg [titre] => frgdfgdgfdfsg [2] => test [categorie] => test [3] => fgdhdfgh [auteur] => [4] => dgsdfg [message] => [5] => 1149616264 [time] => 1149616264 [6] => [sujet_lu] => [7] => [8] => [sujet] => [9] => [10] => ) 1



            s'il y a du texte comme ça avec des truc qui veulent rien dire comme frefrefefg par exemple, c'est que je ne savais pas quoi mettre lorsque j'ai testé.
            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2006 à 16:42:18

              ben voila [message] => est vide :) dans ta base dedonnée, donc normal que rien ne s'affiche ;)
              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2006 à 16:49:53

                oui, il y a quelque chose dans message !!!

                au fait, au cas où, voici mes bases :

                Sujet :


                Image utilisateur


                Réponse :


                Image utilisateur
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2006 à 16:55:48

                  Ah, donc, c'est normal.

                  Je suppose que dans sujet.message, il n'y a que l'auteur du topic.

                  Ta requête n'est pas bonne.

                  Conseil, nomme tes champs dans le select plutôt que de faire (SELECT * ....).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juillet 2006 à 16:57:12

                    non, sujet.message, c'est le contenu du sujet
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 juillet 2006 à 16:59:13

                      Ce sont quels champs qui doivent être sélectionner dans ces 2 tables ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2006 à 17:08:21

                        Dans le SELECT de ta requête, ce sont quels champs que tu dois sélectionner, dont tu as besoin dans ton code php ?

                        Tous les champs des 2 tables ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 juillet 2006 à 17:14:14

                          titre, auteur, time, message
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 juillet 2006 à 17:54:12

                            Essaye avec cette requête :

                            SELECT titre, R.auteur, time, R.message, S.auteur, S.message
                            FROM reponse AS R
                            LEFT OUTER JOIN sujet AS S
                            ON S.titre = R.sujet
                            ORDER BY time DESC LIMIT 0, 10;


                            Par contre, pour titre, varchar(1000), ce n'est pas bon, un varchar est limité à 255 ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 juillet 2006 à 17:59:39

                              c'est pareil sauf que maintenant, le sujet ne s'affiche plus
                              • Partager sur Facebook
                              • Partager sur Twitter
                                10 juillet 2006 à 19:02:06

                                Ah, je me suis gouré dans le ON :

                                SELECT titre, R.auteur, time, R.message, S.auteur , S.message
                                FROM reponse AS R
                                LEFT OUTER JOIN sujet AS S
                                ON S.sujet = R.titre
                                ORDER BY time DESC LIMIT 0, 10;


                                Par contre, il faut que tu affectes un alias à tes champs en commun (auteur, message) pour les utiliser dans ta boucle.

                                Mais j'ai toujours pas saisi à quoi servent ces champs communs.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 juillet 2006 à 19:23:54

                                  Citation : strucky

                                  Ah, je me suis gouré dans le ON :
                                  Par contre, il faut que tu affectes un alias à tes champs en commun (auteur, message) pour les utiliser dans ta boucle.


                                  tu peux me dire comment je peux faire STP ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 juillet 2006 à 19:40:13

                                    Ben, c'est a toi de voir pour les noms.

                                    Par exemple :

                                    SELECT titre, R.auteur AS rep_aut, time, R.message AS rep_mes, S.auteur AS suj_aut, S.message AS suj_mes
                                    FROM reponse AS R
                                    LEFT OUTER JOIN sujet AS S
                                    ON S.sujet = R.titre
                                    ORDER BY time DESC LIMIT 0, 10;




                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      10 juillet 2006 à 19:44:07

                                      mais y a un problème :

                                      je ne veux pas que les réponses et les sujets soient séparrés
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        10 juillet 2006 à 19:55:12

                                        Oui, ben ça je m'en doutais un peu, c'est pourquoi je me demande toujours pourquoi tu utilises 2 champs sur chaque table, plutôt que de regrouper ça sur une seule.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 juillet 2006 à 19:59:47

                                          beh pour différencier les sujets des réponses sinon, je ne sais pas comment faire
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            10 juillet 2006 à 20:08:08

                                            Ce que j'aurais fait, c'est de rajouter un champ à la table réponse qui serait de 0, si 1er message(donc celui de l'auteur du sujet), et qu'il s'incrémente de 1 (lors de ta requête) lorsqu'une réponse est postée, et donc ne garder dans la table sujet que l'id et le titre.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              10 juillet 2006 à 20:10:22

                                              je mets la table sujet alors ou pas ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                10 juillet 2006 à 20:23:56

                                                Ben, oui, ce sera plus rapide pour l'affichage de tous les sujets.

                                                J'aurais fait ça de cette façon :

                                                sujet
                                                ++++++++++++++++++++++++++
                                                | id | titre | categorie |
                                                ++++++++++++++++++++++++++


                                                reponse
                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                                                | id | id_sujet | auteur | message | time | sujet_lu | parent |
                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


                                                J'aurais même fait une autre table categorie avec un id et le nom de la categorie, et dans la table sujet, au lieu d'y mettre un nom dans la categorie, ce serait l'id de la categorie correspondante.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  10 juillet 2006 à 20:31:03

                                                  je ne comprends pas ta structure, tu m'as dit que je devrais mettre un champ pour dire si c'est le sujet ou simplement une réponse, mais je ne le vois pas
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    10 juillet 2006 à 21:14:57

                                                    bah, parent, bon le nom n'est peut-être pas le plus approprié.

                                                    Si parent = 0, c'est l'auteur du post, donc le message
                                                    Si parent = 1, c'est la 1ère réponse
                                                    si parent = 2, c'est la 2nde réponse,
                                                    etc...

                                                    Y'a certainement d'autres façons de faire, mais avant de se lancer dans la conception d'un forum, il faut bien réfléchir à la structure des tables, et surtout ne pas avoir de données répétitives.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      10 juillet 2006 à 21:36:57

                                                      je peux pas mettre un formulaire envoiesujet.php qui ajoute, en plus du titre et du message, un 0 et un envoierep.php qui fait pareil mais aussi un 1 et je met le time dans les deux cas ?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        10 juillet 2006 à 22:04:25

                                                        Désolé, mais j'ai rien compris à ce que tu m'as dit.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          10 juillet 2006 à 22:15:08

                                                          je voudrais créer un fichier envoisujet.php qui, lorsqu'on envoie le formulaire avec le titre et le message qu'il contient, il meete donc le message et le titre dans la BDD, dans la table post et en plus, dans un champ "etat", il met 0 pour qu'après, avec des "if", il détecte si c'est un sujet. Et pareil dans un envoirep.php sauf qu'il envoie 1 à la place de 0 pour dire que c'est une réponse
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Problème dans un while...

                                                          × 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