problème formulaire

Petit nouveau ! | 4 Messages

26 avr. 2021, 22:55

Bonjour,

Je suis étudiant dans le code.

Jusqu'à present mon formulaire fonctionnait bien.

Aujourd'hui je fais un test. Lorsque tous les champs sont rempli, la page traitement doit afficher "Formulaire transmis".
S'il n'est pas rempli correctement, la page doit afficher "Veuillez remplir tous les champs".

Quel que soit ce que je remplis ou pas j'ai maintenant "Formulaire transmis Veuillez remplir tous les champs".

Pouvez vous m'aider?

Le code

<?php

try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=formulaire;charset=utf8', 'root', 'root');
echo "Formulaire transmis";

}

catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

if (!empty ($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['tel']) && !empty($_POST['mail']) && !empty($_POST['msg']) && strlen($_POST['nom'])>1 && strlen($_POST['prenom'])>1)
{
// injection balise html
$_POST['nom']=strip_tags($_POST['nom']);
$_POST['prenom']=strip_tags($_POST['prenom']);
$_POST['tel']=strip_tags($_POST['tel']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['msg']=strip_tags($_POST['msg']);

// l'insertion pour le formulaire
$req=$bdd->prepare('INSERT INTO Données(nom,prenom,tel,mail,msg) VALUES(:nom,:prenom,:tel,:mail,:msg)');

// l'execuxion du formulaire
$req->execute(array(

'nom'=>$_POST['nom'],
'prenom'=>$_POST['prenom'],
'tel'=>$_POST['tel'],
'mail'=>$_POST['mail'],
'msg'=>$_POST['msg'],

));

}

//affichage de l'erreur

else {
echo "Veuillez remplir les champs";

}



?>

Petit nouveau ! | 4 Messages

26 avr. 2021, 22:58

je viens de créer le compte afin de recevoir les éventuels réponses =)

Mammouth du PHP | 2703 Messages

26 avr. 2021, 23:04

sans le formulaire html, impossible de trouver le problème.

si en remplaçant :
if (!empty ($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['tel']) && !empty($_POST['mail']) && !empty($_POST['msg']) && strlen($_POST['nom'])>1 && strlen($_POST['prenom'])>1)
par
if(1)
cela exécute la requête, il faut remettre petit à petit les tests pour trouver ce qui cloche.

Petit nouveau ! | 4 Messages

26 avr. 2021, 23:34

voici le formulaire

<form action="traitement.php" method="post">
<div>
<label for="name">Nom :</label>
<input type="text" id="name" name="nom">
</div>
<div>
<label for="surname">Prénom :</label>
<input type="text" id="prenom" name="prenom">
</div>
<div>
<label for="tel">Téléphone :</label>
<input type="text" id="tel" name="tel">
</div>
<div>
<label for="mail">E-mail :</label>
<input type="email" id="mail" name="mail">
</div>
<div>
<label for="msg">Message :</label>
<textarea id="msg" name="msg"></textarea>
</div>
<div class="button">
<button type="submit">Envoyer le message</button>
</div>

</form>

Eléphant du PHP | 111 Messages

27 avr. 2021, 08:05

Question bête surement mais pourquoi ne pas mettre un required a chaque input comme ça tu n'a pas besoin de tester si il est vide
<label for="name">Nom :</label>
<input type="text" id="name" name="nom" required>
</div>

Petit nouveau ! | 4 Messages

28 avr. 2021, 11:49

merci beaucoup je ne connaissais pas required

Avatar du membre
Eléphant du PHP | 70 Messages

28 avr. 2021, 15:08

Salut

L'attribut HTML required permet de tester en effet si un champs et vide lors de la soumission, mais attention cela reste facilement modifiable par l'utilisateur !! Il est INDISPENSABLE de toujours vérifier les informations soumis par un utilisateur ! (CF. Never Trust user input )

Pour une meilleur lisibilité, utilisez la balise [c0de][/c0de] ou [.PHP][/PHP]( avec un o à la place du 0 ou sans le . ) pour visualiser le code comme ceci :
try {
  // On se connecte à MySQL
  $bdd = new PDO('mysql:host=localhost;dbname=formulaire;charset=utf8', 'root', 'root');
  echo "Formulaire transmis";
} catch(Exception $e) {
  // En cas d'erreur, on affiche un message et on arrête tout
  die('Erreur : '.$e->getMessage());
}
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala