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

HTML Discussion :

formulaire html dynamique


Sujet :

HTML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 59
    Par défaut formulaire html dynamique
    Bonjour,

    dans une page d'administration, je mets au point un formulaire pré-rempli avec un recordset de ma base de donnée.
    Ce recordset contient un nombre variable d'enregistrement.

    Par exemple: id et nom du client

    Je veux mettre ces informations dans un formulaire pour le renvoyer à un nouveau script qui fera le post-traitement.

    Il me semblait qu'il était possible de définir dans un formulaire une série de champs portant le même nom mais avec des crochets pour indiquer que c'est un tableau. Mais je n'arrive plus à retrouver la syntaxe correcte.

    C'était quelque chose ressemblant à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="nom[]" value="...">
    Ce qui me permettrait d'avoir un formulaire construit ressemblant à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="hidden" name="nom[]" value="jean"> 
    <input type="hidden" name="nom[]" value="jacques"> 
    etc..

    Ainsi, lorsque je le récupère en php je peux exploiter $_POST de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo $_POST[nom[0]];        // edit: retrait d'une apostrophe qui n'a pas lieu d'être (faute de frappe sur le forum)
    ?>
    Cependant, avec la syntaxe utilisée plus haut, j'obtiens le résultat suivant:

    var_dump($_POST) affiche
    ["nom"]=> bool(false)
    alors que j'attendrais un truc du genre
    ["nom"] => Array(2)
    et var_dump($_POST["nom"]) donne
    nom[0] => "jean"
    nom[1] => "jacques"


    Quelqu'un voit-il de quoi je parle et aurait-il la syntaxe html correcte ?

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo $_POST['nom[0]]; 
    ?>
    que donnerai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo $_POST[nom[0]]; 
    ?>
    avec l'apostrophe en moins?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 59
    Par défaut
    l'apostrophe est une faute de frappe lors de la rédaction de ma question. Il n'est pas présent dans mon code source.

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    C'est la bonne syntaxe html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="traitement.php" method="post">
        <input type="hidden" name="nom[]" value="jean"/> 
        <input type="hidden" name="nom[]" value="jacques"/>
        <input type="submit" value="send"/>
    </form>

    Par contre si je fais un var_dump($_POST) dans traitement.php, j'obtiens bien:
    Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    array(1) {
      ["nom"]=>
      array(2) {
        [0]=>
        string(4) "jean"
        [1]=>
        string(7) "jacques"
      }
    }

    Donc pour accéder au tableau c'est $_POST['nom'] et pour le premier item c'est $_POST['nom'][0].

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 59
    Par défaut
    Merci. Je viens de trouver la source du problème mais pas sa solution.

    J'utilise une fonction utilitaire générale qui me permet de nettoyer la variable $_POST

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        foreach ($_POST as $key => $value) {
            $_POST[$key] = filter_input($value, FILTER_SANITIZE_STRING);
        }

    Apparemment cela bousille les tableaux reçus par la variable d'environnement.

    Je vais voir sur le forum php si quelqu'un a une solution pour ça
    (pour info, le post est à cet endroit: https://www.developpez.net/forums/d2...ctement-_post/ )

    merci.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    tu es sûr de cette syntaxe ?
    $_POST[$key] = filter_input($value, FILTER_SANITIZE_STRING);
    Il te faut également utiliser le filtre FILTER_REQUIRE_ARRAY il me semble.

    Peut être quelque chose comme :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST[$key] = filter_input(INPUT_POST, $key, FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
    mais bon attend les réponses dans ton autre discussion !

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

Discussions similaires

  1. Contrôle dynamique de formulaire HTML
    Par Polychinelle dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/01/2017, 18h52
  2. Formulaire HTML et Objets dynamiques
    Par ALEX77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/11/2010, 16h47
  3. Réponses: 3
    Dernier message: 06/03/2006, 11h34
  4. [POO] Formulaire HTML + fonction JS = Erreur
    Par bdaboah dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/11/2004, 21h59
  5. [VB.Net] Comment generer une page html dynamiquement ?
    Par Anonymous dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/03/2003, 10h22

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