Advertisement
BlackYoup

CCM explications gintoxic

Aug 18th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!-- Tout ce bloc est donc le formulaire d'envoi -->
  2. <body>
  3.     <h4>Laisser un commentaire : </h4>
  4.    
  5.     <form method="post" action="#">
  6.     Login : <input type="text" name="pseudo" class="whitesmoke"/><br />
  7.     commentaire : <br />
  8.     <textarea class="whitesmoke" name="message" rows="10" cols="30"></textarea><br />
  9.     <input type="submit" value="Valider" />
  10.     </form>
  11.  
  12. <!-- -->
  13.  
  14.  
  15.     <?php
  16.  
  17. // 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.
  18.             $hote='localhost';
  19.             $BD='ma_base';
  20.             $user='ich_me';
  21.             $pass='password';
  22.  
  23.             try // on essaye de se connecter
  24.             {
  25.                 $connexion = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass);
  26.             }
  27.  
  28.             catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
  29.             {
  30.                 echo 'Erreur : '.$e->getMessage().'<br />N° : '.$e->getCode(); // un seul echo suffit
  31.             }
  32.                
  33.  
  34. if(isset($_POST['message']))
  35. {
  36.     $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
  37.     $mess = $_POST['message']); // pareil
  38.  
  39.     // La 1e condition ne servait à rien car au final, la 2e est check la même chose
  40.     if(empty($_POST['pseudo']) OR empty($_POST['message'])){
  41.             echo '<p class="vide">Un des champs est vide</p>';
  42.         }
  43.         // si tout est ok
  44.         else{          
  45.  
  46.              $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message) VALUES(:pseudo, :message)')
  47.              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
  48.  
  49.              $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess)); // on éxécute la requete
  50.    
  51.     }
  52. }
  53.  
  54. // 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 !
  55.  
  56. $result= $connexion->query('SELECT * FROM commentaires'); // on séléctionne tous les champs de la table commentaires
  57.              // la boucle parcours tous les résultats renvoyés par la précédente requete de sélection
  58.              while ($donnees = $result->fetch()){
  59.                 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
  60.             }
  61.             $req->closeCursor(); // on ferme la connexion à la base de donnée
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement