Le code "plus propre" ne fonctionne pas.
Résolu/Fermé
A voir également:
- Le code "plus propre" ne fonctionne pas.
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code blocks free - Télécharger - Langages
- Code windows 10 - Guide
4 réponses
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
20 nov. 2020 à 11:45
20 nov. 2020 à 11:45
Bonjour,
Vu que ça bloque au niveau du IF .... as tu bien une variable $_POST['Action'] qui est envoyée dans ton formulaire ??
Peux tu, juste après ton
faire un
et nous montrer ce qu'il contient ?
PS: Pour l'instant, ce code n'est pas plus "propre" ... tu y as juste activé l'affichage des erreurs PHP...
Donc à voir si tu n'aurais pas des messages d'erreur qui s'afficheraient.... et dans ce cas... nous les donner...
Vu que ça bloque au niveau du IF .... as tu bien une variable $_POST['Action'] qui est envoyée dans ton formulaire ??
Peux tu, juste après ton
echo "Test <br>";
faire un
echo "<pre>"; print_r($_POST); echo "</pre>";
et nous montrer ce qu'il contient ?
PS: Pour l'instant, ce code n'est pas plus "propre" ... tu y as juste activé l'affichage des erreurs PHP...
Donc à voir si tu n'aurais pas des messages d'erreur qui s'afficheraient.... et dans ce cas... nous les donner...
Bonjour Jordane45,
Voici le résultat après le mot Test :
Array
(
[Votant] => TOTO
[Num] => 1555_13
[Vote1] => NON
[Vote2] => ABSTENTION
[Vote3] => NON
[Vote4] => ABSTENTION
[Vote5] => OUI
[Vote6] => OUI
[Vote7] => OUI
[Vote8] => OUI
)
Et il n'y a aucun message d'erreur php
Voici le résultat après le mot Test :
Array
(
[Votant] => TOTO
[Num] => 1555_13
[Vote1] => NON
[Vote2] => ABSTENTION
[Vote3] => NON
[Vote4] => ABSTENTION
[Vote5] => OUI
[Vote6] => OUI
[Vote7] => OUI
[Vote8] => OUI
)
Et il n'y a aucun message d'erreur php
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
20 nov. 2020 à 11:57
20 nov. 2020 à 11:57
Et il n'y a aucune variable Action non plus ....
Donc normal qu'il n'entre pas dans ton if ...
Donc normal qu'il n'entre pas dans ton if ...
J'ai bien
à l'ouverture du formulaire.
<form name="0" action="EnvoiVote.php" method="post">
à l'ouverture du formulaire.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
20 nov. 2020 à 12:08
20 nov. 2020 à 12:08
mais ça... ça ne génère pas de variable Action ....
Il faut avoir un INPUT qui ait comme NAME le mot "Action"
à la limite, tu peux ajouter, dans ton form
Il faut avoir un INPUT qui ait comme NAME le mot "Action"
à la limite, tu peux ajouter, dans ton form
<form name="0" action="EnvoiVote.php" method="post"> <input type="hidden" name="Action" value="1" />
Daniel
>
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
20 nov. 2020 à 12:10
20 nov. 2020 à 12:10
Oui c'était aussi une solution mais je ne pense pas avoir fait une grosse erreur en donnant le name d'une variable du formulaire dans le isset.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
>
Daniel
20 nov. 2020 à 12:12
20 nov. 2020 à 12:12
Tu peux aussi, simplement mettre un attribut NAME au bouton qui te sert à faire le SUBMIT
mais oui, ta solution fonctionne également.
<input type="submit" name="Action" value="Envoyer" />
mais oui, ta solution fonctionne également.
Salut,
name = 0? ça vous sert ça? Pas la bonne syntaxe en tout cas , un nom ne pouvant être un nombre si on veut l'utiliser en tant que variable dans un programme.
Ce que vous indiquez est simplement l'adresse de la page qui va traiter les données du formulaire.
Vu que vous utilisez la méthode POST toutes les valeurs du formulaire seront envoyées via la variable globale $_POST.
La variable ACTION n'existe donc pas, dans le formulaire HMTL c'est un attribut de balise qui indique simplement quelle action sera effectuée: en l’occurrence envoyer les données à la page PHP indiquées.
/!\ attention au noms de fichiers(et de dossiers) avec des majuscules. Parfois celles ci ne sont pas prise en compte et au mieux cela sera une source possible d'erreur; donc mieux vaux écrire tout en minuscule(fichiers et dossiers) pour éviter les erreurs. "envoivote.php" donc sera plus propre, plus simple à utiliser(c'est déjà plus rapide à taper) et évitera les erreurs pour les serveurs qui ne prennent pas en compte les majuscules.
Donc comme vous l'avez indiqué vous même tout (les valeurs/données du formulaires) sont transmises par la variable super-globale $_POST. Donc c'est celle ci que vous devez tester, nulle part il n'existe de variable $_POST['action'] sauf évidemment si vous en attribuez une.
Ainsi la syntaxe de votre condition:
C'est donc la base de l'utilisation d'un formulaire (HTML) qui vous manquait ici.
Autre détail mais d'importance pour la requête je vous conseille de regarde du côté de PDO:
https://www.php.net/manual/fr/book.pdo.php
Il vaut mieux aussi vérifier que les champs sont bien remplis directement dans le formulaire.
Cela évite une requête serveur si les champs ne sont pas correctement remplis et sera donc plus rapide pour avoir l'erreur(les champs doivent être remplis)
Voir par exemple l'attribut de balise "required" à compléter par des vérifications en JavaScript(donc côté client aussi) qui permettent d'affiner un peu le message d'erreur si les champs ne sont pas correctement remplis.
Cela n'empêche pas non plus de vérifier côté PHP toutefois, le but étant de rendre impossible l'enregistrement dans la base de valeurs incohérentes(des nombres quand on attends des lettres ou inversement, des valeurs qui ne sont pas cohérent avec le SI.. etc.)
Plus de détails sur la transmission de données via la méthode POST ici:
https://www.php.net/manual/fr/reserved.variables.post.php
edit: owned
name = 0? ça vous sert ça? Pas la bonne syntaxe en tout cas , un nom ne pouvant être un nombre si on veut l'utiliser en tant que variable dans un programme.
Ce que vous indiquez est simplement l'adresse de la page qui va traiter les données du formulaire.
Vu que vous utilisez la méthode POST toutes les valeurs du formulaire seront envoyées via la variable globale $_POST.
La variable ACTION n'existe donc pas, dans le formulaire HMTL c'est un attribut de balise qui indique simplement quelle action sera effectuée: en l’occurrence envoyer les données à la page PHP indiquées.
/!\ attention au noms de fichiers(et de dossiers) avec des majuscules. Parfois celles ci ne sont pas prise en compte et au mieux cela sera une source possible d'erreur; donc mieux vaux écrire tout en minuscule(fichiers et dossiers) pour éviter les erreurs. "envoivote.php" donc sera plus propre, plus simple à utiliser(c'est déjà plus rapide à taper) et évitera les erreurs pour les serveurs qui ne prennent pas en compte les majuscules.
Donc comme vous l'avez indiqué vous même tout (les valeurs/données du formulaires) sont transmises par la variable super-globale $_POST. Donc c'est celle ci que vous devez tester, nulle part il n'existe de variable $_POST['action'] sauf évidemment si vous en attribuez une.
Ainsi la syntaxe de votre condition:
if (!empty($_POST)) /* code ici */ }
C'est donc la base de l'utilisation d'un formulaire (HTML) qui vous manquait ici.
Autre détail mais d'importance pour la requête je vous conseille de regarde du côté de PDO:
https://www.php.net/manual/fr/book.pdo.php
Il vaut mieux aussi vérifier que les champs sont bien remplis directement dans le formulaire.
Cela évite une requête serveur si les champs ne sont pas correctement remplis et sera donc plus rapide pour avoir l'erreur(les champs doivent être remplis)
Voir par exemple l'attribut de balise "required" à compléter par des vérifications en JavaScript(donc côté client aussi) qui permettent d'affiner un peu le message d'erreur si les champs ne sont pas correctement remplis.
Cela n'empêche pas non plus de vérifier côté PHP toutefois, le but étant de rendre impossible l'enregistrement dans la base de valeurs incohérentes(des nombres quand on attends des lettres ou inversement, des valeurs qui ne sont pas cohérent avec le SI.. etc.)
Plus de détails sur la transmission de données via la méthode POST ici:
https://www.php.net/manual/fr/reserved.variables.post.php
edit: owned
Bonjour Pikachu,
Merci pour ces compléments.
Oui le required est utilisé comme le pattern et le js pour permettre à l'auteur la conservation de sa saisie.
Pour le PDO, Jordane m'a déjà envoyé un article à lire mais j'irai tout de même faire un tour sur votre lien.
Merci encore pour votre contribution à mon "sauvetage".
Daniel
Merci pour ces compléments.
Oui le required est utilisé comme le pattern et le js pour permettre à l'auteur la conservation de sa saisie.
Pour le PDO, Jordane m'a déjà envoyé un article à lire mais j'irai tout de même faire un tour sur votre lien.
Merci encore pour votre contribution à mon "sauvetage".
Daniel
Ok .. vu l'erreur.
J'étais reparti d'une page où il y avait une variable action.... alors que là, je ne l'avais plus.
En remplaçant Action par une variable existante ça marche beaucoup mieux.
En fait le Isset ne contrôle la présence que d'une variable. De là, on considère que les autres aussi sont bien arrivées.
Merci pour le temps passé sur cette banalité pour toi mais qui m'a fait encore progresser.
@+ et merci encore Jordane45
J'étais reparti d'une page où il y avait une variable action.... alors que là, je ne l'avais plus.
En remplaçant Action par une variable existante ça marche beaucoup mieux.
En fait le Isset ne contrôle la présence que d'une variable. De là, on considère que les autres aussi sont bien arrivées.
Merci pour le temps passé sur cette banalité pour toi mais qui m'a fait encore progresser.
@+ et merci encore Jordane45
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
20 nov. 2020 à 12:10
20 nov. 2020 à 12:10
Et n'oublies pas, vu que tu fais du PDO, à placer CHAQUE requête dans un bloc TRY/CATCH
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Daniel
>
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
20 nov. 2020 à 12:13
20 nov. 2020 à 12:13
Ok, je vais lire l'article.
Merci de ta générosité.
Daniel
Merci de ta générosité.
Daniel