Bonjour

J'ai rédigé un script php (à partit du tutoriel sur un "minichat") pour l'insertion de message dans une base de données. Mon script marche uniquement lorsqu'il y a préalablement un message dans ma table "minichat".

J'ai géré la non insertion des doublons pour un même utilisateur. J'ai déjà procédé à des vérifications de mon code et d'autres recherches. Mais je n'arrive pas à résoudre ce problème.

Je fournis le code entier du fichier minichat.php
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
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
     <!-- link rel="stylesheet" type="text/css" href="style_div.css"/> -->
    <title>Minichat </title>
    <style type="text/css">
   body
   {
	background-color: gray;
	text-align :center;
   }
   p
  {
        background-color:green;
	text-align :center;
  }
  </style>
  </head>
 <!-- 1) Création du formulaire :  -->
 <body>
	<h3> Espace de communication instantanné </h3>  
	<form action="minichat.php" method="post">
	   <fieldset>
		 <legend>Formulaire pour le livre dor </legend>
		<label for="pseudo"> Pseudo </label>: 
		<input type="text" id="pseudo" name="pseudo" size="10" maxlength="15" />  
		<br /><br />
		<label for="message"> Message </label>: 
		<textarea rows="7" cols="35" id="message" size="200" name="message" maxlength="255"> 
		</textarea>
		<br />
		<input type="submit" value="Envoyer" />
		</fieldset>
		</form>
  		<p class="page">
	<?php
		/* Connexion à MySQL  */
 
	     /* 2) Enregistrement d'un message envoyé :  // Si les variables existent */
	if(isset($_POST['pseudo']) AND isset($_POST['message']))
	{
        	if (($pseudo != NULL AND $message != NULL)
						AND ($doublon['pseudo'] != $pseudo OR $doublon['message'] != $message))
	       {
			// et qu'on a quelque chose à enregistrer	alors on se connecte à MySQL		
	mysql_connect("localhost", "usernonroot", "passwdfordb");
	mysql_select_db("dbname");
	$pseudo = $_POST['pseudo'];
	$message = $_POST['message'];
	$message = nl2br($message);
	$old_message = mysql_query("SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT 0, 1");
	while ($doublon = mysql_fetch_array($old_message))
	// Ecriture du message si, les champs ne sont ni vides ni des doublons
	mysql_query("INSERT INTO minichat (pseudo, message) VALUES ('$pseudo', '$message')") 												or die('Problème de connexion à la base' . mysql_error());
	echo '<p><strong> Un message a été ajouté à la table ! </strong></p>'
          }
  }
	// Comptage des messages : 
	mysql_connect("localhost", "usernonroot", "passwdfordb");
	mysql_select_db("dbname");
	$message_number = mysql_query("SELECT COUNT(*) As nbr_msg FROM minichat ");
	$messages = mysql_fetch_array($message_number);
 
	// Fermeture de la connexion à MySQL
	mysql_close();	
	?>
	<p><strong> Il y a <?php echo $messages['nbr_msg']; ?> dans la base de données </strong></p>
	<br />
<?php
      /* 3) Lecture dans une table pour l'affichage des messages : */
	mysql_connect("localhost", "usernonroot", "passwdfordb");
	mysql_select_db("dbname");	
	$req = mysql_query("SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT 0, 10") or die('Problème d\'accèse aux données' . mysql_error());
	mysql_close();
	while($messages = mysql_fetch_array($req))
	{
?>
  <p>
	<strong>
	<?php echo $messages['pseudo']; ?> 
	</strong>  a dit :  
	<?php echo $messages['message']; ?>
 </p>
<?php
	}
?>				
  </body>
</html>
Merci pour la contribution de chacun.