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 :

Faciliter la récupération des POSTS de formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut Faciliter la récupération des POSTS de formulaire
    Bonjour,

    Dans une LONG formulaire où je fais toutes mes vérifications en php, c'est assez "fatiguant" pour chaque input de mettre le code ci-dessous pour ne pas perdre la valeur déjà postée si celle-ci est valide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="number" class="medium" name="min_buy" step="1" min="0" value="<?php if(isset($_POST['min_buy'])){echo $_POST['min_buy'];}?>">
    Alors j'essaie de faire le code ci-dessous mais pas moyen de récupérer la valeur dans l'input mais le print_r fonctionne bien.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach($_POST as $key=>$value){
        if(isset($_POST)){
            $key = $value;
            print_r($value);
        }
    }

    Pouvez-vous m'aider?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 334
    Par défaut
    Bonjour,

    c'est ceci que tu désires ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach($_POST as $key=>$value){
        //if($value){ // if($key!='submit') {
        if (is_numeric($value))
            echo '<input type="number" class="medium" name="'.strip_tags($key).'" step="1" min="0" value="'.$value.'">';
        //}
    }
    edit : ok sabo, ai rajouté is_numeric()

    ---------------------------------------------------------------------
    Il serait plus facile de créer un tableau de tes inputs que tu vas utiliser pour
    créer le form
    recupérer les input

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $inputs= array(
     'val1'=>'Heure de début',
     'val2'=>'Heure de fin',
     // ...
     'val222'=>'Age du capitaine'
    );
    creation du form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($inputs as $key=>$label){
        $value= strip_tags($_POST[ $key ]);
        echo '<input type="number" title="'.$label.'" class="medium" name="'.$key.'" step="1" min="0" value="'.$value.'">';
    }
    recuperation des datas dans bd:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($inputs as $key=>$label){
        $value= (int)$_POST[ $key ];
    }

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce que tu as essayé d'écrire c'est ce que fais la fonction extract() mais ce n'est pas recommandé de fonctionner comme ça car tu vas permettre l'injection de variables dans ton code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut
    Merci Sabotage et papajoker.

    Oui j'aimerai ne pas écrire la valeur de chaque champ dans l'attribut value.
    J'aimerai le récupérer sous forme de variable.
    Tout en sachant que je teste les valeurs entrées comme ceci (seulement un extrait car la liste est tres longue):

    Code 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
     
    $alert = new Alert();
    if(!empty($_POST)){
        if(empty($_POST['id_business'])){
            $alert->setFlash(E_SELECT_ETS);
        }
        if(empty($_POST['code_coupon'])){
            $alert->setFlash(E_NAME_COUPON);
        }
        if(empty($_POST['start'])){
            $alert->setFlash(E_DATE_START);
        }
        if(empty($_POST['end'])){
            $alert->setFlash(E_DATE_END);
        }
        if(empty($_POST['desc_coupon_en'])){
            $alert->setFlash(E_DESC_EMPTY.L_EN);
        }
        if(empty($_POST['desc_coupon_fr'])){
            $alert->setFlash(E_DESC_EMPTY.L_FR);
        }
    }
    $alert->flash();

    Et la classe qui va avec:

    Code 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
     
    class Alert{
        public function setFlash($message,$type = "error"){
            $_SESSION['flash'] = array(
                'message'=>$message,
                'type'=>$type
            );
        }
        public function flash(){
            if(isset($_SESSION['flash'])){
                echo "<div class=\"error alert alert-".$_SESSION['flash']['type']."\">
                      <a class=\"close success\">&times</a>".$_SESSION['flash']['message']."
                      </div>\n";
                unset($_SESSION['flash']);
            }
        }
    }

    Je désire simplement ne pas obliger l'utilisateur à réécrire les données qui sont correctes.
    Je sais les récupérer mais c'est long de chaque fois mette dans l'attibut de l'input la value:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php if(isset($_POST['min_buy'])){echo $_POST['min_buy'];}?>

    Donc je me demandais si il n'y a pas un moyen + rapide et surtout sécurisé.
    Pour un formulaire de 3 champs cela va mais dès que l'on attend 20 ou + cela devient pénible.

    Merci de votre aide

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce que te propose papajoker est simple et sécurisé : lister les champs que tu veux traiter dans un tableau PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut
    Je ne comprends pas trop...

    voici un exemple de formulaire ci dessous.

    Comment je peux faire avec l'expication de papajoker?
    Car mes input ne sont pas tous de meme type

    Merci d'avance

    Code html : 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
    60
    61
    62
    63
    64
    65
     
    <div class="content">
        <?php 
        $general = new General();
        $general->titlePage();
        $input = new InputSelect();
        ?>
        <form name="add_coupon" method="post" action="<?php echo $action_form.$general->setLink("add_coupon");?>" enctype="multipart/form-data">
            <div class="col col6">
                <label class="required"><?php echo COM_BUSINESS_FOR;?></label>
                <?php 
                $input->selectBusiness();
                ?>
                <label class="required"><?php echo C_NAME_COUPON;?></label>
                <input type="text" name="code_coupon" class="medium">
                <label><?php echo C_BUY_MIN." (".$money.")";?></label>
                <input type="number" class="medium" name="min_buy" step="1" min="0" value="">
            </div>
            <div class="col col6">
                <div class="icol50">
                    <label class="required"><?php echo COM_START_DATE;?></label>
                    <input type="text" id="start" name="start" class="medium datepicker" readonly>
                </div>
                <div class="icol50">
                    <label class="medium right required"><?php echo C_COUPON_FOR;?></label>
                    <select name="coupon_for" class="medium right">
                        <option value="">-----</option>
                        <option value="0"><?php echo C_ALL_PEOPLE;?></option>
                        <option value="1"><?php echo C_REGISTER_PEOPLE;?></option>
                    </select>
                </div>
                <div class="icol50">
                    <label class="required medium"><?php echo COM_END_DATE;?></label>
                    <input type="text" id="end" name="end" class="medium datepicker" readonly>
                </div>
                <div class="icol50">
                    <label class="medium right"><?php echo C_NBR_COUPON;?></label>
                    <input type="number" class="medium right" name="nbr_coupon" step="1" min="1">
                </div> 
                <div class="icol100">
                    <label><?php echo C_CUMUL;?></label>
                    <div class="icol50">
                        <?php echo COM_YES;?>
                        <input type="radio" name="cumul" value="1">
                    </div>
                    <div class="icol50">
                        <?php echo COM_NO;?>
                        <input type="radio" name="cumul" value="0">
                    </div>
                </div>
            </div>
            <div class="col col12"><hr></div>
            <div class="col col2">
                <p class="required"><?php echo COM_DESC;?></p>
            </div>
            <div class="col col12">
            <?php 
            $general->tabslLang();
            ?>
            </div>
            <?php 
            $general->submit("submit_coupon",COM_SAVE,"submit_coupon","icon-save",1);
            ?>
        </form>
    </div>

Discussions similaires

  1. Récupération des données du formulaire.
    Par rey55 dans le forum Langage
    Réponses: 10
    Dernier message: 22/05/2013, 13h49
  2. Récupération des données de formulaire dans une page JSP
    Par fauthie dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/09/2009, 14h02
  3. php et récupération des champs du formulaire
    Par kadiato dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 07/05/2009, 16h45
  4. Réponses: 3
    Dernier message: 26/09/2008, 13h10
  5. Récupération des variables de formulaire
    Par Delgion dans le forum Langage
    Réponses: 9
    Dernier message: 04/09/2007, 12h44

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