Php formulaire conditions

Fermé
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020 - 28 mars 2020 à 03:10
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 8 avril 2020 à 21:09
Bonjour,
dans un formulaire php,
je voudrai demander le nom, prénom, l'age et la date dans une page dans laquelle des personnes veulent s'inscrire(à un événement), ma question est donc juste la suivante s'il vous plait:

comment faire en sorte que si l'utilisateur entre une date autre que celles entre le 1 et 15 avril 2020, une erreur s'affiche qui dit qu'il faut choisir une date pendant l’événement

et afficher la phrase si tout a été rentré: [nom][prenom], vous avez bien était inscrit le[date] et vous devrez payer [10$ si l'utilisateur à plus de 40 ans ou 20$ si il a moins de 40ans]


merci d'avance

12 réponses

Bonjour,
un formulaire c'est avant tout en HTML, ce sont les données transmises par ce formulaire qui sont traitées éventuellement en PHP.

"comment faire en sorte que si l'utilisateur entre une date autre que celles entre le 1 et 15 avril 2020, une erreur "
Un test logique vous connaissez ? sinon renseignez vous sur les maths de Boole et les fonctions de test logique disponible en PHP et dans tout les langages de programmation dignes de ce nom.

Exemple:
https://www.php.net/manual/fr/control-structures.if.php

"et afficher la phrase si tout a été rentré:"
voir réponse précédente et l'algorithmique en règle général(organisation des critères et cheminement logique de l'information dans un programme - ou des fonctionnalités et résolutions).
Mais concrètement PHP est un langage serveur. Pour afficher quelque chose vous devez utiliser une page HTML (client) ce qui peut être fait en écrivant le HTML ou son contenu via la fonction echo dans la page.

Remarque:
Lors de la vérification de champs de formulaire une première vérification en JavaScript(programmation sur le navigateur donc client) qui bloque ou autorise l'envoi du formulaire à son traitement vers un programme PHP.
Dans le cas d'un champ non remplit correctement cela évite de faire un traitement serveur qui ne débouches pas et les temps nécessaires à l'envoi et réception de ceux ci à la page.
Par exemple si le champ nom ou prénom ne sont pas remplit il est inutile d'en faire le traitement si ceux ci sont nécessaires dans le programme. Donc envoyer et ne pas traiter les données du formulaire est une perte de temps (d'affichage) pour l'utilisateur , ne pas l'envoyer et l'avertir de remplir correctement le formulaire est beaucoup plus logique. Voir aussi l'attribut de balise HTML required pour les champs input concernés.

Dans la même logique il est plus cohérent et facile pour l'utilisateur de restreindre les choix d'une date aux dates permises. Cela peut se faire sans programmation en HTML(voir attribut min et max):
https://www.alsacreations.com/tuto/lire/1407-formulaire-html5-type-date-time-local.html
Bien sûr cela n'empêche pas d'autres vérifications et protocole de sécurité à implémenter dans le programme qui restent tout à fait nécessaire mais empêche un certain nombres d'erreurs possible lors du choix d'une entrée par l'utilisateur en fonctionnement normal.

Un autre principe courant pour des fonctionnalités plus avancées et de meilleurs vitesses de transfert entre serveurs(programmes et bases de données) et clients est d'utiliser AJAX.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
28 mars 2020 à 08:00
Bonjour,

As tu essayé quelque chose ?
As tu cherché ?
Voici un début de réponse :
https://www.google.com/search?q=php+compare+date


0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
29 mars 2020 à 01:28
d'accord merci je préférerai m'occuper de la date en dernier... d'abord j'aimerai savoir comment faire pour que les cases deviennent rouges si rien à été entré (ou un message d'erreur )
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 03:03
Des cases à cocher ?? De quelle case parles-tu ???
Là il s'agit d'une autre question qui n'a rien à voir avec celle de départ.

De toute façon ma réponse restera la même :
- qu'as-tu essayé ?
- qu'as-tu cherché ?

ici on ne donne pas du code tout cuit si tu ne fais pas d'effort tu n'auras pas de réponse.
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
29 mars 2020 à 03:16
Je ne parle pas de case à coser, je parle de la case où on doit entrer le nom, le label mais J'ai trouvé ce code que j'ai un peu modifié, il fonctionne mais je le trouve dur... je prefere ne pas l'utiliser...
<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>  

<?php
// define variables and set to empty values
$nameErr ="";
$name =  "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }

}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }

}

function test_input($data) {
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="name">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>

  <input type="submit" name="submit" value="Submit">  
  

</form>

<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";

?>

</body>
</html>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 08:16
Si tu le trouves dur... Arrête la programmation.
Désolé mais tu n'auras pas plus simple.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 08:51
Enfin.. y'a plus simple.
Pour les champs "obligatoires" (required)
https://www.alsacreations.com/tuto/lire/1391-formulaire-html5-placeholder-required-pattern.html
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
29 mars 2020 à 17:47
Ah d'accord merci je trouve que c'est beaucoup plus facile j'ai tout compris sur votre lien
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
Modifié le 29 mars 2020 à 17:54
J'ai donc fait ca dans un fichier index.php:
<!doctype html>
<html lang="fr">
 <head>
  <meta charset="utf-8">
  <title>Le formulaire</title>
 </head>
 <body>
  <form action="retourne.php" method="post">
    <label>Nom</label> : <input type="text" required="required" name="nom"/>

    <label>Prénom</label> : <input type="text" required="required" name="prenom"/>
    
    <label>Age</label> : <input type="number" required="required" name="age"/>
    <input type="submit" value="Envoyer" />
  </form>
 </body>
</html>


et ca dans un fichier retourne.php :
<?php
    $n=$_POST['nom'];
    $p=$_POST['prenom'];
 $q=$_POST['age'];
    echo "<p>Bonjour ".$p." ".$n.",vous avez ".$q." ans et j'espère que vous allez bien.</p>";
?>


c'est bon pour le debut ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 17:56
A toi de nous dire si ça correspond à tes besoins......

Tu peux également lire et appliquer ceci pour tes devs...
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
Modifié le 29 mars 2020 à 18:03
Oui c'est exactement ce que j'ai besoin car très facile à comprendre et je pourrai le réutiliser donc sans problème après ce n'est pas la parti facile....
Pour ce qui est de l'age (plus ou moins de 40 ans)
En cherchant j'ai l'impression que ca ressemble( UN PEU )à pyhton(avec les conditions)...
If ($age>40){
echo "Vous payez 20euros}
else{"vous payez 40 euros}
je ne sais pas comment faire...Je sais que le code ne fonctionne pas mais les conditions seront dans le quel code php des 2 ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 18:16

En cherchant j'ai l'impression que ca ressemble( UN PEU )à pyhton(avec les conditions)

Ben .. oui... c'est le même genre de code...
Pour faire un test... faut utiliser les structures conditionnelles...


mais les conditions seront dans le quel code php des 2 ?

Les deux quoi ??
Tu n'as qu'un code php dans ce que tu nous montres....
L'autre.. c'est du code html.

Maintenant.. pour trouver le code à utiliser.. je t'ai donné, dans ma première réponse un lien très utile...
Commence par là et reviens nous voir que lorsque tu auras commencé réellement à coder quelque-chose
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
Modifié le 29 mars 2020 à 19:19
J'ai essayé plusieurs choses dont ça (et aussi ce que vous avez envoyé sur votre lien aussi avec $a>$b)
mais ca ne fonctionne pas :
<?php
    $n=$_POST['nom'];
    $p=$_POST['prenom'];
 $q=$_POST['age'];
$sup=40
 if ($age > $sup) {
  echo "Bonjour ".$p." ".$n.",vous avez ".$q." ans vous payez rien .";
} else{
    echo "Bonjour ".$p." ".$n.",vous avez ".$q." ans vous payer 40.";
}
?>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 19:29
peux-tu appliquer les consignes que je t'ai donné dans le lien gestion des erreurs PHP et écriture du code si tu actives l'affichage des erreurs tu verras qu'il manque un point, à une ligne de ton code...
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
29 mars 2020 à 19:40
J'ai reussi merci ! il manqué un ";" et il ne fallait pas noter $age mais $q

voici :
<?php
    $n=$_POST['nom'];
    $p=$_POST['prenom'];
	$q=$_POST['age'];
$sup=40;
	if ($q > $sup) {
  echo "Bonjour ".$p." ".$n.",vous avez ".$q." ans vous payez rien .";
} else{
    echo "Bonjour ".$p." ".$n.",vous avez ".$q." ans vous payer 40.";
}
?>


Maintenant il ne me reste plus que la date à ajouter et faire en sorte que la personne choissise une date entre le 10/04/2020 et le 24/04/2020
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 29 mars 2020 à 20:24
Par contre... tu ne veux vraiment pas suivre les conseils donnés dans les liens que je t'ai filé ??!!!!
Activation des erreurs PHP
Récupération Propre des variables AVANT de les utiliser...
Bref.. des trucs qui sont utiles.. surtout quand on débute comme toi !

Sache que je ne t'apporterai plus mon aide si tu refuses de t'impliquer sérieusement....
Je suis patient.. mais jusqu'à une certaine limite.
Donc sans efforts de ta part tu n'obtiendras certainement plus grand chose de moi.
Prends en bonne note pour tes prochaines questions !
Merci
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
29 mars 2020 à 20:37
désolé... je ne comprend pas bien votre lien, il permet d'afficher les erreurs si il y en a ? mais en en l’occurrence il n'y en a plus ? et toute façon lorsque j'appuie sur envoyer si il y a une erreur à chaque fois la ligne est indiqué
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 mars 2020 à 21:37

toute façon lorsque j'appuie sur envoyer si il y a une erreur à chaque fois la ligne est indiqué

Donc, lorsqu'il manquait le point-virgule... il y avait un message d'erreur et tu ne nous l'as pas indiqué ??

Si les erreurs s'affichent, (et toutes les erreurs.. mais j'en doute un peu...) c'est que ton php.ini est bien configuré ( tel qu'expliqué dans le lien que je t'ai donné et que tu as donc lu.. n'est-ce pas ? )

Mais il n'y a pas que ça...
Il est également expliqué la "récupération" propre des variables AVANT de les utiliser (afin d'éviter d'autres erreurs justement).

Bref,
Pour cette discussion il semble que tu puisses la mettre en résolue ...
Et lorsque tu auras un nouveau souci, tu ouvriras une nouvelle discussion sur le forum en expliquant en détail le souci rencontré et en montrant le code utilisé.
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
29 mars 2020 à 23:21
J'essaye depuis une heure de changer la date et j'ai enfin réussi pour qu'elle se mette en français... Maintenant il ne me reste plus que faire en sorte que la date soit entre le 10 et le 24 avril 2020
0
nin54_3169 Messages postés 23 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 30 mars 2020
30 mars 2020 à 00:17
Ensuite je ne vois pas comment faire pour faire en sorte qu'un message d'erreur s'affiche si l'utilisateur entre une date autre que celles comprises entre le 10 et 24 avril 2020... la seul chose que j'ai trouvé c'est restreindre les dates que l'utilisateur peut entrer (ici : https://developer.mozilla.org/fr/doc...ent/Input/date)
mais je veux que l'utilisateur puisse entrer n'importe qu'elle date mais que le formulaire renvoi un message d'erreur si la date n'est pas compris entre ces dates et demande d'entrer des dates compris (entre le 10 et 24 avril)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
8 avril 2020 à 21:09
En faisant comme je te l'ai indiqué dans ma première réponse :
https://forums.commentcamarche.net/forum/affich-36536683-php-formulaire-conditions#2
0