Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problemes durant le TP Minichat de Matéo

    7 mars 2007 à 19:32:29

    bonjour a tous,

    voili voilou, despuis tres longtemps, je connais ce site et ces fameux tuto des Zer0 ;) Les tutos sont clairs, bien présenté, et Matéo nous explique si bien les choses compliqués ;) mici a lui :)

    Apres quelques recherches sur le forum ( yen a eu beaucoup, des gens comme moi qui avaient des problemes dans le minichat... ^^ ) j'ai toujours pas trouvé de solution...Donc, je fais appel a vous, les fous du PHP ;)

    Voila, je me suis fait le TP Minichat...Apres avoir comparé ( et réparé quelques petites choses ) j'ai voulu tester, mais on m'affichait toujours le meme probleme... :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\minichat2.php on line 73

    Pour l'erreur, j'ai utilisé le script de matéo ( je l'ai appelé minichat2.php et j'ai crée une table "minichat2" dans la base "test")
    Le code se trouve dans le deuxieme post...Ce qui est sur, c'est que le probleme ne vient pas du nom de mes champs, ni du nom de la base ou de la table ;)


    Donc, j'ai copié collé le script de Matéo, biensur, j'ai changé le host, le pseudo, le pass et le nom de la base :

    j'ai mis :
    mysql_connect("localhost", "root", "");
    mysql_select_db("test");

    voila mon code si vous le voulez :

    minichat.php

    <html>
    <body>
    <?php
    if (isset($_POST['pseudo']) AND isset($_POST['message']))
    {
            if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
            {
                    mysql_connect("localhost", "root", "");
                    mysql_select_db("test");
                   
                    $pseudo = htmlentites($_POST['pseudo']);
                    $message = htmlentites($_POST['message']);
                   
                    mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
                   
                    mysql_close();
            }
    }
    ?>

    <div>
    <form action="minichat.php" method="post">
    <p>Pseudo : <input type="text" name="pseudo" /></p>
    <p><textarea name="message" span="8" rows="4"></textarea></p>
    <input type="submit" value="envoyer" />
    </form>
    </div>


    <div>
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("test");

    $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0,9");

    mysql_close();

    while ( $msg = mysql_fetch_array($reponse) )
    {
    ?>
    <p>

    </p>
    <?php
    }
    ?>
    </div>


    </body>
    </html>


    Sur le forum, j'ai essayé une solution : mysql_fetch_assoc( ..... ) mais rien n'y fait, c'est toujours la meme erreur ( en remplacer "array" par "assoc" ^^ )


    Je pense que le probleme vient de ma base de donnée...En effet, je n'ai pas fait comme dans le TP...

    Quand j'ai crée ma table "minichat" dans la base "test", j'ai mis 3 champs...Pour l'instant tout va bien :p

    Ensuite, j'ai mis comme champs : id, pseudo et message...
    et j'ai mis id en "primaire" et "auto_increnment"
    Le probleme vient des 2 autres...Mysql me dit que ce ne sont pas des nombres...Pourtant, j'avais bien mis VARCHAR ( char pour character, j'imagine ^^ ) pour les deux, mais rien n'y fait, il refuse de me creer la table...
    C'est en mettant "text" aux deux que Mysql accepte la création de la table ( comme dans les premiers pas dans mysql....nous utilision le type de variable "text" ;) )

    Voila la seule difference entre sa base et la mienne...

    Bref, je suis vraiment trop débutant en PHP pour comprendre quelque chose ^^

    Aidez-moi s'il vous plait !! je suis bien motivé pour apprendre le PHP, faut que j'en profite ^^

    Encore merci a vous tous, et bonne continuation Matéo

    A+
    Léo
    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2007 à 20:59:10

      Citation : Message d'erreur

      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\minichat2.php on line 73


      mysql_connect("localhost", "root", "");
      mysql_select_db("test");
                     
                                 
      mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
                     
      <form action="minichat.php" method="post">

      mysql_connect("localhost", "root", "");
      mysql_select_db("test");

      $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0,9");

      Je me suis rendu compte que le message d'erreur évoque minichat2.php alors que dans ton script, ton formulaire pointe sur minichat.php. D'autre part, as-tu vérifier le nom de ta BBD, ta table et tes champs ? Les informations sont-elles correctement enregistrées ?
      Le choix de champ "text" parait approprié.

      Craft
      </span>
      • Partager sur Facebook
      • Partager sur Twitter
        7 mars 2007 à 21:38:48

        salut Craft ;)

        merci pour ton aide ;)

        Oui, en faite, minichat.php c'est mon script, et minichat2.php pointant vers lui-meme ( et la table minichat2 ) c'est le script de Matéo...

        Donc, c'est sur, le probleme ne vient pas de la ^^

        En faite, dans ma base de donnée, il y a 2 tables dans la base test :
        - minichat
        - minichat2

        et ils sont pareils ;)


        L'erreur que je vous ai donnée est celle que le script de matéo m'a sorti... voila le code ( il s'apelle minichat2.php, comme dis au dessus, j'ai recrée une nouvelle table pour etre sur de ne pas se tromper dans les champs, s'appelant minichat2.php )

        <!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" lang="fr">
            <head>
                <title>Mini-chat</title>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            </head>
            <style type="text/css">
            form
            {
            text-align:center;
            }
            </style>
            <body>


        <?php
        if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
        {
            if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
            {
                // D'abord, on se connecte à MySQL
                mysql_connect("localhost", "root", "");
                mysql_select_db("test");

                // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
                $message = htmlentities ($_POST['message']);
                $pseudo = htmlentities ($_POST['pseudo']);

                // Ensuite on enregistre le message
                mysql_query("INSERT INTO minichat2 VALUES('', '$pseudo', '$message')");

                // On se déconnecte de MySQL
                mysql_close();
            }
        }


        // Que l'on ait enregistré des données ou pas...
        // On affiche le formulaire puis les 10 derniers messages

        // Tout d'abord le formulaire :
        ?>



        <form action="minichat2.php" method="post">

        <p>
        Pseudo : <input type="text" name="pseudo" /><br />
        Message :  <input type="text" name="message" /><br />

        <input type="submit" value="Envoyer" />
        </p>

        </form>



        <?php

        // Maintenant on doit récupérer les 10 dernières entrées de la table
        // On se connecte d'abord à MySQL :
        mysql_connect("localhost", "root", "");
        mysql_select_db("test");

        // On utilise la requête suivante pour récupérer les 10 derniers messages :
        $reponse = mysql_query("SELECT * FROM minichat2 ORDER BY ID DESC LIMIT 0,10");

        // On se déconnecte de MySQL
        mysql_close();

        // Puis on fait une boucle pour afficher tous les résultats :
        while ($donnees = mysql_fetch_array($reponse) )
        {
        ?>

        <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>



        <?php
        }
        // Fin de la boucle, le script est terminé !
        ?>


            </body>
        </html>



        Ca doit venir de la BDD ou du code : mysql_fetch_array($reponse)


        mici a+
        Léo
        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2007 à 21:00:18

                 mysql_query("INSERT INTO minichat2 VALUES('', '$pseudo', '$message')");


          Je pense que l'erreur est là : il faut préciser les champs à remplir

          donc ça doit donner :

          mysql_query("INSERT INTO minichat2(id, pseudo, message) VALUES('', '$pseudo', '$message')");

          enfin chez moi mon code est ainsi

          Sinon pour en revenir à la base qui ne veux pas se créer a cause du varchar j'ai le même problème. Quelqu'un sait comment le résoufre? Personnellement j'ai mis tinytext à la place (il me semble que c'est pour les petits textes) mais je me demande quand même car M@teo parle dans tous ses tp de varchar (j'en suis au script de news) alors que ça ne semble pas marcher. J'aimerais savoir pourquoi chez moi ( et pas que chez moi apparemment :p ) ça ne fonctionne pas.
          • Partager sur Facebook
          • Partager sur Twitter
            9 mars 2007 à 23:10:14

            Bonjour,

            Citation : Tamwind

            Sinon pour en revenir à la base qui ne veux pas se créer a cause du varchar j'ai le même problème. Quelqu'un sait comment le résoufre? Personnellement j'ai mis tinytext à la place (il me semble que c'est pour les petits textes) mais je me demande quand même car M@teo parle dans tous ses tp de varchar (j'en suis au script de news) alors que ça ne semble pas marcher. J'aimerais savoir pourquoi chez moi ( et pas que chez moi apparemment :p ) ça ne fonctionne pas.



            Il suffit juste de rajouter dans la colone "taille et valeurs" le nombre de caractére maximum moi par exemple j'ai mis 255 comme l'a indiquez M@teo.

            • Partager sur Facebook
            • Partager sur Twitter

            Problemes durant le TP Minichat de Matéo

            × 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