Affecter une variable à un champ d'un formulaire

Résolu/Fermé
BF3-974 Messages postés 50 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 1 septembre 2014 - 16 févr. 2014 à 19:26
DebianCoq Messages postés 26 Date d'inscription lundi 20 janvier 2014 Statut Membre Dernière intervention 24 février 2016 - 16 févr. 2014 à 20:26
Bonjour,
alors, mon problème est que je n'arrive pas à faire fonctionner le "$_POST".

Voici mon code :

<input type="text" name="code">
<input type="submit">

<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$code = $_POST['code'];
$desi = 'coca';
$dlc = '2014-02-29';
$bdd->exec("INSERT INTO produit VALUES('$code', '$desi', '$dlc')");
?>


J'y arrive parfaitement sans variable, mais pour pouvoir relier tout cela à un formulaire, il le faut ...

Merci d'avance !


1 réponse

Utilisateur anonyme
16 févr. 2014 à 19:52
Bonjour

Peux-tu donner le code complet de ton formulaire, de la balise <form> à la balise </form> ?

J'ai l'impression que tu crois que le php que tu as mis après ton formulaire attend gentiment que le formulaire soit rempli avant de s'exécuter. Ce n'est pas comme ça que ça marche.
Quand ton script s'exécute, il s'exécute complètement sans rien attendre. Donc il n'y a rien - la 1ère fois - dans $_POST, puisque le visiteur n'a encore rien rempli.
Ensuite, quand il clique sur le submit, le script que tu as indiqué dans l'"action" de ta balise form est appelé. Ce script reçoit le contenu de ton formulaire dans la variable $_POST.
Un tuyau : pour savoir si le visiteur a saisi quelque chose, tu peux tester l'existence des variables de ton formulaire :
if (isset($_POST['variable'])) {
traitement ...
}
0
BF3-974 Messages postés 50 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 1 septembre 2014 4
16 févr. 2014 à 20:11
Je t'ai tout donné xD (je ne compte pas <html></html> ect)
C'est vrai qu'en cour, on est lâché et on nous demande de faire du php comme ça. Sans réel explication. Soit je ne sais pas faire de recherche sur internet (mais je pense que si) soit les bases de ce genre ne sont pas expliquée ..
Et merci encore à toi le père, c'est la deuxième fois que tu m'aide ce soir ^^

Donc pour le tuyau, j'ai essayé quelque chose du genre :

<html>
<body>
<input type="text" name="code">
<input type="submit">
<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$desi = 'coca';
$dlc = "2014-02-29";
if (isset($_POST['variable'])) {
$code = $_POST['code'];
$bdd->exec("INSERT INTO produit VALUES('$code', '$desi', '$dlc')");
}
?>
</body>
</html>


Mais je pense m'être gouré encore quelque part car ça ne marche pas ...
1
DebianCoq Messages postés 26 Date d'inscription lundi 20 janvier 2014 Statut Membre Dernière intervention 24 février 2016 5
Modifié par DebianCoq le 16/02/2014 à 20:30
Le père a raison il manque des balises, notament la balise form qui precise la method="post" et l" action="destination" comme ceci:
 <form action="page_de_traitement_du_post.php" method="POST">

Précision: La page de traitement peux être la même que la page qui contient le formulaire mais pour eviter des message d' erreur il faut toujours verifier si POST existe comme ça:


if(isset($_POST)) {
//execute les actions de traitement de POST
}
0
DebianCoq Messages postés 26 Date d'inscription lundi 20 janvier 2014 Statut Membre Dernière intervention 24 février 2016 5
16 févr. 2014 à 20:26
0