Souci PDO insertion donnée

Fermé
Pallard_damien - Modifié par Pallard_damien le 25/01/2017 à 17:54
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 25 janv. 2017 à 18:27
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
A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
25 janv. 2017 à 17:53
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 )
0
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;
}
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Pallard_damien
25 janv. 2017 à 18:00
TU 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 ??
0
Pallard_damien > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié par Pallard_damien le 25/01/2017 à 18:12
hum 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 ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Pallard_damien
25 janv. 2017 à 18:27
La 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)
0