Php

Résolu
Signaler
Messages postés
47
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
16 novembre 2012
-
Messages postés
47
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
16 novembre 2012
-
bonjour tout le monde,
j'ai essaye de faire un blog avec des commentaires en utilisant PHP5,tout se passe bien,l'ajout des message,l'affichage,l'ajout des commentaires,sauf que dans la page des commentaires ,quand je met un refresh un commentaire s'ajout automatiquement dans la base,et ce commentaire est le meme que le dernier commentaire ajouté,s'il n y a aucun commentaire ajouté,c'est le message qui s'ajout a la table commentaire.
j'ai vraiment besoin de votre aide,merci d'avance

5 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
<?php
session_start();/*toujours en début de fichier*/
//si un comentaire est saisi,on l'enregistre dans la table commentaire

if(isset($_SESSION['commentaire'],$_POST['commentaire']) && $_POST['commentaire']===$_SESSION['commentaire']){
echo 'déjà posté 
'.$_SESSION['commentaire'].'

';
}else{



      if(isset($_POST['commentaire']) && !empty($_POST['commentaire']))
      {
      $_SESSION['commentaire']=$_POST['commentaire'];
      $commentaire = mysql_real_escape_string(htmlspecialchars($_POST['commentaire'])); 
      $commentaire = nl2br($commentaire); // Pour le commentaire, comme on utilise un textarea, il faut remplacer les Entrées par des 

      // On peut enfin enregistrer :o)
      $message_commente=$_GET['message'];//On ne peur pas mettre $_GET['message'] directement dans la requete,ça genere un pble @ amine
      $connexion->exec("insert into commentaire values('','$message_commente','$n','$p','$commentaire')");
      }
      //affichage du resultat
      $req=$connexion->query("select * from commentaire where id_message=".$connexion->quote($_GET['message'],PDO::PARAM_STR)."order by id asc");
      $req->setFetchMode(PDO::FETCH_OBJ);
      while($ligne=$req->fetch())
      {
      echo'';
echo'----
';
echo "" . $ligne->nom."  ".$ligne->prenom ." a commenté:
" . $ligne->commentaire . "

";
      echo', </td>
';
      }
      $req->closeCursor();
      }
      
      
      
}      
?>



Bonne programmation !
Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012

Tu utilises peut être des variables passer en paramètres dans l'URL (en GET), sans extrait de ta page on pourras pas grand chose pour toi,
A+
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
bonsoir
as tu un code à présenter ?
contre le rafraîchissement par f5 et le double post il y une solution
souvent avec une variable session que tu passes de null à la variable
passé par get ou post si les deux sont égales on ne peut plus poster
...


Bonne programmation !
Messages postés
47
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
16 novembre 2012

voila le code;
  <?php 
     //connexion a la base de donnee
    require("classes\pdo.class.php");
 //recuperation du post
    $req=$connexion->prepare("select * from message where id=?");//.$connexion->quote(?,PDO::PARAM_STR));
$req->execute(array($_GET['message']));
$ligne=$req->fetch();
if($ligne)
{
    echo'';
echo'----
';
echo "" . $ligne['nom']."  ".$ligne['prenom'] ." a écrit :
" . $ligne['message'] . "

";
echo'
';
}
$req->closeCursor();
//ecrire le commentaire
?>
<form method="post" action="commenter.php?message=<?php echo $_GET['message'];?>">
               commentaire :

            <textarea name="commentaire" rows="8" cols="35"></textarea>

            

<?php
  //si un comentaire est saisi,on l'enregistre dans la table commentaire
      if(isset($_POST['commentaire']) && !empty($_POST['commentaire']))
  {
      $commentaire = mysql_real_escape_string(htmlspecialchars($_POST['commentaire'])); 
          $commentaire = nl2br($commentaire); // Pour le commentaire, comme on utilise un textarea, il faut remplacer les Entrées par des 

   // On peut enfin enregistrer :o)
   $message_commente=$_GET['message'];//On ne peur pas mettre $_GET['message'] directement dans la requete,ça genere un pble @ amine
   $connexion->exec("insert into commentaire values('','$message_commente','$n','$p','$commentaire')");
      }
  //affichage du resultat
  $req=$connexion->query("select * from commentaire where id_message=".$connexion->quote($_GET['message'],PDO::PARAM_STR)."order by id asc");
  $req->setFetchMode(PDO::FETCH_OBJ);
  while($ligne=$req->fetch())
  {
    echo'';
echo'----
';
echo "" . $ligne->nom."  ".$ligne->prenom ." a commenté:
" . $ligne->commentaire . "

";
echo', </td>
';
  }
 $req->closeCursor();
 }
  ?>
Messages postés
47
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
16 novembre 2012

merci bcp cod57,
ça marche nikel maintenant :D