Souci PDO insertion donnée

Bonjour, et bonne année à tout le monde !

Voilà je vous contact car j'ai un petit souci de code php , j'ai coder mon petit bout de code de façon à insérer des informations dans une base de donnée, le problème est que je voudrais faire ça en PDO donc j'aimerais savoir si je peut avoir votre aide pour terminé mon code php .

commentaire.php

//Connexion à la BDD
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'test', 'password');


//récupération des valeurs des champs:

$nom          = mysql_real_escape_string($_POST["nom"]);
$prenom       = mysql_real_escape_string($_POST["prenom"]);
$message      = mysql_real_escape_string($_POST["message"]);


if(isset($_POST["nom"]) AND ($_POST["prenom"]) AND ($_POST["message"]))

{


// création des requêtes SQL:
$req = $db->prepare('INSERT INTO message_client(nom, prenom, message) VALUES(:nom, :prenom, :message)')
or exit(print_r($db->errorInfo()));
                                   
$req->execute(array('nom' => $nom, 'prenom' => $prenom, 'message' => $message ));


header('Location: ../client.aspx');
exit;
} 
else 
{
header('Location: ../client.aspx');
exit;
}


En sachant que le code que je vous montre ici prend les données d'un formulaire dans une autre page que voici :

FORMULAIRE :

echo '<form action="config/commentaire.php" method="post" id="formulaire_commentaire" name="formulaire_commentaire">';
echo '<br/>';
echo '<label for="inputEmail3" class="col-sm-2 control-label">Votre Nom</label>';
echo '<input class="form-control" type="text" placeholder="Entrer votre nom" id="nom" name="nom" required="required">';
echo '<br/>';
echo '<label for="inputPassword3" class="col-sm-2 control-label">Votre Prénom</label>';
echo '<input class="form-control" type="text" placeholder="Entrer votre Prénom" id="prenom" name="prenom" required="required">';
echo '<br/>';
echo '<label for="inputPassword3" class="col-sm-2 control-label">Votre Message :</label>';
echo '<textarea class="form-control" rows="5" placeholder="Votre message .... " id="message" name="message" required="required"></textarea>';
echo '<br/>';
echo '<br/>';
echo '<button type="submit" class="bouton_envoyer" border="0" name="bouton_envoyer" id="bouton_envoyer" title="Envoyer mon message !"></button>';
echo '</form>';


Merci d'avance pour votre aide

1 réponse

  1. Modérateur
    Bonjour,

    - Commence par faire ça :
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    -Retire toutes tes instructions :
    mysql_real_escape_string


    -Récupère "proprement" tes variables AVANT de les utiliser
    (comme dans l'exemple d'ici : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index )
    1. J'ai procéder ainsi, ais-je bon ?

      //Connexion à la BDD
      $db = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'test', 'password');
      
      
      //récupération des valeurs des champs:
      
      $nom          = $_POST["nom"];
      $prenom       = $_POST["prenom"];
      $message      = $_POST["message"];
      
      
      if(isset($_POST["nom"]) AND ($_POST["prenom"]) AND ($_POST["message"]))
      
      {
      
      
      // création des requêtes SQL:
      $req = $db->prepare('INSERT INTO message_client(nom, prenom, message) VALUES(:nom, :prenom, :message)') or exit(print_r($db->errorInfo()));
                                    
      $req->execute(array('nom' => $nom, 'prenom' => $prenom, 'message' => $message ));
      
      
      header('Location: ../client.aspx');
      exit;
      } 
      else 
      {
      header('Location: ../client.aspx');
      exit;
      }
      
    2. Modérateur
      @Pallard_damienTU n'as pas appliqué ne serait-ce qu'une seule des lignes de code des liens que je t'ai donné ...... tu te moques de moi ??
    3. @jordane45hum très accueillant parfait pour dérouter les personnes qui veulent apprendre, donc je doit remplacer isset par ça ce que tu n'indique en liens web ?

      Doit-je remplacer complètement ça :
      $nom          = $_POST["nom"];
      $prenom       = $_POST["prenom"];
      $message      = $_POST["message"];


      Par ça :
      $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
      $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL;
      $message = !empty($_POST['message']) ? $_POST['message'] : NULL;


      Ou alors complètement enlevé
      if(isset($_POST["nom"]) AND ($_POST["prenom"]) AND ($_POST["message"]))
      
      {
      
      jusqu'à ça fermeture 
      
      }


      De plus tu me montre un liens pour les sessions quel est le rapport ?
    4. Modérateur
      @Pallard_damienLa modification de ton précédent message s'est télescope avec ma reponse.
      Oui c'est mieux.

      Par contre il manque les try/catch et l'activation des erreurs pdo.(voirmon premier lien)