Partage
  • Partager sur Facebook
  • Partager sur Twitter

Livre d'or

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Users/juleshammenecker/Desktop/Php/Livre d'or/livreor.php on line 74

    18 février 2006 à 16:45:48

    Eh bien voila, j'ai déja fait 3 fois le TP de m@téo, et a chaque fois, il faut que quelquechose foire :-° Cette fois un erreur de mysql_fetch_array()
    Voici le code=
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title></title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       </head>
    <style>
    body
    {
            font-style: "Lucida grande", Arial, serif ;
            text-align: center;
    }

    hr
    {
    width: 80% ;
    }
    </style>
       <body>


    <form method="post">
    <p>
            Vous aimez mon site? Laissez un message!
    </p>

    <p>
            <label>Pseudo<br /><input type="text" name="pseudo" /></label><br />
        <label>Message<br /><textarea name="pseudo" rows="4" cols="25"></textarea></label>
    <br /><input type="submit" value="Envoyer!" />
    </p>
    </form>
    <?php
    mysql_connect("tralala", "tralal", "tralala");
    mysql_select_db("jules");
    // On enregistre les messages
    if (isset($_POST['pseudo']) AND isset($_POST['message']))
    {
            $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
            $message = htmlentities($_POST['message'], ENT_QUOTES);
            $message = nl2br($message);// mettre des br


    mysql_query("INSERT INTO livreor VALUES('', '".$pseudo."', '".$message."')");
    }
    //On écrit les liens avec une boucle
    $nbr_msg_page = 20;
    $retour = mysql_query("SELECT COUNT(*) AS nbr_total_de_msg FROM livreor");//on compte...
    $donnees = mysql_fetch_array($retour);// on en fait un array...
    $nbr_total_de_msg = $donnees['nbr_total_de_msg'];//on le transforme en une variable!

    $nbr_de_pages = ceil($nbr_total_de_msg / $nbr_msg_page);

    for($pagei = 1; $pagei <= $nbr_de_pages; $pagei++)
    {
        echo '<a href="livreor.php?page=' . $pagei . '">' . $pagei . '</a><hr /> ';
    }
    /*-------------
    Etape finale: afficher les messages
    ------------*/

    if (isset($_GET['page']))
    {
    $page = $_GET['page'];
    }
    else
    {
    $page = 1;
    }
    //calcul premiere page
    $premier_msg_affiche = $page - 1 * $nbr_msg_page;
    $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' .$premier_msg_affiche.', ' .$nbr_msg_page);


    while ($donnees = mysql_fetch_array($reponse))
    {
        echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
    }
    mysql_close();
    ?>
    </body>
    </html>


    ET la ligne 74
    while ($donnees = mysql_fetch_array($reponse))
    {
        echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
    }


    Et voici le lien = Livre d'or
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2006 à 16:47:29

      Es-ce que ta table se nomme bien livreor ? ps: edit vite ton code, le mot de pass et ton login ...
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2006 à 16:48:36


        $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT '.$premier_msg_affiche.', ' .$nbr_msg_page);

        tu as mis un espace en trop avant $premier_msg.
        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2006 à 16:55:13

          réctifié, mais ca n'arrange pas le problême....
          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2006 à 18:20:03

            Par hasard :
            $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT '.$premier_msg_affiche.', '.nbr_msg_page.'') or die(mysql_error());


            a+
            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2006 à 8:18:17

              ah oui ca j'ai oublié de dire, je l'ai fait et y me dit = Erreur de syntaxe près de '-19, 20' à la ligne 1
              Mais je vois pas ou c'est? Quand même pas a la premiére ligne?
              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2006 à 9:57:44

                Il voulait dire la première ligne de ton mysql_query en fait ^^

                Le problème vient du fait que $premier_msg_affiche est négatif (il correspond à -19 :p ). Faut que tu fasse des echos de variables un peu partout voir si tu t'es pas planté
                • Partager sur Facebook
                • Partager sur Twitter
                  20 février 2006 à 21:32:52

                  j'ai trouvé! j'ai fait une echo de
                  $premier_msg_affiche. = -19
                  $page=1
                  $nbr_msg_page= 20
                  Tout le probleme se situait dans cette ligne de code
                  $premier_msg_affiche = $page - 1 * $nbr_msg_page;


                  Si on suit les mathématique on fait d'abord les multiplication (1 * 20 = 20) puis le reste (1-20 = -19)
                  Alors que si on fait ça=
                  $premier_msg_affiche = ($page - 1) * $nbr_msg_page;

                  On calcule d'abord $page - 1(1-1 = 0) puis on multiplie 0*20 =0
                  Ouais!
                  • 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