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 :

Comment poster un select vide ?


Sujet :

HTML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut Comment poster un select vide ?
    Bonjour,

    J'ai un formulaire qui contient des select et, afin de pouvoir traiter efficacement ce formulaire derrière en PHP, j'aurais besoin de pouvoir poster tous les champs -- SELECT vides compris. Or, le comportement par défaut en HTML, c'est de ne pas poster justement les SELECT sur lesquels l'utilisateur n'a rien choisi.

    Sur ce que j'ai trouvé sur internet pour le moment, une solution consiste justement à poster dans tous les cas quelque chose (genre une valeur par défaut vide) et de faire le tri ensuite en PHP. Si cette solution marche bien, elle est moche à mon goût : elle oblige de faire des traitements supplémentaires qui me semblent lourds et contournables.

    Existe-t-il une meilleure solution ? Merci de votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je suis curieux de voir le code de tes <select>.
    Et encore plus curieux de voir à quoi ressemble un <select> "vide".

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Ok, à lire ton commentaire je me rends compte que je me suis mal exprimé avec ce select "vide".

    Le code que j'ai, c'est par exemple ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select name='villes[]' multiple='multiple'>
      <option value='Paris'></option>
      <option value='Rennes'></option>
      <option value='Nantes'></option>
    </select>
    Et lorsque l'utilisateur ne choisit aucune valeur, aucune valeur n'est passée en POST. Or, je souhaiterais avoir plutôt un $_POST qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    array(
        'villes' => array() // Ou => '' ; ou => null, peu importe
    )

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <input type="hidden" name="villes[]" value="" />
    <select name='villes[]' multiple='multiple'>
      <option value='Paris'></option>
      <option value='Rennes'></option>
      <option value='Nantes'></option>
    </select>
    Voire, si tu ne veux pas envoyer de valeur vide si le select est renseigné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <input id="emptyValue" type="hidden" name="villes[]" value="" />
    <select name='villes[]' multiple='multiple' onchange="document.getElementById('emptyValue').disabled = !!this.value">
      <option value='Paris'></option>
      <option value='Rennes'></option>
      <option value='Nantes'></option>
    </select>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Invité
    Invité(e)
    Par défaut
    Quoi qu'il en soit, tu es bien obligé de vérifier si tu as reçu quelque chose :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $villes_array = (!empty($_POST['villes']))? $_POST['villes'] : NULL;
    echo '<pre>';
    print_r($villes_array);
    echo '</pre>';
    ?>
    Equivalent à :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(!empty($_POST['villes'])){
    	$villes_array = $_POST['villes'];
    } else {
    	$villes_array = NULL;
    }

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Ok. Donc à vous lire il n'y a pas de solution prévue par la norme HTML mais des contournements que l'on peut effectuer en rajoutant des input hidden + javascript.

    J'espérais qu'il existe une simple option HTML pour forcer le POST d'un select même sans valeur sélectionnée, mais bon

    Merci de votre aide !

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Au pire, rien ne t'empêche de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="" selected></option>
    en début de liste...

    Mais à part ça, un formulaire est sensé envoyer des données renseignées par l'utilisateur et pas des données qu'il n'aurait pas renseignées...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. [excel]comment supprimer une colonne vide...
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/10/2005, 13h10
  2. Comment Acceder à la Selection de sources ODBC
    Par lassad dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/10/2005, 10h16
  3. Réponses: 2
    Dernier message: 27/09/2005, 17h26
  4. Comment placer un selected dans un boucle
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 22/06/2004, 16h55
  5. [TStringGrid] Masquer la sélection
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/05/2004, 15h26

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