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
|
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="styleBilletsEleve.css">
<meta charset="utf-8">
<title>BlogCommentaires</title>
</head>
<body>
<h1>Mon Super Blog !</h1>
<p><a href="bills.php">Retour à la liste de billets publiés</a></p>
<?php
// TESTER LA PRESENCE D'ERREURS ACEV LES CONDITIONS "try" ET "catch"
try {
// Se connecter à la bdd de MYSQL
// quatre parametres :
// Nom de l'hote, Nom de la bdd, l'unicode, login ET mdp
// + chercher Error lors de la connex. avec MYSQL
$bdd = new PDO('mysql:host=localhost;dbname=news;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
// Appel de Exception capturant l'erreur
catch (Excetion $e) {
die('Erreur : ' . $e->getMessage());
}
// SI TOUT VA BIEN, ON CONTINUE
// PARTIE REQUETE avec les fonctions PHP "prepare()" ET "execute()"
// Preparer TOUTES les donnees de la table "billets"
// WHERE --> a partir de (ICI) "id = ? " (? = marqueur ?)
// chercher Error avec "or die(print_r($bdd->errorInfo())); "
$req = $bdd->prepare('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_billet_fr FROM billets WHERE id = ?') or die(print_r(errorInfo()));
// puis Executer la requete avec un Tableau "array"
// ayant de(s) parametre(s) sous la forme ($_GET['XX'])
$req->execute(array($_GET['billet']));
// PARTIE Donnees
// Va chercher les données (entrées) de la table 'billets' (FROM 'XX')
$donnees = $req->fetch();
// Verifier avec la fonction PHP "empty()"
// SI une variable est vide ou non
// Traduction :
// SI la var est vide ALORS Vrai elle est vide
// SINON la var n'est pas vide ALORS Faux la var s'affiche
if (empty($donnees)) {
echo "This bill is not existed";
}
else {
?>
<div class="news">
<h3>
<strong>
<?php echo htmlspecialchars($donnees['titre']); ?></strong>
<em>le
<?php echo $donnees['date_billet_fr']; ?></em>
</h3>
<p>
<?php echo nl2br(htmlspecialchars($donnees['contenu'])); ?>
</p>
</div>
<?php
}
?>
<!-- Ajout d'un formulaire pour envoyer des commentaires -->
<div id="formAjoutComment">
<h2>Ajouter un commentaire</h2>
<form method="post" action="comments_post.php?billet<?php echo $donnees['id']; ?>" enctype="multipart/form-data">
<label for="auteur">Votre pseudo :</label>
<input
<?php
// Verifier que $_COOKIE['pseudo'] existe avec la fonction PHP "isset()"
if (isset($_COOKIE['pseudo'])) { $cookie_pseudo=htmlspecialchars(strip_tags($_COOKIE['pseudo']));
// affichage avec echo
echo 'value="' . $cookie_pseudo . '"' ; }
?>
type="text" name="auteur" id="pseudo" placeholder="Write your nickname" />
<br>
<label for="commentaire">Votre commentaire :</label><br>
<textarea name="commentaire" id="message" placeholder="Write your comment" rows="5" cols="30"></textarea>
<br>
<!-- Champ Caché "billet" pour le user MAIS ACTIF pour le fonctionnement avec pour methode $_GET -->
<input type="hidden" name="billet" value="<?php echo $_GET['billet']?>" />
<br>
<!-- bouton d'envoi -->
<input type="submit" value="send">
<br>
<!-- Cliquez sur le lien "rafraichir la page" -->
<p>Si tu veux changer de pseudo ou de message :
<a href="commentsBill.php?billet=<?php echo $_GET['billet']; ?>">Rafraichir la page</a> pour revenir à la page "commentaires.php"
</p>
</form>
</div>
<br>
<h2>Commentaires</h2>
<?php
// fini le traitement de la requete
$req->closeCursor();
// Important : on libère le curseur pour la prochaine requête
////////////PAGINATION AUTO////////////////
$nb_coms_page = 4; // nombre de commentaires par page
// on recupere le nombre de billet
$request = $bdd->query('SELECT COUNT(*) AS nb_coms FROM commentaires');
$datas = $request->fetch();
$nb_coms = $datas['nb_coms'];
$nbDePages = ceil($nb_coms / $nb_coms_page);//calcul du nombre de page
// si la variable $_GET['page'] existe , donc si on a cliqué sur un n° de page...
if (isset($_GET['page']))
{
// cela veut dire que nous sommes sur la page actuelle
$pageActuelle = intval($_GET['page']);
if($pageActuelle > $nbDePages)
{
$pageActuelle = $nbDePages;
}
}
else // sinon-> si aucune page n'est sélectionnée et que nous ne sommes pas sur la dernière page...
{
$pageActuelle = 1; // nous sommes donc sur la première page.
}
$request->closeCursor();
//affichage des commentaires
//on sait que les plages LIMIT démarrent après le premier nombre indiqué, il faut donc faire le calcul suivant:
//$pageActuelle=1 (si nous sommes sur le 1ere page) : $pageActuelle-1 = 0 , 0*2 = 0 => sur la premiere page nous lisons donc les commentaires à partir du commentaire 0 soit le premier...
//$pageActuelle=2 (si nous sommes sur la deuxième page) : $pageActuelle-1 = 1 , 1*2 = 2 => sur la deuxième page nous lisons donc les commentaires après le commentaire 2 soit le troisième...
$premierCom = ($pageActuelle - 1) * $nb_coms_page; // calcul du premier billet à lire.
// PARTIE REQUETE avec les fonctions "prepare()" ET "execute()"
// Preparer TOUTES les donnees de la table "commentaires"
// WHERE --> a partir de (ICI) "id = ? " (? = marqueur ?)
// + chercher Error avec "or die(print_r($bdd->errorInfo())); "
$reqko = $bdd->prepare('SELECT id, auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_comments_fr FROM commentaires WHERE id_billet = ? ORDER BY date_commentaire DESC LIMIT '.$premierCom.','.$nb_coms_page.'') or die(print_r(errorInfo()));
// puis Executer la requete avec un Tableau "array"
// ayant de(s) parametre(s) sous la forme ($_GET['XX'])
$reqko->execute(array($_GET['billet']));
// PARTIE DONNEES : va chercher les entrées dans la requete avec la boucle "while"
while ($datas = $reqko->fetch()) {
?>
<div class="newComment">
<h3><strong>
<?php echo htmlspecialchars($datas['auteur']); ?></strong>
<em>le
<?php echo $datas['date_comments_fr'];?></em>
</h3>
<p>
<?php echo nl2br(htmlspecialchars($datas['commentaire'])); ?>
<br>
<!-- URL avec un parametre indiquant ID du commentaire de la div
apres le "?" -->
<i><a href="../BlogComEleve/interfadminComEleve/modifCom.php?id=<?php echo $datas['id'];?>">modifier le commentaire</a></i>
<!-- URL avec un parametre indiquant ID du commentaire de la div
apres le "?" -->
<i><a href="../BlogComEleve/interfadminComEleve/supprCom.php?commentaire=<?php echo $datas['id'];?>">supprimer le commentaire</a></i>
</p>
</div>
<?php
}
// Pour supprimer plusieurs lignes avec DELETE
//$reponse = $bdd->query('DELETE FROM commentaires WHERE id > 5');
?>
<em>Pages : </em>
<?php
//Affichage des pages
for ($i=1; $i <= $nbDePages ; $i++)
{
if ($i==$pageActuelle)
{
echo '['. $i .']';
}
else
{
echo ' <a href="commentsBill.php?billet='.$_GET['billet'].'&page='.$i.'">'.$i.'</a> ';
}
}
// fini le traitement de la requete
$reqko->closeCursor();
?>
</body>
</html> |
Partager