Function creer_conversation en pdo (avec insert values) [Résolu/Fermé]

Signaler
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
-
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
-
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

Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
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 !

Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
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
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
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?
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
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
}

?>





Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
Parse error: syntax error, unexpected '}' in C:\wamp\www\rs\functions\new_message.func.php on line 120 mtn
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280 >
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020

Bon sens !!!!!!!!!!!
C'est la même chose que l'autre à une autre ligne. ... tu ne peux pas trouver tout seul ?????
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
A-ha pardon
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
sinon l'expression c'est bon sang
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280 >
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020

Au temps pour moi....
mais bon... ça ... tu trouves l'erreur. tout de suite.... mais pour ce qui est du code.....
Penses que nous t'aidons sans avoir les mêmes fichiers (ni la BDD) que toi.... et donc qu'il peut y avoir (comme tu as pu t'en rendre compte) quelques erreurs de frappe....
Comme on te l'a déjà indiqué dans de (nombreux) précédents messages.... lorsqu'il y a un message d'erreur... commence par regarder à la ligne indiquée si tout est bon..et si c'est le cas.. regardes la (ou les) lignes d'avant !

Maintenant que tu as remis le point-virgule manquant à la ligne
  return $id 

tu peux nous dire si ce code fonctionne ... et si c'est le cas... mettre cette discussion en RESOLU.

Merci
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
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>
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
<?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>
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
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;
}

?>
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
Remplace les lignes
 $id = $prepare->lastInsertId(); 

Par :
 $id = $bdd->lastInsertId(); 
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8 >
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021

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;
}

?>
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021
3 280
Je t'ai dit ... remplaces LES ligneS
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8 >
Messages postés
31471
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 février 2021

Merci :)