Bonjour à tous, je vous expose mon problème: je suis débutant en PHP et pour me faire la main j'essaie de coder un blog tout simple seulement cela fait deux jours que je suis bloqué et je me suis enfin décidé à demander de l'aide.
C'est un exercice tout simple constitué de deux pages, la première index.php sur laquelle se trouve un formulaire permettant d'ajouter un post, une requête qui récupère les cinq derniers et tout cela fonctionne.
Avec chaque post un lien commentaires est ajouté qui en cliquant dessus permet d'être dirigé vers la page comments.php.
Cette page est censée afficher le post sur lequel on a cliqué, fournir un formulaire pour ajouter un commentaire et afficher ceux-ci.
Seulement je ne parviens pas afficher le post en question malgré toutes mes recherches, aucune erreur ne s'affichent, je ne parviens pas non plus à insérer de commentaires dans ma base de données et donc forcément l'affichage de ceux-ci n'est pas effectif.
Je ne demande pas de solution toute faite mais j'imagine que pour des personnes expérimentées comme vous, cela sera évident et facile à trouver, ainsi si quelqu'un pouvait m'indiquer la voie ou la marche à suivre je lui en serai grandement reconnaissant car à force de bloquer sur cette unique page j'ai l'impression de ne plus rien voir du tout!
Je vous poste donc deux screenshots de ma base de données représentants mes tables ainsi que le code de mes deux pages.
Je remercie par avance toutes les personnes qui pourront m'apporter de l'aide.
La table posts:
Et la table comments:
index.php
Et comments.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 <!-- Form for Post --> <form action="index.php" method="post"> <fieldset class="form"> <p> <label for="author">Pseudo</label> <input type="text" name="author" id="author"required> </p> <p> <label for="title">Titre</label> <input type="text" name="title" id="title" required> </p> <p> <label for="content">Message</label> <textarea name="content" id="content"required rows="8"></textarea> </p> <button type="submit" name="send" class="button">Envoyer</button> </fieldset> </form> <?php // Database Connection try { $db = new PDO('mysql:host=localhost; dbname=blog; charset=utf8', 'root', 'root'); $db->setAttribute(PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE); } catch (Exception $e) { die('Error : '.$e->getMessage()); } // SQL Request for import new Post if (isset($_POST['author']) && isset($_POST['title']) && isset($_POST['content'])) { $req = $db->prepare('INSERT INTO posts (author, title, content, creationDate) VALUES (?, ?, ?, NOW())'); $req->execute(array($_POST['author'], $_POST['title'], $_POST['content'])); } ?> <div class="result"> <?php // SQL Request for recover the 5 lasts posts $reply = $db->query('SELECT id, author, title, content, DATE_FORMAT(creationDate, "%d/%m/%Y à %Hh%imin%ss") AS creationDate_FR FROM posts ORDER BY creationDate DESC LIMIT 0,5'); while ($posts = $reply->fetch()) { ?> <h3> <?= htmlspecialchars($posts['author']); ?> a écrit<br> le <?= $posts['creationDate_FR']; ?><br> <strong>Titre : </strong><?= htmlspecialchars($posts['title']); ?><br> </h3> <p> <?= nl2br(htmlspecialchars($posts['content'])); ?> </p> <span class="far fa-comments fa-2x"><a href="comments.php?post=<?= $posts['id']; ?>">Commentaires</a></span> <hr> <?php } $reply->closeCursor(); ?> </div>
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 <?php try { $db = new PDO('mysql:host=localhost; dbname=blog; charset=utf8', 'root', 'root'); $db->setAttribute(PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE); } catch (Exception $e) { die('Error : '.$e->getMessage()); } // Request for recover the single post with this ID $req = $db->prepare('SELECT id, author, title, content, DATE_FORMAT(creationDate, \"%d/%m/%Y à %Hh%imin%ss\") AS creationDate_FR FROM posts WHERE id = ?'); $req->execute(array($_GET['post'])); $data = $req->fetch(); ?> <!-- Viewing the blog post--> <div class="result"> <h3> <span class="fas fa-sign-out-alt"><a href="index.php">Retour à l'accueil</a></span><br> <?= htmlspecialchars($data['author']); ?>a écrit<br> le <?= $data['creationDate_FR']; ?><br> <?= htmlspecialchars($data['title']); ?> </h3> <?= nl2br(htmlspecialchars($data['content'])); $req->closeCursor(); ?> </div> <h2>Commentaires</h2> <!-- Form for comments --> <form action="comments.php" method="post"> <fieldset class="form"> <p> <label for="commentAuthor">Pseudo</label> <input type="text" name="commentAuthor"required> </p> <p> <label for="titleComment">Titre</label> <input type="text" name="titleComment"required> </p> <p> <label for="comment">Commentaire</label> <textarea name="comment" rows="8" required></textarea> </p> <button type="submit" name="send" class="button">Envoyer</button> </fieldset> </form> <?php if(isset($_POST['commentAuthor']) && isset($_POST['titleComment']) && isset($_POST['comment'])) { $req = $db->prepare('INSERT INTO comments (postID, commentAuthor, titleComment, comment, commentDate) VALUES (?, ?, ?, ?, NOW())'); $req->execute(array($_POST['commentAuthor'], $_POST['titleComment'], $_POST['comment'])); } while($data = $req->fetch()) { ?> <div class="result"> <h3> <?= htmlspecialchars($data['commentAuthor']); ?>a écrit <br> le <?= $data['creationDate_FR']; ?><br> <?= htmlspecialchars($data['titleComment']); ?> </h3> <p> <?= htmlspecialchars($data['comment']); ?> </p> <?php } $req->closeCursor(); ?> </div>
Partager