Update PDO

Bonjour à tous !

J'ai un petit soucis sur ce bout de code et sollicite votre aide :
<?php
$NumId = $_GET["info"];

$Fr_Titre					= $_POST["Fr_Titre"];
$Fr_Descriptions			= $_POST["Fr_Descriptions"];
$En_Titre					= $_POST["En_Titre"];
$En_Descriptions			= $_POST["En_Descriptions"];
$CI 						= isset($_POST["CI"]) ? "1" : "0";
$SN 						= isset($_POST["SN"]) ? "1" : "0";

$Fr_Titre					= stripslashes($Fr_Titre);
$Fr_Descriptions			= stripslashes($Fr_Descriptions);
$En_Titre					= stripslashes($En_Titre);
$En_Descriptions			= stripslashes($En_Descriptions);

$FR_PDO = $pdo->prepare("UPDATE tb_fr_infos SET Titre=:Fr_Titre, Descriptions=:Fr_Descriptions, CI=:CI, SN=:SN WHERE NumId = '$NumId' ");
$FR_PDO->bindParam(":Titre", $Fr_Titre); 
$FR_PDO->bindParam(":Descriptions", $Fr_Descriptions); 
$FR_PDO->bindParam(":CI", $CI); 
$FR_PDO->bindParam(":SN", $SN); 
$FR_PDO->execute();

$EN_PDO = $pdo->prepare("UPDATE tb_en_infos SET Titre=:En_Titre, Descriptions=:En_Descriptions, CI=:CI, SN=:SN WHERE NumId = '$NumId' ");
$EN_PDO->bindParam(":Titre", $En_Titre); 
$EN_PDO->bindParam(":Descriptions", $En_Descriptions); 
$EN_PDO->bindParam(":CI", $CI); 
$EN_PDO->bindParam(":SN", $SN); 
$EN_PDO->execute();

if($req){echo("<div class=\"Message\">L'enregistrement a été édité avec succès.</div>");}else{
echo("<div class=\"Erreur\">Une erreur est survenue lors de l'enregistrement.</div>");} exit();
if (!empty($_GET["msg"])){$msg=urldecode($_GET["msg"]); $msg=stripslashes($msg); echo("<div class=\"Erreur\">$msg</div>");}
?>


Je ne comprends pas pourquoi il n'édite pas :\

3 réponses

  1. Bonjour

    Tu appelles tes marqueurs :Fr_Titre, :Fr_Description... dans tes requêtes, mais :Titre et :Description seulement dans tes bindParam
    1. J'ai essayé ça aussi... je bidule ::s
      $FR_PDO = $pdo->prepare("UPDATE tb_fr_infos SET Titre=:Fr_Titre, Descriptions=:Fr_Descriptions, CI=:CI, SN=:SN WHERE NumId = '$NumId' ");
      $FR_PDO->bindParam(":Fr_Titre", $Fr_Titre); 
      $FR_PDO->bindParam(":Fr_Descriptions", $Fr_Descriptions); 
      $FR_PDO->bindParam(":CI", $CI); 
      $FR_PDO->bindParam(":SN", $SN); 
      $FR_PDO->execute();
      Rien y fait ! Il n'édite aucune ligne...
  2. Le père à raison :
    Tu écris
    $FR_PDO->bindParam(":Titre", $Fr_Titre);

    Mais dans ta requête tu écris ":Fr_Titre"

    $FR_PDO->bindParam(":Fr_Titre", $Fr_Titre);

    serait correct, idem pour description.

    Je me pose quelques questions :
    Pourquoi ne pas utiliser le bindParam pour les paramètres des clauses WHERE?

    Ta variable $req de la condition qui suit le dernier execute() est elle définit dans un code précédent que nous n'avons pas?

    Exit stop bien le script courant? Quel est l'intérêt de la condition après le exit()?

    Résolu? ===> [RESOLU]
    1. Fr_Titre et Fr_Descriptions sont le nom de mes textarea
      Je suis nouveau, mais vraiment TRES nouveau avec les pdo :s C'est ma première "edition" et je ne comprends presque rien a rien :'(
  3. Voici ce que j'ai par fini mais qui ne fonctionne toujours pas :
    <?php
    $NumId = $_GET["info"];
    
    $Fr_Titre    = $_POST["Fr_Titre"];
    $Fr_Descriptions   = $_POST["Fr_Descriptions"];
    $En_Titre    = $_POST["En_Titre"];
    $En_Descriptions  = $_POST["En_Descriptions"];
    $CI      = isset($_POST["CI"]) ? "1" : "0";
    $SN      = isset($_POST["SN"]) ? "1" : "0";
    
    $Fr_Titre    = stripslashes($Fr_Titre);
    $Fr_Descriptions   = stripslashes($Fr_Descriptions);
    $En_Titre    = stripslashes($En_Titre);
    $En_Descriptions  = stripslashes($En_Descriptions);
    
    $FR_PDO = $pdo->prepare("UPDATE tb_fr_infos SET Titre=:Fr_Titre, Descriptions=:Fr_Descriptions, CI=:CI, SN=:SN WHERE NumId = '$NumId' ");
    $FR_PDO->bindParam(":Fr_Titre", $Fr_Titre); 
    $FR_PDO->bindParam(":Fr_Descriptions", $Fr_Descriptions); 
    $FR_PDO->bindParam(":CI", $CI); 
    $FR_PDO->bindParam(":SN", $SN); 
    $FR_PDO->execute();
    
    $EN_PDO = $pdo->prepare("UPDATE tb_en_infos SET Titre=:En_Titre, Descriptions=:En_Descriptions, CI=:CI, SN=:SN WHERE NumId = '$NumId' ");
    $EN_PDO->bindParam(":En_Titre", $En_Titre); 
    $EN_PDO->bindParam(":En_Descriptions", $En_Descriptions); 
    $EN_PDO->bindParam(":CI", $CI); 
    $EN_PDO->bindParam(":SN", $SN); 
    $EN_PDO->execute();
    
    if($req){echo("<div class=\"Message\">L'enregistrement a été édité avec succès.</div>");}else{
    echo("<div class=\"Erreur\">Une erreur est survenue lors de l'enregistrement.</div>");}
    if (!empty($_GET["msg"])){$msg=urldecode($_GET["msg"]); $msg=stripslashes($msg); echo("<div class=\"Erreur\">$msg</div>");}
    ?>


    pourtant cette page là fonctionne bien :
    <?php
    $NumId = $_GET["rss"];
    
    $Date						= $_POST["Date"];
    $Titre						= $_POST["Titre"];
    $Descriptions				= $_POST["Descriptions"];
    $Lien						= $_POST["Lien"];
    
    $Date						= stripslashes($Date);
    $Titre						= stripslashes($Titre);
    $Descriptions				= stripslashes($Descriptions);
    $Lien						= stripslashes($Lien);
    
    $PDOStatement = $pdo->prepare("UPDATE tb_rss SET Date=:Date, Titre=:Titre, Descriptions=:Descriptions, Lien=:Lien WHERE NumId = '$NumId' ");
    $PDOStatement->bindParam(":Date", date('Y-m-d H:i:s', strtotime($Date)));
    $PDOStatement->bindParam(":Titre", $Titre); 
    $PDOStatement->bindParam(":Descriptions", $Descriptions); 
    $PDOStatement->bindParam(":Lien", $Lien); 
    $PDOStatement->execute();
    
    if($req){echo("<div class=\"Message\">Le flux RSS a été édité avec succès.</div>");}else{
    echo("<div class=\"Erreur\">Une erreur est survenue lors de l'enregistrement.</div>");} 
    if (!empty($_GET["msg"])){$msg=urldecode($_GET["msg"]); $msg=stripslashes($msg); echo("<div class=\"Erreur\">$msg</div>");}
    ?>