IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Vérifier que les conditions sont remplies avant d'envoyer les données


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Vérifier que les conditions sont remplies avant d'envoyer les données
    Bonjour,

    Imaginons que j'ai ça sur une page 01.php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post" action="02.php">
       <input name="nom" type="text"><br />
       <input type="submit" name="valider" value="Valider" />
    </form>

    Les données sont envoyées à 02.php et à ce moment je peux vérifier par exemple si le champs "nom" est empty ou non.
    Cela dit pour une question de logique, je voudrais faire cette vérification lorsque je suis encore sur 01.php, vérifier si l'utilisateur a mis quelquechose dans le champs de texte avant de cliquer sur le bouton, et seulement si c'est le cas, envoyer les données par post à 02.php.

    Si le champs est vide par contre je souhaiterais rester sur 01.php et afficher un message d'erreur du style "Veuillez indiquer votre nom". Y a t'il moyen de faire ça avec un formulaire?

    Merci

  2. #2
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Oui bien sur cela est possible, schématiquement il faut vérifier à chaque affichage de la page si le formulaire est envoyé ou non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (isset($_POST['valider'])) {
    // on vérifie les erreurs et on crée une variable recensant les erreurs
    } else {
    // on initialise les variables
    }
     
    if ((isset($_POST['valider'])) and ($erreur == 0)) {
    // traitement du formulaire
    } else {
    // affichage du formulaire
    }
    Ceci est très schématique, mais l'idée y est, ensuite il faut adapter en fonction de ce que tu veux faire exactement...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  3. #3
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Le plus simple est de le faire en javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <script type="text/javascript">
      function checkForm(){
        if(document.getElementById('nom').value == ""){
          alert('Vous devez indiquer votre nom !');
          return false;
        }else{
          document.getElementById('theform').submit();
        }
      }
    </script>
     
    <form method="post" id="theform" action="02.php">
       <input name="nom" id="nom" type="text"><br />
       <input type="button" name="valider" value="Valider" onClick="checkForm()" />
    </form>


    Les boutons et existent, servez-vous en

  4. #4
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Citation Envoyé par amoiraud Voir le message
    Le plus simple est de le faire en javascript :
    Ca a son intérêt mais qu'en association avec un contrôle coté php, car si javascript est désactivé, il n'y a plus de vérification, donc toujours vérifier coté serveur, et pour plus de confort (évite de recharger la page) faire une vérification avec javascript...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  5. #5
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par 12monkeys Voir le message
    Ca a son intérêt mais qu'en association avec un contrôle coté php, car si javascript est désactivé, il n'y a plus de vérification, donc toujours vérifier coté serveur, et pour plus de confort (évite de recharger la page) faire une vérification avec javascript...
    Ouais je suis d'accord avec toi, une vérification seule en javascript ne suffit pas, par contre c'est le seul moyen pour vérifier les champs avant l'envoi du formulaire, mais c'est mieux si on y ajouter les isset() sur la page de traitement du formulaire comme tu l'a dit


    Les boutons et existent, servez-vous en

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ouais pour l'instant j'en suis au php uniquement, après je rajouterai une couche de javascript par dessus mais ça doit pouvoir fonctionner comme vous l'avez dit avec le javascript désactivé.

    J'ai écrit ça depuis sur la base du schéma donné par 12Monkeys:
    Code 01.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?php
    	if (isset($_POST['valider']))
    	{
    		$prenom = htmlspecialchars($_POST['nom']);
    		if (empty($nom))
    			$erreur = 'nom non rempli';
    	}
     
    	if ((isset($_POST['valider'])) and (!isset($erreur)))
    	{
    	// traitement du formulaire
    	}
    	else
    	{
    	?>
    		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    		   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    		<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    		<head>
    			<title>titre</title>
    			<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8" />
    			<meta http-equiv="Content-Language" content="fr" />
    		</head>
     
    		<body>
    		<?php
    		if (isset($erreur))
    			echo $erreur;
    		?>
    			<form method="post" action="01.php">
    			   <input name="nom" type="text"><br />
    			   <input type="submit" name="valider" value="Valider" />
    			</form>
    		</body>
     
    		</html>
    	<?php
    	}
    ?>

    A la place de
    // traitement du formulaire
    je ne vois pas trop quoi mettre, à part définir des variables de sessions et les transmettre à la page 02.php, genre ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['nom'] = $_POST['nom']
    header("Location: 02.php");

    Parce que dans la mesure où j'ai écrit <form method="post" action="01.php">, il va falloir rediriger ensuite vers la page 02.php.

    (A la base j'avais écrit <form method="post" action="02.php"> mais le probleme dans ce cas c'est que dès que j'aurais cliqué sur le bouton je serai envoyé vers la page 02.php et dans ce cas la procédure de test
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	if (isset($_POST['valider']))
    	{
    		$prenom = htmlspecialchars($_POST['prenom']);
    		if (empty($prenom))
    			$erreur = 'prenom non rempli';
    	}
    n'aura jamais l'occasion d'être lancée...

  7. #7
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Citation Envoyé par embassies Voir le message
    A la place de
    // traitement du formulaire
    je ne vois pas trop quoi mettre, à part définir des variables de sessions et les transmettre à la page 02.php, genre ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['nom'] = $_POST['nom']
    header("Location: 02.php");
    Par rapport à ce que tu voulais faire c'est exactement ce qu'il fallait mettre

    Si tu veut supprimer ta page 02.php et tout mettre sur une page, il faut mettre le code de 02.php à cet endroit.

    Mais sinon laisse comme c'est
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ok! Merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier que tous les champs sont remplis
    Par nico_loin dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 19/12/2012, 11h25
  2. Vérifier que les champs sont remplis - formulaire
    Par bond70 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/11/2011, 23h22
  3. afficher une fenetre affichant les conditions non remplies
    Par doogybreton dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/01/2008, 00h03
  4. Réponses: 4
    Dernier message: 23/11/2006, 22h05
  5. Réponses: 3
    Dernier message: 02/03/2006, 21h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo