Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!-- Tout ce bloc est donc le formulaire d'envoi -->
- <body>
- <h4>Laisser un commentaire : </h4>
- <form method="post" action="#">
- Login : <input type="text" name="pseudo" class="whitesmoke"/><br />
- commentaire : <br />
- <textarea class="whitesmoke" name="message" rows="10" cols="30"></textarea><br />
- <input type="submit" value="Valider" />
- </form>
- <!-- -->
- <?php
- // on définit les logins / paramètres de la base de donnée. On les mets en dehors de la condition car, quoiqu'il arrive, on devra se connecter pour afficher les messages.
- $hote='localhost';
- $BD='ma_base';
- $user='ich_me';
- $pass='password';
- try // on essaye de se connecter
- {
- $connexion = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass);
- }
- catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
- {
- echo 'Erreur : '.$e->getMessage().'<br />N° : '.$e->getCode(); // un seul echo suffit
- }
- if(isset($_POST['message']))
- {
- $loggin = $_POST['pseudo']; // htmlspecialchars ne sert à rien ici. Il ne faut l'utiliser que lorsqu'il y a une sortie de texte, pas une entrée. De plus, le "a écrit" est une donnée qui reviens donc elle aura sa place dans la boucle en bas
- $mess = $_POST['message']); // pareil
- // La 1e condition ne servait à rien car au final, la 2e est check la même chose
- if(empty($_POST['pseudo']) OR empty($_POST['message'])){
- echo '<p class="vide">Un des champs est vide</p>';
- }
- // si tout est ok
- else{
- $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message) VALUES(:pseudo, :message)')
- or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur
- $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess)); // on éxécute la requete
- }
- }
- // ici, on affiche les messages déja enregistrés. Pourquoi on ne le met pas plus haut ? Car sinon, la requete SQL ne récupérera pas le message que l'on vient d'envoyer puisqu'il ne sera pas encore dans la base !
- $result= $connexion->query('SELECT * FROM commentaires'); // on séléctionne tous les champs de la table commentaires
- // la boucle parcours tous les résultats renvoyés par la précédente requete de sélection
- while ($donnees = $result->fetch()){
- echo '<div class="pseudo">'.$donnees['pseudo'].' a écrit : </div>'.'<div id="bloc_message">'.$donnees['message'].'</div>'; // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle
- }
- $req->closeCursor(); // on ferme la connexion à la base de donnée
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement