Quel est le problème dans mon minitchat ?

Fermé
Minato-Naruto Messages postés 37 Date d'inscription mardi 1 septembre 2009 Statut Membre Dernière intervention 26 avril 2011 - 14 févr. 2010 à 18:27
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 - 14 févr. 2010 à 18:48
Bonjour, j'aimerais savoir si dans mon code il y a quelque chose qui cloche, ou si l'on peut simplifier le code que j'ai fait. Aussi, j'aimerais que l'on me dise comment faire pour que mon formulaire soir en bas, et que au dessus, le texte s'affiche de bas en haut, et quand il y a un petit peu trop de message, un curseur s'affiche svp. Et aussi, qu'à côté du pseudo il y est l'heure qui s'affiche entre parenthèses et en italique
Merci d'avance.
<!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>Test PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  </head>
 
  <!-- Toute la page -->
  <body oncontextmenu="return false">
  <div id="en_tete"></div> <!-- La bannière tout en haut de la page -->
<div id="corps"> <!-- Le corps de ma page -->
<?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", "" ) or exit(mysql_error());
        mysql_select_db("minaru" ) or exit(mysql_error());
// Maintenant on peut afficher ce qu'on a recueilli
        // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
        $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])) or exit(mysql_error());
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])) or exit(mysql_error());
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')" ) or exit(mysql_error());
        // On se déconnecte de MySQL
       
    }
}
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
// Tout d'abord le formulaire :
?>
<center>
<div class="chat">
<?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", "" ) or exit(mysql_error());
mysql_select_db("minaru" ) or exit(mysql_error());
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID LIMIT 0,30" ) or exit(mysql_error());
// On se déconnecte de MySQL
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><strong><span class="pseudo"><?php echo nl2br($donnees['pseudo']); ?></span> dit</strong> :
<span class="message"><?php echo nl2br($donnees['message']); ?></span></p>
<?php
}
// Fin de la boucle, le script est terminé !
?>
<form action="index.php" method="post">
<p>
<label for="pseudo">Pseudo : </label><br />
<input type="text" name="pseudo" /><br />
<label for="message">Message : </label><br />
<textarea name="message" rows="7" cols="35"></textarea><br />
<input type="submit" value="Envoyer" />
</p>
</form>
</center>
</div>
  </body>
</html>


Merci d'avance

1 réponse

artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146
14 févr. 2010 à 18:48
Bonjour, déjà une remarque : tu mes trop de "or exit(mysql_error());
Ensuite cette solution n'est pas la meilleure, moi il y a quelque temps que je l'évite pour deux raison : elle arrête totalement le code, et elle affiche une erreur mysql à l'utilisateur qui peut même parfois voir ton serveur de publication
donc ce que je te propose c'est ça :
function connexion(){
mysql_connect("localhost","root","");//on tente de se connecter
if(mysql_error()){//s'il y a une erreur
     $erreur=error_log(mysql_error().date('d/m/Y h\hi\m',time()),3,"journal_erreur.log");//on la stock dans un fichier log erreur que tu dois créer avant
     $erreur=false;
}
else {
mysql_select_db("ta_db");
$erreur=true}
return erreur}

//et ensuite tu vas mettre tout ton code :
if(connexion()){
/*là tu mets tout ce que ton code doit faire dès qu'il est connecté
*comme par exemple afficher ton minichat
*ou que sais-je encore
*/
}
else{
echo('il y a eu une coupure de connexion veuillez essayer plus tard');


ensuite autre remarque, l'usage de la balise "center" est très déconseillée, il est préférable d'utiliser une feuille CSS

ensuite il est embêtant de toujours faire des connexions-déconnexion au serveur, connexte toi une fois au début et déconnecte toi à la fin
Pour le code, apparement il est bon, mais si tu as une erreur n'hésite pas...
0