Bonjour,

je suis en train de créer un forum en php.

Pour résumer un peu le contexte, jusqu'à présent l'utilisateur affichait ses messages sur le mur du forum.

par la suite j'ai essayé d'ajouter une étape permettant aux autres utilisateurs de répondre aux messages publiés

mon problème c'est que quand je teste la page, on n'arrive plus a voir le bouton réponse permettant d'afficher la réponse sur le mur

De plus, quand un utilisateur veut créer un nouveau message, il me met l'erreur suivante:

Insertion dans la base de données du site impossible INSERT INTO forum_messages (quand,pseudo,email,message,reponse) VALUES (1246449869,'toto','toto@lala.fr','test ','') Incorrect integer value: '' for column 'reponse' at row 1


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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
 
 
<?php
/* Mini-forum en PHP */
 
// === CONNEXION A LA BD ===
 
// On teste si on est en local 
$isLocal=($_SERVER["SERVER_NAME"]=="localhost");
 
 
//$isLocal = TRUE;
// Paramètres de connexion en local ou sur site
 
$host = ($isLocal) ? "localhost" : "localhost"; 
$user = ($isLocal) ? "root" : "root"; 
$pass = ($isLocal) ? "mdp" : "mdp"; 
$bdd = ($isLocal) ? "forum" : "forum";
 
// connexion a la base de donnees
 
$link = mysql_connect($host,$user,$pass);
mysql_select_db($bdd); 
 
 
// Variables
 
if(isset($_POST['pseudo']))      $pseudo=$_POST['pseudo'];
else      $pseudo="";
if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";
if(isset($_POST['message']))      $message=$_POST['message'];
else      $message="";
if(isset($_POST['reponse']))      $reponse=$_POST['reponse'];
else      $reponse="";
 
 
$login=addslashes($pseudo); // addslashes gere les caratères spéciaux dans le champ spécifié
$email=addslashes($email); 
$message=addslashes($message);
 
 
 
/* === AJOUT D'UN MESSAGE EVENTUEL === */
 
if(@$_POST["message"]) {
 
$SQL="INSERT INTO forum_messages (quand,pseudo,email,message,reponse) VALUES (".time().",'".$pseudo."','".$email."','".$message."','".$reponse."')";
$res=mysql_db_query($bdd,$SQL,$link) or die ('Insertion dans la base de données du site impossible '.$SQL.' '.mysql_error()); 
 
 
/*	Réponse = n° auto si message initial	*/  
if(!$_POST["reponse"]) {
      // juste apres l'insertion, on peut récuperer l'id généré 
      $id = mysql_insert_id();
      mysql_query("UPDATE forum_messages SET reponse=".$id." WHERE ID=".$id);
   }
 
/*	Envoi de la réponse par email	*/
 
   if(!$isLocal&&($reponse!="0")) {
      // Gestionnaire ou répondeur du forum
 
//A quoi sert cette adresse , je crée juste une boite mail ?????
      $from = "From: forum@gmail.fr";
 
       // Sujet du mail
      $sujet = "Reponse a votre message posté sur le forum";
      // Sélection des destinataires
      $SQL = "SELECT * FROM forum_messages WHERE email<>'".$email."' AND (reponse=".$reponse." OR ID=".$reponse.") ORDER BY ID DESC";
      $res = mysql_query($SQL) or die(mysql_error());
      $temp=",";
      // Pour chaque adresse
      while($val=mysql_fetch_array($res)) {
         // Déjà envoyé 
         if(!strpos(" ".$temp,",".$val["email"].",")) {
            // Corps du message
$body = "Bonjour ".$val["login"].",\n\n"
   . "Un visiteur a repondu a votre message sur le forum :"
   . "\n".str_repeat("_",40)."\n"
   . $_POST["login"]." >> ".$_POST["message"]
   . "\n".str_repeat("_",40)."\n"
   . "\n en reponse a votre message du ".date("d/m/Y",$val["quand"])." :"
   . "\n".str_repeat("_",40)."\n"
   . $val["message"]
   . "\n".str_repeat("_",40)."\n"
   . "\nPour poursuivre la discussion, veuillez vous rendre à l'adresse\n"
   . "http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]
   . "?post=".$_POST["reponse"]
   ."\n\nA bientot\n";
 
               // Envoi du mail
            mail($val["email"],$sujet,$body,$from);
            // mémorise l'adresse
            $temp .= $val["email"] . ",";
         }
      }
   }
 
}
// === AFFICHAGE DE LA PAGE ===
?>
 
 
<HTML><HEAD>
   <TITLE>Mini-forum DunDal: </TITLE>
 
</HEAD><BODY bgcolor="#FFFFFF"><center>
<SCRIPT language="Javascript">
<!--     
	   function repond(num) {
         test=true
         with(document.form1) {
            // vérification du champ message
            if(message.value=="") {
               alert("Le champ message est vide!")
               message.focus()
               test=false
            }
            // vérification du champ email
            var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
            if(reg.exec(email.value)==null) {
               alert("Votre email est invalide !")
               email.focus()
               test=false
            }
            // vérification du champ login
            reg = /^[A-Za-z0-9_-]{3,}$/
            if(reg.exec(pseudo.value)==null) {
               alert("Votre pseudo est invalide !")
               pseudo.focus()
               test=false
            }
            reponse.value=num
            if(test) submit()
         }
      }
-->
</SCRIPT>
 
 
 
   <!-- Formulaire de saisie -->
 
<table>
      <form method="post" action="index2.php" name="form1">
         <tr>
            <td align=right>Pseudo</td><td>
               <input name="pseudo" maxlength=15>
            </td><td rowspan=3>
               <textarea name="message" cols=60 rows=5
                  ></textarea>
            </td>
         </tr><tr>
            <td align=right>Email</td><td>
               <input name="email" maxlength=50>
            </td>
         </tr><tr>
            <td colspan=2 align=center>
               <input type="submit" value="Nouveau sujet">
               <input type="hidden" name="reponse"> 
            </td>
         </tr>
      </form>
</table> 
 
 
<!-- Affichage des messages -->
 
<table border=1 cellspacing=0 cellpadding=5 width=100%>
 
<?php
// Requête de sélection des messages
$SQL = "SELECT * FROM forum_messages ORDER BY reponse DESC,ID";
$res = mysql_query($SQL) or die(mysql_error());
$i=0;
// Tant qu'il y a des messages
while($val=mysql_fetch_array($res)) { $i++;
   // Nouveau sujet 
   if(($val["reponse"]==$val["ID"])) {
      if($i>1) echo "</td></tr>";
      echo "<tr><td>";
      // Bouton "Répondre"
      echo "<button onclick='repond(".$val["ID"].")'>"
         . "Répondre</button> ";
   } else {
      echo "<hr size=1>";
   }
   echo "<br>";
   // Ecrit la date du message
   echo date("d/m/Y H:i:s",$val["quand"]);
   // Ecrit le login de l'auteur
   echo " - ".$val["pseudo"];
   echo "<br>";
   // Ecrit le message, n'autorise pas les code html ;)
   echo htmlentities($val["message"]);
}
?>
 
 
</table>
 
</center></BODY></HTML>
 
 
<?php
// === DECONNEXION ===
mysql_close();
 
?>

Merci pour votre aide