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

PHP & Base de données Discussion :

Champs de formulaire obligatoire


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut Champs de formulaire obligatoire
    Bonjour,

    Je souhaiterais rendre les champs de mon formulaire obligatoire avec une petite pop up d'avertissement, j'ai trouvé des exemples sur internet mais je n'arrive pas à le mettre en application, quelqu'un peut-il m'aider, voici le code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
                //Connection
    	$connection=mysql_connect("localhost","root","");
     
    	//Selcetion dela base de donnee
    	$base=mysql_select_db("dispatch");
     
    	$commande=explode("\n",$_POST['commande']);
    	$date = date("Y-m-d");
     	$today = date('j-m-y-H-i-s');
    	$codebare = '*'.$today.'*';
    	foreach($commande as $index=>$value){
     
    	 //Ecriture de la requete
    	 $sql = "INSERT INTO retour VALUES (NULL, '".
    	 $value."', CURRENT_TIMESTAMP, '".
    	 $_POST['dispatcheur']."',' ".
    	 $_POST['preparateur']."', '".
    	 $_POST['service']."', '".
    	 $date."', '".
    	 $_POST['zone']."')";
     
    	//Execution de la requete
    	$resultat=mysql_query($sql);
    }   
    ?>
    Merci.

  2. #2
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Pour afficher une pop-up tu doit utiliser javascript et une autre page qui affichera l'erreur.

    Pour ma part je te conseille de tester les valeurs obligatoires et d'afficher un message et/ou de rediriger l'utilisateur sur le formulaire du style:

    Si tu définit que les champs toto, tata et titi sont obligatoires:

    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
    17
    18
    19
    20
     
    <?php
    $erreur = false;
     
    if(isset($_POST['toto'], $_POST['tata'], $_POST['titi']) && $_POST['toto'] != '' && $_POST['tata'] != '' && $_POST['titi'] != '') {
      // Tu execute le code d'insertion, les champs sont renseignés
    } else {
      $erreur = true;
    }
     
    // Du code ...
     
    if($erreur) {
    ?>
      <h2><?php echo "Les champs toto, tata et titi sont obligatoires"; ?></h2>
    <?php
      // redirection si tu veux
      // tu peut aussi mettre en rouge les champs du formulaire etc...
    }
    ?>
    Tiens moi au jus

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Merci pour l'éclaircissement, cependant je comprends pas l'ordre des étapes, comment je peu definir mes $POST... puis exécuter la requete puisque les $POST... font partie de la requete.
    Je ne sais pas si je sui sclair mes je n'arrive pas à placer ma requete et l'execution de requete.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    J'avance petit à petit et j'ai le début du code qui ressemblerait à ça :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    $erreur = false;
     
    if(isset($_POST['commande'], $_POST['dispatcheur'], $_POST['preparateur'], $_POST['service'], $_POST['zone']) && $_POST['commande'] != '' && $_POST['dispatcheur'] != '' && $_POST['preparateur'] != '' && $_POST['service'] != '' && $_POST['zone'] != '') 
    {
       $sql = "INSERT INTO retour VALUES (NULL, '".
    	 $value."', CURRENT_TIMESTAMP, '".
    	 $_POST['dispatcheur']."',' ".
    	 $_POST['preparateur']."', '".
    	 $_POST['service']."', '".
    	 $date."', '".
    	 $_POST['zone']."')";
     
    } else {
      $erreur = true;
    }
     
    // Du code ...
     
    if($erreur) {
    ?>
      <h2><?php echo "Les champs toto, tata et titi sont obligatoires"; ?></h2>
    <?php
      // redirection si tu veux
      // tu peut aussi mettre en rouge les champs du formulaire etc...
    }
    ?>
    C'est après que je bloque....

  5. #5
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Bonjour,

    Idéalement, ton code doit être fonctionnel sans js.
    Tu peux le rendre fonctionnel sans js, puis une fois cet objectif atteint, ajouter js en sur-couche.

    Si tu souhaites tout mettre dans une seule page, c'est tout à fait réalisable. Il faut juste se mettre à la place du µ pour raisonner sur l'ordre (thread) avec lequel arrivent les évènements. En résumé, tu mets tes contrôles en début de page; selon le résultat, soit tu affiches ton formulaire soit tu envoies tes données dans la dB.

    Le principe pourrait ressembler à ça (non testé) :

    ta_page.php
    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
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
    // Là tu démarres une session pour conserver des variables de contrôle lors de l'envoi de ton formulaire sur cette même page (et ainsi éviter une redirection)
    session_start();
     
    // Lors du renvoi sur ta page, tu commences par les contrôles qui te renverront ensuite, soit sur ton formulaire, soit sur l'enregistrement dans ta dB
    // Les contrôles des contenus et formats reçus, y compris tes champs obligatoires
    if (isset($_POST)) {
    $erreur = false ;
    // contrôle du premier champ
    // par exemple si le champ est vide ou qu'il ne correspond pas au format imposé
    $ta_regex_de_controle = '/^[a-z]$/' ;
    if (empty($_POST['truc']) || !preg_match($ta_regex_de_controle, $_POST['truc'])) {
       $erreur = true ;
      // Et si tu veux afficher une popup en cas d'erreur, ça peut se passer ici
      if ($erreur) {
          echo '<script type="text/javascript" src="ta_pop_up.js"></script>';
       }
    }
     
    // Contrôle du deuxième champ
    // etc...
     
    // Enfin, tu conserves le status Ok ou Nok selon le résultat de tes tests sur les variables reçues en POST
    $_SESSION['probleme_detecte'] = ($erreur)? true : false ;
    }
     
    //
     
    }
     
    // Tu vas sur ton formulaire si c'est la première fois que tu lances cette page ou si tu as détecté une erreur ci-dessus
    if (!isset($_POST) || true === $_SESSION['probleme_detecte']) {
       echo  '<form action="ta_page.php" method="POST">';
     
       echo 'tes champs inputs avec éventuellement l\'affichage d\une erreur dans le champ value, et pourquoi pas l\'afficher en rouge';
        // par exemple comme ça
       $value = ($_SESSION['probleme_detecte'])? 'champ obligatoire' :'' ;
       $color =  ($_SESSION['probleme_detecte'])? 'style="color:red;"' :'' ;
     
       echo '<input type="text" id="alpha_1" value='.$value.' '. $color.' />' ;
       echo  '</form>';
    }
    else {
    // et si tu arrives à ce stade, c'est que tout va bien, tu peux balancer tes données dans la dB
    // en n'oubliant par les htmlspecialschars sur tes variables $_POST
       // une belle méthode: $_POST = array_map('htmlspecialchars', $_POST);	
       // Une moins belle méthode : transfert dasn un autre tableau
        $my_array= array();
        foreach($_POST as $key => $data) {
           $my_array[$key] = htmlspecialchars($data);
       }
     
    // Et tu balances ton tableau $my_array dans ta dB
     
    // sans oublier mysql_close() ;
     
    }
    ?>

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    Oh lala du javasript, j'ai du lire au moin 20 tuto et je n'ai pas encore saisie la logique, ca a tendance à m'éffrayer pourtant visiblement l'on peut faire plein de chose avec.
    Je vais essayer de suivre ton exemple de code et reviens juste après....

  7. #7
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Salut

    Si tu débutes et que tu ne connais pas js, j'insiste sur le fait de commencer par tout construire en php et de n'ajouter js qu'une fois la page php complètement construite et testée. Une pop up est un bon début. Il ne faut pas s'en faire une montagne.

    Nota: Ce n'est qu'un exemple de principe que je t'ai posté, pour le js, il faut charger un script en fin de ta page html, et n'appeler que la fonction js dans la partie, docn ne pas faire comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Et si tu veux afficher une popup en cas d'erreur, ça peut se passer ici
      if ($erreur) {
          echo '<script type="text/javascript" src="ta_pop_up.js"></script>';
       }

Discussions similaires

  1. Rendre un champ de formulaire obligatoire XML
    Par jedouille dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 18/10/2013, 15h14
  2. Réponses: 4
    Dernier message: 10/08/2010, 23h40
  3. rendre certains champs de formulaire obligatoire
    Par rasleboldesid dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/08/2006, 15h54
  4. [MySQL] Champs formulaire obligatoire
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/04/2006, 17h25
  5. saisie obligatoire dans un champs de formulaire
    Par Didi17 dans le forum Access
    Réponses: 2
    Dernier message: 28/10/2005, 03h51

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