Partage
  • Partager sur Facebook
  • Partager sur Twitter

Livre d'or

message d'erreur

Sujet résolu
    16 février 2006 à 17:17:37

    Bonjour tout le monde,
    Suis nb et me permets de poster ici car il y avait un post qui traiter de mon problème mais je crois qu'il est verrouillé. J'espère ne pas faire d'impair.
    Mon souci, je tente d'installer un livre d'or suivant les conseils avisés des cours php sur ce site (super soit dit en passant)
    Alors que les messages s'inscrivent bien dans la bdd, j'ai un message d'erreur :
    Page : 1
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\karone\livreor.php on line 139

    la ligne 139 c'est la fameuse boucle while

    le code est le suivant :

    <?php
    // 1ère étape CONNEXION AU SERVEUR MYSQL
    taratata...
    // 2ème étape SELECTION DE LA BASE DE DONNEES
    mysql_select_db($baseDonnees,$link) or die(mysql_error());
    // Etape 3// Si un message est envoyé, on l'enregistre
    if (isset($_POST['pseudo']) AND isset($_POST['message']))
    {
    $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
    $message = htmlentities($_POST['message'], ENT_QUOTES); // De même pour le message
    $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
    // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
    }
    // --------------- Etape 4 -----------------
    // On écrit les liens vers chacune des pages
    // -----------------------------------------
    // On met dans une variable le nombre de messages qu'on veut par page
    $nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)
    // On récupère le nombre total de messages
    $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
    $donnees = mysql_fetch_array($retour);
    $totalDesMessages = $donnees['nb_messages'];
    //
    // On calcule le nombre de pages à créer
    $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
    //
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
    echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
    }
    ?>
    <?php
    // --------------- Etape 4 ---------------
    // Maintenant, on va afficher les messages
    // ---------------------------------------
    if (isset($_GET['page']))
    {
    $page = intval($_GET['page']);
    // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
    $page = 1; // On se met sur la page 1 (par défaut)
    }
    //
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
    $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
    while ($donnees = mysql_fetch_array($reponse)) {
    echo '<p>' . $donnees['pseudo'] . ' a écrit :<br />' . $donnees['message'] . '</p>';
    }
    mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
    ?>

    J'ai bien mis les codes d'accès pour easy php
    En dernier recours je reviens vers vous, j'ai bien dû oublier quelque chose mais je n'arrive pas à trouver
    Merci d'avance de votre aide.

    En tous cas, félicitations pour ce site, vais devenir la reine du php quoique... je commence mal visiblement :-)

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2006 à 17:19:24

      étant donné que tu n'a pas 139 ligne, je pense que tu a du te tromper de code non?
      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2006 à 17:37:32

        Oups, déjà j'ai laissé le code html au dessus du code php, si mes souvenirs sont bons faut que je remplace par des header et footer non ? include et patin couffin ?

        Cela décale d'autant le code php, sorry, tellement concentrée sur mon livre d'or...


        ma ligne 139 c'est

        $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
        while ($donnees = mysql_fetch_array($reponse)) {
        echo '<p>' . $donnees['pseudo'] . ' a écrit :<br />' . $donnees['message'] . '</p>';
        }
        mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
        ?>

        au niveau de la boucle while, j'ai mis un peu de code au dessus, car des fois l'erreur est à la ligne supérieure. Si ça peut aider...

        Merci d'avance de votre aide.
        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2006 à 16:16:55

          Tu devrai mettre ton code entre les balise de code comme ceci :


          $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
          while ($donnees = mysql_fetch_array($reponse)) {
          echo '<p>' . $donnees['pseudo'] . ' a écrit :<br />' . $donnees['message'] . '</p>';
          }
          mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)


          Apres verifie si les variables $premierMessageAafficher et $nombreDeMessageParPage sont déclarées. Ou généralement l'erreur la plus commune est de mettre :

          mysql_connect("l'exemple de M@teo")


          au lieu de :

          mysql_connect("ton serveur", "ton_login", "ton_mot_de_passe")


          Vérifies ça au cas où...
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2006 à 19:40:15

            j'ai repris point par point ton premier code, je n'ai pas trouvé où je m'étais plantée mais toujours est-il que cela fonctionne donc... Merci Hideki

            et je clique sur "résolu" :-)
            • Partager sur Facebook
            • Partager sur Twitter

            Livre d'or

            × 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