IF...et/ou... then ... else...
Résolu/Fermé
danielos77
Messages postés
108
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
16 janvier 2024
-
8 avril 2020 à 17:48
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 9 avril 2020 à 07:18
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 9 avril 2020 à 07:18
A voir également:
- IF...et/ou... then ... else...
- Please remove the installation medium then press enter - Forum Ubuntu
- Turn off then on - Forum Matériel & Système
- If exist - Forum Programmation
- Miswiring check wiring then power on ✓ - Forum Autoradio
- Bios has been reset please reconfigure a bios setup items if needed - Forum BIOS
3 réponses
jordane45
Messages postés
38430
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2025
4 735
8 avril 2020 à 18:10
8 avril 2020 à 18:10
<?php //activation de l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //on inclut le fichier de connexion à la bdd require_once "secure/cnxBdd.php"; //on récupère proprement la variable avant de l'utiliser $Num = !empty($_POST['Num']) ? trim($_POST['Num']) : NULL; // on récupère la variable NULL et on supprime les "lead spaces" // initialisation des autres variables pouvant servir $result = NULL; if($Num){ // si la variable $Num existe et n'est pas nulle/vide //préparation de la requête $sql = ' SELECT Num FROM Inscriptions WHERE Num = :Num '; //le résultat égal à la variable $Num ira dans un tableau $datas = array(':Num' => $Num); //Execution de la requete try{ $req = $bdd->prepare($sql); $req->execute($datas); //un seul resultat possible $result = $req->fetch(); }catch(Exception $e){ // en cas d'erreur : echo " <br>Erreur ! ".$e->getMessage(); echo " <br>Les datas : " ; print_r($datas); } } if( !empty($Num) && !empty($result) ){ // Si la variable $Num existe et n'est pas nulle/vide ET si la variable $result existe et n'est pas nulle/vide echo '<p>Une fois saisie, envoyez votre demande <input name="Validation" type="submit" value="Envoyer" /></font></p>'; } else { echo '<input name="Validation" style="display:none" type="submit" value="Envoyer" />'; } //$req->closeCursor(); // Termine le traitement de la requête ==>>> Pas necessaire !
Bonjour
"Tant qu'elle n'est pas définie, le bouton est masqué. Un autre choix aurait peut-être été de vérifier à l'arrivée du fichier de transmission et de renvoyer la personne sur le formulaire. mais pourquoi laisser partir quelque chose qui est faux. "
En effet il faut faire les 2.
Une solution pour vérifier qu'un champ est remplie passe par le HTML avec l'attribut required qui permet de bloquer l'envoi du formulaire sans avoir à le masquer:
https://www.w3schools.com/tags/att_input_required.asp
Le reste passe par des tests(comme if) en JavaScript voire des expressions régulières(regExp) quand il faut vérifier la structure d'une chaîne(comme une adresse email de forme valide avec un arobase un point et un domaine, qu'un numéro de téléphone ne contient que des nombres, etc...).
"surtout dans l'interface entre le clavier et le fauteuil. " ahaha mais de l'humour et du travail donc ça ira , surtout que ce n'est pas très compliqué ni un sujet rare qui manque d'explications.
Évidemment le test en PHP est nécessaire, il doit éviter aussi de faire passer du code qui pourrait nuire à la base de données(injection SQL) mais comme vous avez deviné il n'est pas nécessaire d'envoyer le formulaire s'il n'est pas rempli correctement(et même mieux parce que plus rapide que devoir faire la requête serveur pour afficher un message d'erreur à l'utilisateur).
Plus efficace, convivial et ergonomique est de vérifier avec JavaScript et indiquer les erreurs à corriger lors de l'envoi annulé au serveur.
D'autres astuces peuvent utiliser HTML avec les différents types d'input(number ne permet que de mettre des nombres, un input date pour une date etc...) et avec required (attribut) si le champ doit obligatoirement être rempli.
"Tant qu'elle n'est pas définie, le bouton est masqué. Un autre choix aurait peut-être été de vérifier à l'arrivée du fichier de transmission et de renvoyer la personne sur le formulaire. mais pourquoi laisser partir quelque chose qui est faux. "
En effet il faut faire les 2.
Une solution pour vérifier qu'un champ est remplie passe par le HTML avec l'attribut required qui permet de bloquer l'envoi du formulaire sans avoir à le masquer:
https://www.w3schools.com/tags/att_input_required.asp
Le reste passe par des tests(comme if) en JavaScript voire des expressions régulières(regExp) quand il faut vérifier la structure d'une chaîne(comme une adresse email de forme valide avec un arobase un point et un domaine, qu'un numéro de téléphone ne contient que des nombres, etc...).
"surtout dans l'interface entre le clavier et le fauteuil. " ahaha mais de l'humour et du travail donc ça ira , surtout que ce n'est pas très compliqué ni un sujet rare qui manque d'explications.
Évidemment le test en PHP est nécessaire, il doit éviter aussi de faire passer du code qui pourrait nuire à la base de données(injection SQL) mais comme vous avez deviné il n'est pas nécessaire d'envoyer le formulaire s'il n'est pas rempli correctement(et même mieux parce que plus rapide que devoir faire la requête serveur pour afficher un message d'erreur à l'utilisateur).
Plus efficace, convivial et ergonomique est de vérifier avec JavaScript et indiquer les erreurs à corriger lors de l'envoi annulé au serveur.
D'autres astuces peuvent utiliser HTML avec les différents types d'input(number ne permet que de mettre des nombres, un input date pour une date etc...) et avec required (attribut) si le champ doit obligatoirement être rempli.
danielos77
Messages postés
108
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
16 janvier 2024
2
9 avril 2020 à 07:18
9 avril 2020 à 07:18
Bonjour Nanaki,
Merci de tes conseils mais difficilement applicable dans mon cas.
Le required sur l'input est bien utilisé mais l'input est dans un formulaire précédent (sur la même page) => c'est donc sa valeur $_POST que je dois vérifier.
Pour expliquer en 2 mots. C'est un formulaire d'inscription dans lequel au départ, il est demandé un N° pour afficher un éventuel historique. C'est ce N° qui une fois validé (=>1er submit - form[0]) permet d'afficher l'historique de la personne. Ensuite, la personne même si elle n'a pas d'historique, peut s'inscrire et la validation se fait alors avec un second submit form[1]. C'est cette validation là que je ne montre que si le N° à donner dans le form[0] est dans la base. Un appui direct sur le second submit sans avoir au préalable submiter le form[0] provoquant une erreur dans le fichier.php de transmission des données.
Ensuite, j'essaie de ne pas trop utiliser de JS (du moins quand il y a des possibilités autres car suivant les navigateurs, les configurations des postes utilisateurs voire des restrictions dans des entreprises, le JS ne passe pas toujours).
La solution choisie et corrigée par Jordane que je remercie encore me convient parfaitement mais merci pour les conseils et explications.
Daniel
Merci de tes conseils mais difficilement applicable dans mon cas.
Le required sur l'input est bien utilisé mais l'input est dans un formulaire précédent (sur la même page) => c'est donc sa valeur $_POST que je dois vérifier.
Pour expliquer en 2 mots. C'est un formulaire d'inscription dans lequel au départ, il est demandé un N° pour afficher un éventuel historique. C'est ce N° qui une fois validé (=>1er submit - form[0]) permet d'afficher l'historique de la personne. Ensuite, la personne même si elle n'a pas d'historique, peut s'inscrire et la validation se fait alors avec un second submit form[1]. C'est cette validation là que je ne montre que si le N° à donner dans le form[0] est dans la base. Un appui direct sur le second submit sans avoir au préalable submiter le form[0] provoquant une erreur dans le fichier.php de transmission des données.
Ensuite, j'essaie de ne pas trop utiliser de JS (du moins quand il y a des possibilités autres car suivant les navigateurs, les configurations des postes utilisateurs voire des restrictions dans des entreprises, le JS ne passe pas toujours).
La solution choisie et corrigée par Jordane que je remercie encore me convient parfaitement mais merci pour les conseils et explications.
Daniel
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Ambassadeur
1 568
8 avril 2020 à 18:06
8 avril 2020 à 18:06
bonjour,
la syntaxe de if en php:
il me semble que tu négliges de mettre les parentheses autour de la condition.
la syntaxe de if en php:
if (condition)
il me semble que tu négliges de mettre les parentheses autour de la condition.
8 avril 2020 à 19:40
ça marche. Un énorme merci Jordane.
J'avais bien tenté un =! pour tester la variable $_POST['Num'] mais l'erreur obtenue m'avait incitée à quitter cette piste.
faut dire que j'avais mis
$_POST['Num'] =! ""
Que je traduisais littéralement dans ma tête la variable obtenue par post n'est pas vide... mais bon, c'était tout faux.
J'aurai sûrement encore avoir à faire sur ce forum ...
Best regards
8 avril 2020 à 20:58