Chat php

voila maintenant je fait un chat en php (encore pour l'ecole) et j'ai une erreur; les données s'ajoutent bien mais je n'arrive pas a les affichés.
<?php
$connexion=mysql_connect("localhost","root","");
$testbase=mysql_select_db("rencontre");
$req = "SELECT * FROM chat ORDER BY ID DESC LIMIT 0,30";
$result = mysql_query($req);
mysql_close();
while ($val = mysql_fetch_array($result))
{
echo "<b>", $val["pseudo"],"</b>";
echo " : ";
echo $val["message"];
echo "<br />";
}
?>
l'erreur:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\rencontre\chat.php on line 49

bien sur essayer tj de repondre a mes autres probleme
un grand merci a tous

22 réponses

  1. Bonjour a tous!
    Voila, j'ai un site sur free.
    c'est : http://sica007.free.fr/

    J'ai activer bien sur php et mysql.

    Donc, j'envoie le fichier avec file Zilla sur mon ftp.

    puis qd, j'ai fini, je reviens sur
    http://sica007.free.fr/chat/install.php

    Regardez ce qui est marque sur la liste...il y a juste un endroit ou ce n'est pas OK....

    En bas, j'ai 2 problemes.

    Warning: Unknown(): open(/mnt/112/sdc/7/1/sica007/sessions/sess_37f5be9dedf8cedcae31b0bd34cc5652, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

    Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/112/sdc/7/1/sica007/sessions) in Unknown on line 0

    Pourriez vous m'expliquez s'il vous plait?
    Ca peut vous paraitre tout betement.

    Merci à l'avance pour l'aide.Chez urgent.
    0
    1. Contributeur
      Je veux pas te décevoir mais c'est pas ca du tout !
      Il faut que tu fasse une requete sur ta base pour selectionner les utilisateurs qui ont le même pseudo et passwd que ceux passés en paramètre à topn script. Si tu n'a pas de résultat alors, ce n'est pas bon. Si tu as un résultat alors c'est bon. Si tu as plusieurs résultat (c'est à dire plusieurs utilisateur qui correspondent au pseudo et mot de passe) alors tu as un pb dans ta base.
      Il faut que tu ai un truc du genre :
      if(isset($_POST['loggin'])) {
        $res =  mysql_query("SELECT id_utilisateur 
                                     FROM `utilisateur`
                                     WHERE pseudo = '".$_POST['pseudo']."'
                                     AND paswd = '".$_POST['paswd']."'",$connexion);
        $lignes = mysql_num_rows($res);
        if( $lignes <= 0 )
            echo "pas de profil correspondant<BR>";
        else if( $lignes = 1 )
            echo "c bon<BR>";
        else
            echo "probleme redondance dans la base<BR>"; 
      
      0
      1. tant qu'on y est regardez le code du mot de passe;
        <?php

        if(isset($_POST['cmdok']))
        {
        $code=$_POST['code'];
        $pseudo=$_POST['pseudo'];
        $bpseudo=mysql_query("SELECT id FROM inscrit where pseudo = '$pseudo' ");
        $bcode=mysql_query("SELECT id FROM inscrit where code = '$code' ");

        if ($bpseudo=$bcode)
        {
        echo "ok";
        }
        else
        {
        echo "veuillez recommencer!";
        echo "<br> ou Inscrivez-vous </br>";
        }
        }
        ?>
        c'est le truc connexion qu'il me manque?
        0
        1. tout ca marche (enfin le mot de passe je suis pas loin d'y arriver je pense) et pour les couleurs je rajoute ou et quoi?
          0
          1. Contributeur
            C'est exactement la même chose que tout à l'heure :
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
            <html>
            <head>
            <title>Bienvenu dans le chat</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            </head>
            <body>
            <?php
            if (isset($_POST['pseudo']) && isset($_POST['message']))
            {
            	if ($_POST['pseudo'] != "" && $_POST['message'] != "")
            	{
            		$connexion=mysql_connect("localhost","root","") OR die("pb connexion mysql");
            		mysql_select_db("rencontre",$connexion) OR die("pb selection base");
            		$pseudo=htmlentities($_POST['pseudo'],ENT_QUOTES);
            		$msg=htmlentities($_POST['message'],ENT_QUOTES);
            		$req="INSERT INTO chat (id,pseudo,message) VALUES('','".$pseudo."','".$msg."')";
            		$result=mysql_query($req,$connexion);
            		mysql_close();
            	}
            	else
            	{
            		echo "probléme d'ajout";
            	}
            }
            ?>
            <form name="form1" id="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
            
            <table width="80%" border="0" cellspacing="0" cellpadding="0">
            <tr>
            <td width="18%" height="24"> PSEUDO </td>
            <td widht="82%"> <input name="pseudo" type="text" id="pseudo" /></td>
            </tr>
            <tr>
            <td> Message </td>
            <td><input name="message" type="text" id="message" size="100" /></td>
            </tr>
            </table>
            <p>
            <input type="submit" name="cmdok" value="Ajouter?"/>
            </p>
            </form>
            <?php
            	$connexion = mysql_connect("localhost","root","") OR die("pb connexion mysql");
            	mysql_select_db("rencontre",$connexion) OR die("pb selection base");
            	$req = "SELECT * FROM chat ORDER BY ID";
            	$result = mysql_query($req, $connexion);
            
            	mysql_close($connexion);
            
            	while ($val = mysql_fetch_array($result))
            	{
            		echo "<b>". $val['pseudo']."</b> : ".$val['message']."<BR>";
            	}
            ?>
            
            </body>
            </html> 
            
            0
            1. merci mon chat marche impecablement petit plus enfin si vous voulez m'expliquer vite fait. si je veux ajouter des couleurs? chacun a le chois d'ecrire d'une couleur.
              je met quoi comme code et ou?
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>
              <title>Bienvenu dans le chat</title>
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              </head>
              <body>
              <?php
              if (isset($_POST['pseudo']) && isset($_POST['message']))
              {
              if ($_POST['pseudo'] !=null && $_POST['message'] !=null)
              {
              $connexion=mysql_connect("localhost","root","");
              $testbase=mysql_select_db("rencontre");
              $pseudo=htmlentities($_POST['pseudo'],ENT_QUOTES);
              $msg=htmlentities($_POST['message'],ENT_QUOTES);
              $req="INSERT INTO chat (pseudo,message) VALUES('$pseudo','$msg')";
              $result=mysql_query($req);
              mysql_close();
              }
              else
              {
              echo "probléme d'ajout";
              }
              }
              ?>
              <form name="form1" id="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

              <table width="80%" border="0" cellspacing="0" cellpadding="0">
              <tr>
              <td width="18%" height="24"> PSEUDO </td>
              <td widht="82%"> <input name="pseudo" type="text" id="pseudo" /></td>
              </tr>
              <tr>
              <td> Message </td>
              <td><input name="message" type="text" id="message" size="100" /></td>
              </tr>
              </table>
              <p>
              <input type="submit" name="cmdok" value="Ajouter?"/>
              </p>
              </form>
              <?php
              $connexion = mysql_connect("localhost","root","") OR die("pb connexion mysql");
              mysql_select_db("rencontre",$connexion) OR die("pb selection base");
              $req = "SELECT * FROM chat ORDER BY ID";
              $result = mysql_query($req, $connexion);

              mysql_close($connexion);

              while ($val = mysql_fetch_array($result))
              {
              echo "<b>". $val['pseudo']."</b> : ".$val['message']."<BR>";
              }
              ?>

              </body>
              </html>

              MERCI MILLE FOIS
              0
              1. ben y nous faudrai un meilleur prof.
                non sans rire merci
                et est ce que ca pourrait etre la meme raison pour laquel met mot de passe ne fonctionne pas? pourtant j'ai dejà une clef primaire dans cette autre table. je peux en mettre plusieur?
                0
                1. Contributeur
                  Ahhh, c'est donc, ca !!!
                  Mais il te faut mettre des clés primaire, sinon comment veut tu retrouver tes élément dans ta table quand tu fais des requetes !!
                  En plus dans ton code tu fais un :
                  select * from chat order by id
                  

                  Mais si tu n'a pas d'id, ce n'est pas la peine de chercher plus loin !
                  Vu ce que tu dit, je te conseil de revoir tes cours...

                  Pour ce qui est de ta table chat, met un id en autoincrement (INT).
                  0
                  1. pseudo, message
                    c'est tout ce que cette table comprend
                    aucune cle primaire
                    et tout les deux des varchar
                    et ca ne marche tj ca me déprime ce truc!
                    en plus y a plein d'autre truc qui marche pas (demande de mot de passe, lor d'une inscription: remplissage de combo box)
                    0
                    1. Contributeur
                      oui, dsl, ben une desciption de "Chat", c'est à dire tous les champs qu'elle comprend.
                      0
                      1. rencontre n'est pas une table mais la base de données; la table c'est chat
                        rencontre est ma base de données
                        0
                        1. Contributeur
                          Et puis au passage donne moila description de ta table "rencontre"
                          0
                          1. Contributeur
                            Alors met cette requete à la place de la tienne :
                            $req = "SELECT * FROM chat ORDER BY ID";
                            
                            0
                            1. tj pareil
                              Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\rencontre\chat.php on line 51
                              0
                              1. Contributeur
                                Met ca et dit moi ce que ca donne :

                                <?php
                                $connexion = mysql_connect("localhost","root","") OR die("pb connexion mysql");
                                mysql_select_db("rencontre",$connexion) OR die("pb selection base");
                                $req = "SELECT * FROM chat ORDER BY ID DESC LIMIT 0,30";
                                $result = mysql_query($req, $connexion);
                                
                                mysql_close($connexion);
                                
                                while ($val = mysql_fetch_array($result))
                                {
                                echo "<b>". $val['pseudo']."</b> : ".$val['message']."<BR>";
                                
                                }
                                ?>
                                
                                0
                                1. je veux vraiment pas etre chiant mais,

                                  c'e<?php
                                  $connexion=mysql_connect("localhost","root","");
                                  $testbase=mysql_select_db("rencontre");
                                  mysql_select_db("rencontre", $connexion);
                                  $req = "SELECT * FROM chat ORDER BY ID DESC LIMIT 0,30";
                                  $result = mysql_query($req, $connexion);

                                  mysql_close();
                                  while ($val = mysql_fetch_array($result))
                                  {
                                  echo "<b>", $val["pseudo"],"</b>";
                                  echo " : ";
                                  echo $val["message"];
                                  echo "<br />";
                                  }
                                  ?>st bien ce que vous m'avez dit?
                                  ben j'ai une erreur
                                  Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\rencontre\chat.php on line 49
                                  0
                                  1. MERCI
                                    j'ai appris plus en 2jours que dans l'année pour php.
                                    bon maintenant vais essayer
                                    0
                                    1. Contributeur
                                      Non c pas ca :
                                      Quand tu veux faire une requete sur une base, tu dois en premier lieu te connecter à cette base, et c'est ce que tu fais en mettant le code suivant :
                                       $connexion=mysql_connect("localhost","root","");
                                      // Tu viens de faire une connexion à la base.
                                      // Maintenant tu selectionne la base de donnée sur laquelle
                                      // tu souhaite travailler :
                                       mysql_select_db("rencontre",$connexion);
                                      

                                      Tu as maintenant une varaible de connexion ($connexion) et as selectionné la base "rencontre". Quand tu fais des requetes sur cette base, tu dois y joindre la variable de connexion "$connexion" qui fais le lien entre ton code et la base SQL que tu viens d'ouvrir.
                                      Ainsi quand tu fais une requete, tu ajoute :
                                      $result = mysql_query($req, $connexion);
                                      

                                      Maintenant, si ta base existe, ca devrait marcher.
                                      0
                                      1. pq faire passer la variable de test? je pige pas et ca ne marcheras pas.
                                        0
                                        1. Contributeur
                                          Il fait que tu remplace :
                                           $result = mysql_query($req);
                                          

                                          par :
                                          $result = mysql_query($req, $testbase); 
                                          
                                          0
                                          • 1
                                          • 2