Minichat - Connection BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Minichat - Connection BDD

par Xentrique » 18 avr. 2006, 14:15

Ah, merci beaucoup :)
La ca marche deja mieux :)
J'ai rajouter un <br> pour faire un retour a la ligne dans la boucle, sinon c'est illisible.
Tout fonctionne, merci bien :)

par Ryle » 18 avr. 2006, 13:57

Euh vi normal en fait... tu ne testes pas les bonnes variables pour récupérer les données du formulaire : c'est $_POST et pas $POST_

(et moi comme une nouille j'ai copié/collé sans y faire attention :))

par Xentrique » 18 avr. 2006, 13:20

Merci de vos réponses ;)

Donc j'ai mis les mysql_error(), ceux ci m'ont retourner : Aucune base selectionné. La seulement, j'ai vu que je m'etait tromper dans le nom de ma base, qui n'est pas 'minichat' mais 'test'. "minichat' est la table, c'est bien ca ? Quel bete erreur :P

En résumé :
- La lecture de la base de donnée fonctionne.
- L'inscription de donné dans la base de donnée ne fonctionne pas.

Voici mon code actualisé :

Code : Tout sélectionner

<?php //On défini ce qui est entré dans les cases du formulaire. if (isset ($POST_['pseudo']) AND isset ($POST_['message'])) { if ($POST_['pseudo'] != NULL AND $POST_['message'] != NULL) { $pseudo = htmlentities ($_POST['pseudo']); $message = htmlentities ($_POST['message']); //On se connecte à la base sql. mysql_connect("localhost","root", "") OR die('Erreur de connexion '.mysql_error()); mysql_select_db("test"); //On insert les valeurs de $pseudo et $message dans le base sql. mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')") OR die('Erreur '.mysql_error()); //On se deconnecte de la base sql. mysql_close(); } } //Indépendemment, on affiche, dans tout les cas, le forumulaire de saisi. ?> <form action="minichat.php" method="post"> <p><b>Pseudo :</b> <input type="text" name="pseudo"></p> <p><b>Message :</b> <input type="text" name="message"></p> <input type="submit" value="Valider" name="boutton"> </form> <?php //On se reconnecte à la base sql. mysql_connect("localhost","root", "") OR die('Erreur de connexion '.mysql_error()); mysql_select_db("test"); //On affiche les informations de la base sql. $chat = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10") OR die('Erreur '.mysql_error()); mysql_close(); //On a fermer la connection sql. On creer une boucle. if ($chat) { while ($donnees = mysql_fetch_array($chat)) { ?> <b><?php echo $donnees['pseudo']; ?></b> : <?php echo $donnees['message']; ?> <?php } } ?>

par Ryle » 18 avr. 2006, 12:48

Nonon, la première syntaxe est la bonne, sinon il ne bouclera pas sur chaque ligne de résultat, mais seulement sur la première...

le problème vient effectivement du fait que $chat ne contient pas de données (ou que le format des données qu'il contient n'est pas une ressource mysql valide etc.) Il te suffit normalement juste de tester s'il est défini avant de te lancer dans le while :
if($chat) {
  while ($donnees = mysql_fetch_array($chat)) {
    ...
  }
}
Tu peux aussi entrer des données en base à la main pour le tester :)

Par contre ton insertion devrait fontionner... ajoute un or die (mysql_error()) après tes mysql_query, cela te permettra d'en savoir un peu plus si une erreur à lieu...

Sinon à priori "isset ($POST_['pseudo'])" et "$POST_['pseudo'] != NULL", c'est la meme chose... s'il est null, il n'est pas défini :) un $POST_['pseudo'] != "" me semblerait plus logique :)

par jojolapine » 18 avr. 2006, 12:33

je pense qu'il faudrait modifié ceci:
while ($donnees = mysql_fetch_array($chat))
en ceci:
$chat=mysql_fetch_array($chat)
while ($donnees = $chat)
mais je suis pas sur

Minichat - Connection BDD

par Xentrique » 18 avr. 2006, 12:28

Bonjour,
Alors voilà, sur un autre site, je dois faire un minichat comme travaux pratique. Je pense que mon code est bon ( à verifier ), mais je crois que le probleme vient de la base de donné :s Aucune connection, j'ai l'impression.

Voici mon code :

Code : Tout sélectionner

<?php //On défini ce qui est entré dans les cases du formulaire. if (isset ($POST_['pseudo']) AND isset ($POST_['message'])) { if ($POST_['pseudo'] != NULL AND $POST_['message'] != NULL) { $pseudo = htmlentities ($_POST['pseudo']); $message = htmlentities ($_POST['message']); //On se connecte à la base sql. mysql_connect("localhost","root", ""); mysql_select_db("minichat"); //On insert les valeurs de $pseudo et $message dans le base sql. mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')"); //On se deconnecte de la base sql. mysql_close(); } } //Indépendemment, on affiche, dans tout les cas, le forumulaire de saisi. ?> <form action="minichat.php" method="post"> <p><b>Pseudo :</b> <input type="text" name="pseudo"></p> <p><b>Message :</b> <input type="text" name="message"></p> <input type="submit" value="Valider" name="boutton"> </form> <?php //On se reconnecte à la base sql. mysql_connect("localhost","root", ""); mysql_select_db("minichat"); //On affiche les informations de la base sql. $chat = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10"); mysql_close(); //On a fermer la connection sql. On creer une boucle. while ($donnees = mysql_fetch_array($chat)) { ?> <b><?php echo $donnees['pseudo']; ?></b> : <?php echo $donnees['message']; ?> <?php } ?>
Donc voila, s'il y a des erreurs, je ne les ai pas vu, merci de me le dire.
Sinon, le probleme meme est que, j'ai tester en rentrant des informations, rien n'est enregistrer dans la base de donné. Ma BDD s'appelle "minichat", informations d'identification par défault ( "root" / "" ) et le fichier "minichat.php". Donc voila, rien n'est enregistrer et aussi, j'ai cet erreur en bas de ma page :

Code : Tout sélectionner

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\divers\amine\testsphp\minichat.php on line 41
Que je ne comprend pas :s Sans doute resulte tel du fais que $chat ne peut pas avoir de valeur réel vu que les donnés que cette variable doit chercher n'existent pas. Du moin c'est ce que je pense, j'espere etre dans le vrai.
Si ce n'est pas le cas ou pour tout autre critique, merci de me le dire, je les prendrai volontier :)
Amicalement,
Keito.