Bonjour,
je viens vers vous de nouveau car j'ai énormément de difficultés à mettre en place le forum de mon site web.
J'ai créé 2 pages: forum.php (affiche les pseudos et sujets postés) et forumrep.php (affiche les discussions).
Pseudo + sujet sont enregistrés dans une table, pseudo + message de discussion dans une autre.
forum.php :
Fonctionne bien, seul petit bémol, j'aurai aimé insérer le pseudo de la personne qui poste le sujet et du coup le premier message de la
discussion dans les 2 tables que j'utilise (celle des sujet et celle des messages). Je n'y arrive pas, si vous avez une solution, sinon c'est pas grave,
ce n'est pas ma plus grosse préoccupation.
forumrep.php :
C'est une vraie galère!!! Rien ne s'affiche après mon lien de retour à la page des sujets!! J'ai un message d'erreur (non-objet dans la fonction fetch()).
Pourriez-vous me dire ce qui cloche??? Voilà 10 jours que je planche sur ce forum, je sature.
Merci d'avance pour votre aide.

Voici forum.php : (pb avec $req1 et $req2 sur le double enregistrement du pseudo dans les tables)
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
<?php include "css-pages-communes.php"; ?>
table { width: 830px; height: auto; border: 1px solid black; border-spacing: 0px; border-radius: 10px; margin-left: auto; margin-right: auto; text-align: center;}
th { border: 1px solid black; padding: 5px; background-color: red;}
table tbody tr td { border: 1px solid black; padding: 5px;}
table tbody tr:hover td { background-color: rgb(21, 21, 21);
                         background-color: rgba(21, 21, 21, 0.8);}
.th1 { border-radius: 10px 0px 0px 0px; width: 5%;}
.th2 { width: 12%;}
.th3 { width: 23%;}
.th4 { border-radius: 0px 10px 0px 0px; width: 60%;}
.th5 { border-radius: 0px 0px 10px 10px;}
.pair { background-color: red;}
.impair { background-color: black;}
 
 
<?php include "aspect-pages-communes.php"; ?>
<div id="haut">
 
<div id="marge">
<h3>Bienvenue sur notre forum de discussion</h3>
<p>Vous avez des questions nous concernant, n'hésitez pas à vous exprimez dans ce forum.<br>
 
<?php
if(!$_SESSION)
{
echo 'Pour participer au forum, vous devez d\'abord vous identifiez en créant ou en vous connectant à <a href="mon-compte.php" target=_blank>votre compte Kibéos</a>.';
}
else
{
echo '<form action="forum.php" method="post" name="forum">
<label for="pseudo">Pseudo</label>
<input type="text" name="pseudo" size="106" maxlength="30"><br>
<label for="sujet">Sujet</label>
<input type="text" name="sujet" size="106" maxlength="106"><br>
<label for="message">Message</label>
<textarea name="message" rows="4" cols="80" maxlength="300" wrap="hard" placeholder="Exprimez-vous"></textarea><br><br><br>
<input type="submit" value="Envoyer" name="submit">
<input type="reset" value="Annuler">
</form>';
}
?>
</div>
 
<?php
// On vérifie que le formulaire vient d'être envoié.
if (!isset($_POST['submit']))
{
}
// On regarde si nos variables ne sont pas vides.
elseif ((isset($_POST['submit'])) && (!empty($_POST['pseudo'])) && (!empty($_POST['sujet'])) && (!empty($_POST['message'])))
{
 
	// On teste la conformité d'écriture des champs.
	// Pseudo  
	$_POST['pseudo'] = htmlspecialchars($_POST['pseudo']);     
	if (preg_match("#^[a-zA-Z0-9éèàêâùïüëô.-_]{3,30}$#", $_POST['pseudo']))
	{
	// Sujet
	$_POST['sujet'] = htmlspecialchars($_POST['sujet']);   
	if (preg_match("#^[a-zA-Z0-9éèàêâùïüëô;,.\"\'() _-]{3,106}$#", $_POST['sujet']))
	{
	// Message
	$_POST['message'] = htmlspecialchars($_POST['message']);   
	if (preg_match("#^[a-zA-Z0-9éèàêâùïüëô;,.\"\'() _-]{3,300}$#", $_POST['message']))
	{
 
		// Insertion des informations dans la base de données
		$bdd = new PDO('mysql:host=.......;dbname=.......', '......', '.......');
		$req1 = $bdd->prepare('INSERT INTO forum(pseudo, sujet, datforum) VALUE(:pseudo, :sujet, NOW())');
		$req2 = $bdd->prepare('INSERT INTO repforum(message) VALUE(:message)');
		$req1->execute(array(
   		'pseudo' => $_POST['pseudo'],
   		'sujet' => $_POST['sujet']));
		$req2->execute(array(
		'message' => $_POST['message']));
 
	}
	else
	{
	echo 'Votre message n\'est pas valide, il doit faire entre 3 et 300 caractères et ne doit pas contenir de caractères spéciaux, recommencez svp merci.';
	}
	}
	else
	{
	echo 'Votre sujet n\'est pas valide, il doit faire entre 3 et 106 caractères et ne doit pas contenir de caractères spéciaux, recommencez svp merci.';
	}
	}
	else
	{
	echo 'Le Pseudo choisi n\'est pas valide, il doit faire entre 3 et 30 caractères et ne doit pas contenir de caractères spéciaux, recommencez svp merci.';
	}
}
else
{
echo 'Veuillez remplir tous les champs et envoyer le formulaire svp, merci.'; 
}
 
 
// Poste du message sur la page forum.
$bdd = new PDO('mysql:host=......;dbname=......', '.....', '......');
$reponse = $bdd->query('SELECT idforum, pseudo, sujet, DATE_FORMAT(datforum, \'%d/%m/%Y à %Hh%imin%ss\') AS datforum_fr FROM forum ORDER BY idforum DESC LIMIT 0, 20');
?>
 
<table>
	<thead>
		<tr>
		     <th class="th1">Id</th>
		     <th class="th2">Dernière réponse</th>
		     <th class="th3">Pseudo</th>
                     <th class="th4">Sujet</th>
		</tr>
	</thead>
	<tfoot> 
		<tr>
		    <th colspan="4" class="th5"></th>
		</tr>
	</tfoot>
 
<?php
//J'affiche les lignes de mon tableau une à une avec une boucle.
while ($donnees = $reponse->fetch())
{
if (htmlspecialchars($donnees['idforum'])%2 == 0) 
{
    $class = "pair";
}
else 
{
   $class = "impair";
}
echo '<tbody>
		<tr class="' . $class . '">
          	   <td>' . htmlspecialchars($donnees['idforum']) . '</td>
                   <td>' . htmlspecialchars($donnees['datforum_fr']) . '</td>
	 	   <td>' . htmlspecialchars($donnees['pseudo']) . '</td>
	  	   <td><a href="repforum.php?suj=' . htmlspecialchars($donnees['idforum']) . '">' . htmlspecialchars($donnees['sujet']) . '</a></td>
		</tr>
      </tbody>';
}
 
//Fermeture de la boucle.
$reponse->closeCursor();
?>
</table>
 
</div>
</div>
<?php include "pied-de-page.php"; ?>

Voici forumrep.php : (pb commencant ligne 21)
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
<?php include "css-pages-communes.php"; ?>
.th1 { border-radius: 10px 0px 0px 0px; width: 15%;}
.th2 { width: 15%;}
.th3 { border-radius: 0px 10px 0px 0px; width: 70%;}
.th4 { border-radius: 0px 0px 10px 10px;}
 
<?php include "aspect-pages-communes.php"; ?>
<div id="haut">
 
<div id="marge">
<p><a href="forum.php">Retour à la liste des sujets</a></p>
</div>
 
 
<?php
 
 
//Récupération du sujet choisi.
$bdd = new PDO('mysql:host=......;dbname=......', '.....', '......');
$req = $bdd->query('SELECT pseudo, sujet, DATE_FORMAT(datforum, \'%d/%m/%Y à %Hh%imin%ss\') AS datforum_fr FROM forum WHERE idforum = ?');
while ($donnees = $req->fetch())
{
echo '<table>
	<thead>
		<tr>
		     <th class="th1">' . htmlspecialchars($_donnees['pseudo']) . '</th>
		     <th class="th2">' . htmlspecialchars($_donnees['datforum_fr']) . '</th>
		     <th class="th3">' . htmlspecialchars($_donnees['sujet']) . '</th>
		</tr>
	</thead>
	<tfoot> 
		<tr>
		    <th colspan="3" class="th4"></th>
		</tr>
	</tfoot>';
}
//Libération du curseur pour la prochaine requète. 
$req->closeCursor();
 
// Récupération des commentaires.
$bdd = new PDO('mysql:host=......;dbname=......', '.....', '......'); 
$req = $bdd->query('SELECT pseudorep, message, DATE_FORMAT(daterep, \'%d/%m/%Y à %Hh%imin%ss\') AS daterep_fr FROM repforum WHERE idsujet = idforum ORDER BY daterep');
while ($donnees = $req->fetch())
{
echo '<tbody>
		<tr>' . htmlspecialchars($donnees['pseudorep']) . '</tr>
		<tr>' . htmlspecialchars($donnees['daterep_fr']) . '</tr>
		<tr>' . htmlspecialchars($donnees['message']) . '</tr>
      </tbody>
    </table>';
}
 
$req->closeCursor();
?>
 
</div>
<?php include "pied-de-page.php"; ?>