IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Livre d'or gros problème


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut [Tableaux] Livre d'or gros problème
    Bonjour j'ai un gros souci avec mon script pour faire mon livre d'or
    MySQL
    J'ai créer une table 'livreor' avec 3 champs
    - id en INT incrémentation auto
    - pseudo en VARCHAR taille 255
    - message en TEXT

    Voici mon script PHP
    Remarque: j'ai effacé les mots de passe de ma base de donnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <!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>Livre d'or</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <style type="text/css">
            form, .pages
            {
                text-align:center;
            }
            </style>
        </head>
     
        <body>
     
        <form method="post" action="livreor.php">
        <p>Que pensez vous du site? <br />
    	J'attends vos réactions</p>
     
        <p>
            Pseudo : <input name="pseudo" /><br />
            Message :<br />
            <textarea name="message" rows="8" cols="35"></textarea> <br />
            <input type="submit" value="Envoyer" />
        </p>
        </form>
     
    <p class="pages">
    <?php
    mysql_connect("xxx", "xxx", "xxx");
    mysql_select_db("xxx
    ");
     
    // --------------- Etape 1 -----------------
    // 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 2 -----------------
    // 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> ';
    }
     
    ?>
     
    </p>
     
    <?php
    // --------------- Etape 3 ---------------
    // Maintenant, on va afficher les messages
    // ---------------------------------------
     
    if (isset($_GET['page']))
    {
        $page = $_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><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
    }
     
    mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
    ?>
     
    </body>
    </html>
    Voici les message d'erreur quand je vais sur livredor.php

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/t/r/troisieme-alivredor/site/livredor.php on line 59
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/t/r/troisieme-alivredor/site/livredor.php on line 95
    Merci d'avance

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Rajoute des or die après tes mysql_query pour voir ce qui foire (perso je vois pas...).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = mysql_query(requete) or die(mysql_error());

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Parse error: syntax error, unexpected T_VARIABLE in /www/sites/1/ifrance.com/t/r/troisieme-alivredor/site/livredor.php on line 96
    Bizarre il affiche une parse error
    Je te met le nouveau code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <!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>Livre d'or</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <style type="text/css">
            form, .pages
            {
                text-align:center;
            }
            </style>
        </head>
     
        <body>
     
        <form method="post" action="livreor.php">
        <p>Que pensez vous du site? <br />
    	J'attends vos réactions</p>
     
        <p>
            Pseudo : <input name="pseudo" /><br />
            Message :<br />
            <textarea name="message" rows="8" cols="35"></textarea> <br />
            <input type="submit" value="Envoyer" />
        </p>
        </form>
     
    <p class="pages">
    <?php
    mysql_connect("xxx", "xxx", "xxx");
    mysql_select_db("xxx
    ");
     
    // --------------- Etape 1 -----------------
    // 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 . "')");
    }
    $res = mysql_query(requete) or die(mysql_error());
    // --------------- Etape 2 -----------------
    // 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');
    $res = mysql_query(requete) or die(mysql_error());
    $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> ';
    }
     
    ?>
     
    </p>
     
    <?php
    // --------------- Etape 3 ---------------
    // Maintenant, on va afficher les messages
    // ---------------------------------------
     
    if (isset($_GET['page']))
    {
        $page = $_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 . ', ' . 
    $res = mysql_query(requete) or die(mysql_error())
    $nombreDeMessagesParPage);
     
    while ($donnees = mysql_fetch_array($reponse))
    {
        echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
    }
     
    mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
    ?>
     
    </body>
    </html>

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    pour ton premier message :

    parce que $retour en ligne 58 est un select count, dont le but est de compter un nombre d'enregistrements, mais pas leur contenu

    fais tout simplement SELECT * FROM livredor WHERE condition

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    pour ton second message :

    tu es fatigué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . 
    $res = mysql_query(requete) or die(mysql_error())
    $nombreDeMessagesParPage);
    ne ressemble à rien :
    tu ouvres un parenthèse que tu ne refermes pas
    tu fais une concaténation de mysql_query(etc avec $res
    tu définis une variable $nombreDeMessagesParPage par rien et tu fermes avec une parenthèse

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Pour ton message j'ai essayer de faire la requete mysql mais ça n'a rien donné de mieux.
    Quant à ton second message, je ne sais pas ce qu'il aurait fallu faire
    C'est celui qui m'a répondu avant qui m'a dit de faire cette variable $res

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    ben oui mais il faut un tout petit peu réfléchir quand même

    pour la première question : j'ai fais un select standard, mais sans regarder ton code dans le détail qui est trop long à étudier surtout à cette heure :
    donc si ta table est livreor, il fait faire FROM livreor et non FROM livredor.
    la clause WHERE veut dire que tu fais une sélection des enregistrements selon des conditions. le terme condition est générique : ce sont tes conditions de recherche, par exemple WHERE le_champ_pseudo_de_ta_table LIKE 'le_nom_de quelquun'. cette clause n'est pas indispensable et dépend de ce que tu désires obtenir.
    commence donc par faire tu auras la totalité des enregistrements avec la totalité des champs. ton mysql_fetch_array fonctionnera correctement sans générer de fautes. mais je répète : tu auras tous les enregistrements : si tu désires en sélectionner selon des critères bien précis, il faut utiliser WHERE

    pour la seconde question : oui bien sûr que amara t'a dit de la rajouter cette ligne. encore faut-il la mettre au bon endroit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . 
    $nombreDeMessagesParPage);
    $res = mysql_query(requete) or die(mysql_error())
    fonctionnera certainement mieux. car dans ton code tu finissais la ligne $reponse etc par un point, indiquant une concaténation avec la ligne suivante, soit $res. mais le but était de concaténer $nombredemessagesparpage pour définir le paramètres de LIMIT.
    et bien sûr ne pas oublier que toute instruction doit se terminer par un point-virgule !

    il faut quand-même acquérir les bases élémentaires de php si tu souhaites faire un script en php

  8. #8
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par mesdy
    C'est celui qui m'a répondu avant qui m'a dit de faire cette variable $res
    Hum merci ça fait plaisir...



    Sinon oui le but c'est pas de recopier tel quel les indications qu'on donne lol, il faut un minimum de réflexion derrière l'objectif étant toujours de comprendre ce que l'on fait (surtout si on débute d'ailleurs...).

    francis_m a bien pris le temps d'expliquer donc ça devrait aller maintenant.

    Bon courage pour la suite en tout cas...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DROP TABLE IF EXISTS `livreor`;
    CREATE TABLE IF NOT EXISTS `livreor` (
      `id` int(11) NOT NULL auto_increment,
      `pseudo` varchar(255) NOT NULL default '',
      `message` text NOT NULL,
      KEY `id` (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    J'ai fait cette requette et ça marche impeccable

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lecture de FichierXML] <--Gros problème
    Par waldo2188 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 18/03/2005, 17h15
  2. gros problème id
    Par Sékiltoyai dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/12/2004, 11h53
  3. Gros problème avec la facturation de Tiscali
    Par Harry dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 21/10/2004, 18h55
  4. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 09h21
  5. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo