Affecter une variable à un champ d'un formulaire [Résolu/Fermé]

Signaler
Messages postés
50
Date d'inscription
jeudi 12 juillet 2012
Statut
Membre
Dernière intervention
1 septembre 2014
-
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
-
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


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 ...
}
Messages postés
50
Date d'inscription
jeudi 12 juillet 2012
Statut
Membre
Dernière intervention
1 septembre 2014
3
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 ...
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
4
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
}
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
4