[RESOLU] Mettre des données php dans sa bdd

Eléphanteau du PHP | 33 Messages

12 mai 2015, 13:16

Bonjour,

Voila mon porblème est le suivant,

J'ai un formulaire et je veux mettre les infos dans une table de ma bdd mais je n'y arrive pas et je ne comprend pas pk
Voici mon code

if($_POST['demande']){
$sql = "SELECT * FROM tbl_demande_visite

INSERT INTO tbl_demande_visite ('id','visite','nom','prenom','email','telephone')
VALUES ('NULL','NULL','" . $_POST['nom'] . "','" . $_POST['prenom'] . "','" . $_POST['email'] . "','" . $_POST['telephone'] . "')";
}

c'est un formulaire classique et qui fonction puisque l'envoi de mail tourne

Avatar du membre
Mammouth du PHP | 1609 Messages

12 mai 2015, 13:31

Bonjour Guignard, il ne suffit pas d'écrire une requête sql pour que celle ci s'exécute. La tu définis juste une variable $sql.
De plus tu mets 2 requêtes dans la variable (un select et un insert) et cela va probablement faire une erreur quand tu tenteras de l'exécuter.

Tu peux utiliser PDO pour faire tes requêtes :
http://php.net/manual/fr/book.pdo.php

Tu peux regarder en particulier les parties "Connexions et gestionnaire de connexion" et "Requêtes préparées et procédures stockées".
Développeur web depuis + de 20 ans

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 mai 2015, 13:34

Bonjour,

Ta variable $sql contient deux requêtes, un SELECT et un INSERT, alors qu'elle ne devrait à priori contenir que ton INSERT ;)

Ps : ton test devrait être if (isSet($_POST['demande'])) pour vérifier que la variable est définie avec isSet(). Sinon, si $_POST['demande'] est vide, égal à 0, à false, ... le if ne se réalisera pas, alors que ta variable est bien transmise

PPs : dans ton insert, les noms des colonnes (avant le VALUES) ne doivent pas être délimitées pas des apostrophes, sinon SQL les considères comme des chaines et non comme des colonnes. Au pire, tu peux utiliser ce types d'apostrophe ` pour protéger un nom de champ avec MySQL. Cela sert lorsque l'on utilise (à tort) des mots clés sql réservés pour nommer ses colonnes. Elles sont donc inutiles dès lors que l'on respecte les conventions de nommages sql :)

PPPs : si tu passes la valeur 'NULL' entre apostrophe dans ta requête SQL, alors c'est la chaine de caractère NULL qui sera enregistrée en toute lettres, au lieu de laisser le champ à blanc (et donc à null) ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 33 Messages

12 mai 2015, 14:29

Merci a vous ca fonctionne désormais !