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 :

récupérer valeurs d'un tableau passé par post


Sujet :

Langage PHP

  1. #1
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut récupérer valeurs d'un tableau passé par post
    Bonjour

    ma question doit être basique mais je sèche.
    Je transmet des valeurs d'id avec une case a cocher via un formulaire.
    je veux récupérer ces valeurs pour déclencher une action.
    quand je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "<pre>";
    print_r($_POST);
    echo "</pre>";
    j'affiche ces valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Array
    (
        [1] => on
        [4] => on
        [5] => on
        [10455] => on
    )
    mais comment je fais pour les récupérer dans une boucle?

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    d'après ce que je vois tu as des name numerique pour tes inputs...pas bon ça, sinon pour parcourir $_POST tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($_POST as $cle => $valeur){
    echo 'name = '.$cle.' et sa valeur = '.$valeur.'<br/>';
    }

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    A mon avis l'origine du problème que tu rencontre viendrait du formulaire, dont la manière sont crées les champs.
    Faudrait mettre le code de ce formulaire.


    Apparemment les clés (ou indices) du tableau en POST (c'est à dire : 1, 4, 5, 10455) correspondraient à des valeurs.
    C'est à dire que dans le formulaire tu mettrais des nombres comme nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="10455" />
    Par ailleurs, il n'est pas autorisé (du moins, pas normalisé) de mettre des entiers/décimaux comme nom à des éléments, il faut au moins que le 1er caractère soit une lettre.


    Il faudrait mettre des noms dans le champ name et les valeurs dans le champ value :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="check_truc" value="10455" />
    Et là tu obtiendras en POST ceci : $_POST['check_truc'] (et comme valeur 10455).
    Ensuite, suffit de vérifier l’existence de chaque checkbox.
    -> Si un checkbox existe (comme check_truc), c'est qu'il a été coché.

  4. #4
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    ah oui c'et mieux en donnant un nom
    j'ai donc fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"<input type='checkbox' name='rushcheck$TAB' VALUE=$id>
    le $tab sert à incrémenter le nom pour avoir un tableau et dans chaque checkbox je récupère mon id, données qui m'intéresse.

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par rvm31
    j'ai donc fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"<input type='checkbox' name='rushcheck$TAB' VALUE=$id>
    Il y a moyen de faire encore mieux, car ce que tu fais est plus une astuce qu'autre chose.

    C'est à dire de passer un tableau, et donc de faire un groupe.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="checkbox" name="rushcheck['.$TAB.']" value="'.$id.'">';
    Au bout on obtiendra un tableau structuré de la même manière, avec 1 dimension en plus.
    (Ce qui sous entend qu'on peu faire des tableaux en plusieurs dimensions : 2, 3, 4, ...).
    Donc ici : (en admettant que les valeurs de $TAB soient 1, 2, 3 et de $id a, b, c, pour exemple)
    Si le 1er est coché -> $_POST['rushcheck'][1] (valeur a)
    Si le 3ème est coché -> $_POST['rushcheck'][3] (valeur c)
    Donc rien pour le 2ème car pas coché.
    Du coup, on peu récupérer d'une traite toutes les valeurs de $_POST['rushcheck'] avec une boucle foreach() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_POST['rushcheck']) && is_array($_POST['rushcheck'])) {
        foreach ($_POST['rushcheck'] as $rushcheck) {
            // On traite ici chaque checkbox cochés
        }
    }


    Petite parenthèse au passage.
    Tu n'entoures pas la valeur de l'attribut VALUE avec des quotes : value="200".
    Or, le HTML n'a aucune notion de type de données comme des entiers, chaines, float, etc ... tout est considéré comme des chaines, donc même des valeurs comme 1, 2, 3.
    Il est préférable et recommandé de mettre des quotes tout le temps, et si possible des doubles quotes (ou guillemets).

  6. #6
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Petite parenthèse au passage.
    Tu n'entoures pas la valeur de l'attribut VALUE avec des quotes : value="200".
    Or, le HTML n'a aucune notion de type de données comme des entiers, chaines, float, etc ... tout est considéré comme des chaines, donc même des valeurs comme 1, 2, 3.
    Il est préférable et recommandé de mettre des quotes tout le temps, et si possible des doubles quotes (ou guillemets).
    Ah oui merci pour les quotes, j'oublie trop souvent, je pense n'avoir pas encore saisi la différence profonde entre les simple quote et les double quote.
    Je ne suis pa sun développeur aguerri, je fais ça de temps a autre.
    Donc MERCI à tous sur ce forum, pour la sagacité des réponses et la promptitude.
    développez.net m'a souvent dépanné lorsque j'essaye péniblement de mettre en place une fonction.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2013, 16h28
  2. [MySQL] left outer join et concaténation dans un tableau passe par if mais pas par else ?
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/04/2008, 16h09
  3. checkbox passées par POST
    Par licorne dans le forum Langage
    Réponses: 5
    Dernier message: 05/03/2007, 14h42
  4. [MySQL] Taille limite des données passées par POST
    Par FoxLeRenard dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/03/2006, 18h46
  5. [Tableaux] récuperer une variable tableau passé par URL
    Par molesqualeux dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2005, 02h12

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