Function creer_conversation en pdo (avec insert values)

Résolu
Zakarya93 Messages postés 1026 Statut Membre -  
Zakarya93 Messages postés 1026 Statut Membre -
Bonjour,

j'aimerais convertir ce code mysl_ en pdo svp :
// la fonction qui va crée la conversation et les messages qui va avec
 
function creer_conversation($sujet,$message)
 
{
 
mysql_query("
INSERT INTO conversations (id_conversation,sujet_conversation)
VALUES('','{$sujet}')
 
") or die(mysql_error());
 
$id_conversation = mysql_insert_id();
 
mysql_query("INSERT INTO conversations_messages(id_conversation,pseudo_exp,corps_message,date_message)
VALUES('{$id_conversation}','{$_SESSION['pseudo']}','{$message}', NOW())") or die(mysql_error());
mysql_query("
INSERT INTO conversations_membres(id_conversation,pseudo_dest)
VALUES('{$id_conversation}','{$_GET['pseudo']}')
")or die(mysql_error());
 
}
 
 ?>


je sais que c'est un truc du genre :
//la function qui va créer la conversation et le message qui va avec
function creer_conversation($sujet,$message){
$sql = "INSERT INTO conversations
                       (id_conversation
                       ,sujet_conversation)

             VALUES(:sujet)";

$params = array(
               ':pseudo'=> $pseudo,
               ':password'=>$password,
               ':email'=> $email,
               ':sexe' => $sexe,
               ':situation' => $situation,
               ':apropos' => $apropos
              );

//On prepare l'insertion
$requete= $dbh->prepare($sql); 
$result = $requete->execute($params);
 return $result ;
}
?>


mais j'ai du mal :/

Merci d'avance :)

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    re,

    Il y a des moments où je me demande si tu ne ferais pas un peu exprès.....

    1 - .. la fonction d'origine contient TROIS REQUETES ... il faudra que tu m'expliques comment tu as pu imaginer n'en faire qu'une !

    2 - Si tu regardes ce que tu as écris... tu as 2 paramètres dans ta requête... et tu essaies de lui passer 6 variables dans le $params.... ne penses-tu pas qu'il y a un petit souci ???

    3 -
    mais j'ai du mal :/

    Forcément.. voir les points 1 et 2 de cette même réponse !

    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Et j'oubliais ....
      il te manque .... alors qu'on l'a déjà fait 75 fois dans tes questions précédentes :
      -> le global $bbd
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      re :)
      //la function qui va créer la conversation et le message qui va avec
      function creer_conversation($sujet,$message){
      $sql = "INSERT INTO conversations
                             (id_conversation
                             ,sujet_conversation)
      
                   VALUES(:sujet)";
      
      $params = array(
                     ':id_conversation'=> $id_conversation,
                     ':sujet_conversation'=>$sujet_conversation,
                    );
      
      //On prepare l'insertion
      $requete= $dbh->prepare($sql); 
      $result = $requete->execute($params);
       return $result ;
      }
      ?>


      pour la première requête est-ce correct?
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    NON..

    Les noms de variables ne correspondent à rien dans ton ARRAY de params.... et $id_intervention n'existe tout simplement pas.....
    D'ailleurs... vu que c'est un champ auto-incrémenté dans cette table là.. il ne faut même pas le mettre !

    Enfin bon. peu importe....

    Voici le code tout fait.
    (NB : Tu constateras que j'ai découpé en TROIS fonctions qui traitent chacune une des requêtes.... le tout... appelé par UNE fonction principale. )

    PS: Avant de tester ... penses à désactiver les éventuelles redirection que tu pourrais avoir sur ta page.... histoire de pouvoir visualiser les éventuels messages d'erreur !!

    <?php
    // la fonction qui va crée la conversation et les messages qui va avec
     
    function creer_conversation($sujet,$message){
    
    $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
    $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
    
     $id_conversation = add_conversation($sujet);
     add_conversations_membres($id_conversation,$pseudo_dest); 
     add_conversations_messages($id_conversation,$pseudo_exp,$message);
    
     return $id_conversation;
    }
    
    function add_conversation($sujet=NULL){
     global $bdd;
    
     $sql = "INSERT INTO conversations (sujet_conversation)
             VALUES(:sujet)";
     $params = array(":sujet"=>$sujet);
     //On prepare l'insertion
     try{
      $prepare = $bdd->prepare($sql); 
      $prepare->execute($params);
      
      //récupère l'ID créé par l'insertion en BDD
      $id = $prepare->lastInsertId(); 
      
     }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
     
     return $id;
    }
    
    function add_conversations_membres($id_conversation,$pseudo_dest){
    global $bdd;
    
    $sql="INSERT INTO conversations_membres(id_conversation,pseudo_dest)
    		VALUES(:id_conversation,:pseudo_dest)";
    
    $params=array(":id_conversation"=>$id_conversation
                  ,":pseudo_dest"=>$pseudo_dest);
    
    try{
      $prepare = $bdd->prepare($sql); 
      $prepare->execute($params);
      
      //récupère l'ID créé par l'insertion en BDD
      $id = $prepare->lastInsertId(); 
      
     }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
      return $id
    }
    
    function add_conversations_messages($id_conversation,$pseudo,$message=''){
    global $bdd;
    
    $sql="INSERT INTO conversations_messages(id_conversation,pseudo_exp,corps_message,date_message)
    VALUES(:id_conversation,:pseudo,:message, NOW())";
    
    $params=array(":id_conversation"=>$id_conversation
                  ,":pseudo"=>$pseudo
    			  ,":message"=>$message);
    
    try{
      $prepare = $bdd->prepare($sql); 
      $prepare->execute($params);
      
      //récupère l'ID créé par l'insertion en BDD
      $id = $prepare->lastInsertId(); 
      
     }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
      return $id
    }
    
    ?>
    


    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      oh merci c'est vraiment énorme de votre part je ne sais comment vous remercier !
      sinon j'ai : Parse error: syntax error, unexpected '}' in C:\wamp\www\rs\functions\new_message.func.php on line 95

      <?php 
      //la function qui va nous permettre de verifier si le pseudo existe et si la personne n'essaye pas de s'auto envoyer un message
      
      function pseudo_incorrect(){
       global $bdd;
       $result=0;
       //Variables
        $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
        $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
       
       if($pseudo_get){
        $sql = "SELECT COUNT(pseudo) as NB
               FROM utilisateurs
               WHERE pseudo = :pseudo_get
      		 AND pseudo != :pseudo_session";
       
         // je place les  params dans une variable avant de l'utiliser :
        $params = array(':pseudo_session' =>$pseudo_session , ':pseudo_get' => $pseudo_get );
        try{
          $query = $bdd->prepare($sql);
          $query ->execute($params); 
          $req= $query->fetchall();
          
         $result= count($req)>0 ? $req[0]['NB']:0;
          
         }catch(Exception $e) {
           echo "<br>ERREUR ! ".$e->getMessage()."<br>";
           echo "<br>params : <br>";
           print_r($params);
         }
       } // Fin du  if($pseudo_session)
       // le return
       return $result;
      }
      
      // la fonction qui va crée la conversation et les messages qui va avec
       
      function creer_conversation($sujet,$message){
      
      $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
      $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
      
       $id_conversation = add_conversation($sujet);
       add_conversations_membres($id_conversation,$pseudo_dest); 
       add_conversations_messages($id_conversation,$pseudo_exp,$message);
      
       return $id_conversation;
      }
      
      function add_conversation($sujet=NULL){
       global $bdd;
      
       $sql = "INSERT INTO conversations (sujet_conversation)
               VALUES(:sujet)";
       $params = array(":sujet"=>$sujet);
       //On prepare l'insertion
       try{
        $prepare = $bdd->prepare($sql); 
        $prepare->execute($params);
        
        //récupère l'ID créé par l'insertion en BDD
        $id = $prepare->lastInsertId(); 
        
       }catch(Exception $e) {
          echo "<br>ERREUR ! ".$e->getMessage()."<br>";
          echo "<br>params : <br>";
          print_r($params);
        }
       
       return $id;
      }
      
      function add_conversations_membres($id_conversation,$pseudo_dest){
      global $bdd;
      
      $sql="INSERT INTO conversations_membres(id_conversation,pseudo_dest)
      		VALUES(:id_conversation,:pseudo_dest)";
      
      $params=array(":id_conversation"=>$id_conversation
                    ,":pseudo_dest"=>$pseudo_dest);
      
      try{
        $prepare = $bdd->prepare($sql); 
        $prepare->execute($params);
        
        //récupère l'ID créé par l'insertion en BDD
        $id = $prepare->lastInsertId(); 
        
       }catch(Exception $e) {
          echo "<br>ERREUR ! ".$e->getMessage()."<br>";
          echo "<br>params : <br>";
          print_r($params);
        }
        return $id
      }
      
      function add_conversations_messages($id_conversation,$pseudo,$message=''){
      global $bdd;
      
      $sql="INSERT INTO conversations_messages(id_conversation,pseudo_exp,corps_message,date_message)
      VALUES(:id_conversation,:pseudo,:message, NOW())";
      
      $params=array(":id_conversation"=>$id_conversation
                    ,":pseudo"=>$pseudo
      			  ,":message"=>$message);
      
      try{
        $prepare = $bdd->prepare($sql); 
        $prepare->execute($params);
        
        //récupère l'ID créé par l'insertion en BDD
        $id = $prepare->lastInsertId(); 
        
       }catch(Exception $e) {
          echo "<br>ERREUR ! ".$e->getMessage()."<br>";
          echo "<br>params : <br>";
          print_r($params);
        }
        return $id
      }
      
      ?>
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      ; ligne 94
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Parse error: syntax error, unexpected '}' in C:\wamp\www\rs\functions\new_message.func.php on line 120 mtn
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Zakarya93 Messages postés 1026 Statut Membre
       
      Bon sens !!!!!!!!!!!
      C'est la même chose que l'autre à une autre ligne. ... tu ne peux pas trouver tout seul ?????
      0
    5. Zakarya93 Messages postés 1026 Statut Membre 10
       
      A-ha pardon
      0
  3. Zakarya93 Messages postés 1026 Statut Membre 10
     
    j'ai ceci : http://www.noelshack.com/2015-26-1435060454-erreur.jpg
    code :
    <?php 
    include('functions/membre.func.php');
    include('body/header.php');
    include('body/menu.php');
    
     
      if(isset($_GET['pseudo']) && !empty($_GET['pseudo']) && pseudo_incorrect()=== "1")
       {
    	    if(isset($_POST['submit']))
    		{
    			creer_conversation($sujet,$message);
    			?>
    			   <div class='success'>Votre message a bien été envoyé</div>
    			<?php 
    			$sujet =  htmlspecialchars(strip_tags(trim($_POST['sujet'])));
    			$message = $sujet =  htmlspecialchars(strip_tags(trim($_POST['message'])));
                  if(!empty($sujet) && !empty($message))
    			  {
    				  //
    			  }else{
    				  ?>
    				     <div class='error'>Le sujet et le message sont obligatoires</div>
    				  <?php
    			  }
    	    }
       }else{
    	   header("Location:index.php?page=membre");
       }  
     
    ?>
    <h3>Envoyer un message </h3>
    <form method='post' action="">
    <label for='a'>à : </label>
    <input type="text" name='a' id='a' value='<?php echo $_GET['pseudo']; ?>' disabled='disabled'><br />
    <label for='sujet'>Sujet : </label>
    <input type="text" name="sujet" id='sujet'><br />
    <label for='message'>Votre message : </label>
    <textarea rows='6' cols='30' name='message' id='message'></textarea><br /><br />
    <input type='submit' value="Envoyer" name='submit'>
    </form>
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      <?php 
      include('functions/membre.func.php');
      include('body/header.php');
      include('body/menu.php');
      
       
       // RECUPERATION DES VARIABLES AVANT DE LES UTILISER !
       $pseudo  = !empty($_GET['pseudo']) ? $_GET['pseudo'] : NULL;
       $sujet   =  !empty($_POST['sujet'])?trim($_POST['sujet']):NULL;
       $message = !empty($_POST['message'])? (strip_tags(trim($_POST['message']))):NULL;
       
        if($pseudo && pseudo_incorrect()=== "1") {
      	 if(isset($_POST['submit']))		{
      		creer_conversation($sujet,$message);
      		if(!$sujet && !$message){
      	     echo "<div class='error'>Le sujet et le message sont obligatoires</div>";
      	  }else{
      	     echo "<div class='success'>Votre message a bien été envoyé</div>";
      	  }
      
         }
        }else{
      	  header("Location:index.php?page=membre");
        }  
       
      ?>
      <h3>Envoyer un message </h3>
      <form method='post' action="">
      <label for='a'>à : </label>
      <input type="text" name='a' id='a' value='<?php echo $_GET['pseudo']; ?>' disabled='disabled'><br />
      <label for='sujet'>Sujet : </label>
      <input type="text" name="sujet" id='sujet'><br />
      <label for='message'>Votre message : </label>
      <textarea rows='6' cols='30' name='message' id='message'></textarea><br /><br />
      <input type='submit' value="Envoyer" name='submit'>
      </form>
      
      0
  4. Zakarya93 Messages postés 1026 Statut Membre 10
     
    j'ai : Fatal error: Call to undefined method PDOStatement::lastInsertId() in C:\wamp\www\rs\functions\new_message.func.php on line 62

    <?php 
    //la function qui va nous permettre de verifier si le pseudo existe et si la personne n'essaye pas de s'auto envoyer un message
    
    function pseudo_incorrect(){
     global $bdd;
     $result=0;
     //Variables
      $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
      $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
     
     if($pseudo_get){
      $sql = "SELECT COUNT(pseudo) as NB
             FROM utilisateurs
             WHERE pseudo = :pseudo_get
    		 AND pseudo != :pseudo_session";
     
       // je place les  params dans une variable avant de l'utiliser :
      $params = array(':pseudo_session' =>$pseudo_session , ':pseudo_get' => $pseudo_get );
      try{
        $query = $bdd->prepare($sql);
        $query ->execute($params); 
        $req= $query->fetchall();
        
       $result= count($req)>0 ? $req[0]['NB']:0;
        
       }catch(Exception $e) {
         echo "<br>ERREUR ! ".$e->getMessage()."<br>";
         echo "<br>params : <br>";
         print_r($params);
       }
     } // Fin du  if($pseudo_session)
     // le return
     return $result;
    }
    
    // la fonction qui va crée la conversation et les messages qui va avec
     
    function creer_conversation($sujet,$message){
    
    $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
    $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
    
     $id_conversation = add_conversation($sujet);
     add_conversations_membres($id_conversation,$pseudo_dest); 
     add_conversations_messages($id_conversation,$pseudo_exp,$message);
    
     return $id_conversation;
    }
    
    function add_conversation($sujet=NULL){
     global $bdd;
    
     $sql = "INSERT INTO conversations (sujet_conversation)
             VALUES(:sujet)";
     $params = array(":sujet"=>$sujet);
     //On prepare l'insertion
     try{
      $prepare = $bdd->prepare($sql); 
      $prepare->execute($params);
      
      //récupère l'ID créé par l'insertion en BDD
      $id = $prepare->lastInsertId(); 
      
     }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
     
     return $id;
    }
    
    function add_conversations_membres($id_conversation,$pseudo_dest){
    global $bdd;
    
    $sql="INSERT INTO conversations_membres(id_conversation,pseudo_dest)
    		VALUES(:id_conversation,:pseudo_dest)";
    
    $params=array(":id_conversation"=>$id_conversation
                  ,":pseudo_dest"=>$pseudo_dest);
    
    try{
      $prepare = $bdd->prepare($sql); 
      $prepare->execute($params);
      
      //récupère l'ID créé par l'insertion en BDD
      $id = $prepare->lastInsertId(); 
      
     }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
      return $id;
    }
    
    function add_conversations_messages($id_conversation,$pseudo,$message=''){
    global $bdd;
    
    $sql="INSERT INTO conversations_messages(id_conversation,pseudo_exp,corps_message,date_message)
    VALUES(:id_conversation,:pseudo,:message, NOW())";
    
    $params=array(":id_conversation"=>$id_conversation
                  ,":pseudo"=>$pseudo
    			  ,":message"=>$message);
    
    try{
      $prepare = $bdd->prepare($sql); 
      $prepare->execute($params);
      
      //récupère l'ID créé par l'insertion en BDD
      $id = $prepare->lastInsertId(); 
      
     }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
      return $id;
    }
    
    ?>
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Remplace les lignes
       $id = $prepare->lastInsertId(); 
      

      Par :
       $id = $bdd->lastInsertId(); 
      
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Fatal error: Call to undefined method PDOStatement::lastInsertId() in C:\wamp\www\rs\functions\new_message.func.php on line 62

        <?php 
        //la function qui va nous permettre de verifier si le pseudo existe et si la personne n'essaye pas de s'auto envoyer un message
        
        function pseudo_incorrect(){
         global $bdd;
         $result=0;
         //Variables
          $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
         
         if($pseudo_get){
          $sql = "SELECT COUNT(pseudo) as NB
                 FROM utilisateurs
                 WHERE pseudo = :pseudo_get
        		 AND pseudo != :pseudo_session";
         
           // je place les  params dans une variable avant de l'utiliser :
          $params = array(':pseudo_session' =>$pseudo_session , ':pseudo_get' => $pseudo_get );
          try{
            $query = $bdd->prepare($sql);
            $query ->execute($params); 
            $req= $query->fetchall();
            
           $result= count($req)>0 ? $req[0]['NB']:0;
            
           }catch(Exception $e) {
             echo "<br>ERREUR ! ".$e->getMessage()."<br>";
             echo "<br>params : <br>";
             print_r($params);
           }
         } // Fin du  if($pseudo_session)
         // le return
         return $result;
        }
        
        // la fonction qui va crée la conversation et les messages qui va avec
         
        function creer_conversation($sujet,$message){
        
        $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
        $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $id_conversation = add_conversation($sujet);
         add_conversations_membres($id_conversation,$pseudo_dest); 
         add_conversations_messages($id_conversation,$pseudo_exp,$message);
        
         return $id_conversation;
        }
        
        function add_conversation($sujet=NULL){
         global $bdd;
        
         $sql = "INSERT INTO conversations (sujet_conversation)
                 VALUES(:sujet)";
         $params = array(":sujet"=>$sujet);
         //On prepare l'insertion
         try{
          $prepare = $bdd->prepare($sql); 
          $prepare->execute($params);
          
          //récupère l'ID créé par l'insertion en BDD
          $id = $prepare->lastInsertId(); 
          
         }catch(Exception $e) {
            echo "<br>ERREUR ! ".$e->getMessage()."<br>";
            echo "<br>params : <br>";
            print_r($params);
          }
         
         return $id;
        }
        
        function add_conversations_membres($id_conversation,$pseudo_dest){
        global $bdd;
        
        $sql="INSERT INTO conversations_membres(id_conversation,pseudo_dest)
        		VALUES(:id_conversation,:pseudo_dest)";
        
        $params=array(":id_conversation"=>$id_conversation
                      ,":pseudo_dest"=>$pseudo_dest);
        
        try{
          $prepare = $bdd->prepare($sql); 
          $prepare->execute($params);
          
          //récupère l'ID créé par l'insertion en BDD
          $id = $bdd->lastInsertId();
          
         }catch(Exception $e) {
            echo "<br>ERREUR ! ".$e->getMessage()."<br>";
            echo "<br>params : <br>";
            print_r($params);
          }
          return $id;
        }
        
        function add_conversations_messages($id_conversation,$pseudo,$message=''){
        global $bdd;
        
        $sql="INSERT INTO conversations_messages(id_conversation,pseudo_exp,corps_message,date_message)
        VALUES(:id_conversation,:pseudo,:message, NOW())";
        
        $params=array(":id_conversation"=>$id_conversation
                      ,":pseudo"=>$pseudo
        			  ,":message"=>$message);
        
        try{
          $prepare = $bdd->prepare($sql); 
          $prepare->execute($params);
          
          //récupère l'ID créé par l'insertion en BDD
          $id = $bdd->lastInsertId(); 
          
         }catch(Exception $e) {
            echo "<br>ERREUR ! ".$e->getMessage()."<br>";
            echo "<br>params : <br>";
            print_r($params);
          }
          return $id;
        }
        
        ?>
        0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Je t'ai dit ... remplaces LES ligneS
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci :)
        0