Bonjour,
je viens vers vous car je rencontre un problème dans la création de mon forum. Tout fonctionnait à merveille jusqu'à ce que j'essaie d'afficher la date d'écriture du dernier message posté. Depuis, j'ai une erreur qui s'affiche : Fatal error: Call to a member function fetch() on a non-object in...
Pourriez-vous m'aider svp? merci d'avance.

Voici mon code, l'erreur apparaît à la fin sur la ligne : while ($donnees = $reponse->fetch())

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
<?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 0px 10px;}
.th6 { border-radius: 0px 0px 10px 0px;}
.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>
N'oubliez pas, 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>. 
 
 
<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=.....', '......', '......');
		$req = $bdd->prepare('INSERT INTO forum(pseudo, sujet, message, datforum) VALUE(:pseudo, :sujet, :message, NOW())');
		$req->execute(array(
   		'pseudo' => $_POST['pseudo'],
   		'sujet' => $_POST['sujet'],
   		'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(date, \'%d/%m/%Y à %Hh%imin%ss\') AS datforum FROM forum ORDER BY idforum DESC LIMIT 0, 20');
?>
 
<table>
	<thead> <!-- Entête de tableau -->
		<tr>
		     <th class="th1">Id</th>
		     <th class="th2">Dernières réponses</th>
		     <th class="th3">Pseudo</th>
                     <th class="th4">Titres</th>
		</tr>
	</thead>
	<tfoot> <!-- Pied de tableau pour meilleure présentation -->
		<tr>
		    <th class="th5"></th>
		    <th></th>
		    <th></th>
		    <th class="th6"></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']) . '</td>
	            <td>' . htmlspecialchars($donnees['pseudo']) . '</td>
	            <td><a href="repforum.php">' . htmlspecialchars($donnees['sujet']) . '</a></td>
	</tr>
	</tbody>';
}
//Fermeture de la boucle.
$reponse->closeCursor();
?>
</table>
</div>
<?php include "pied-de-page.php"; ?>