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 les valeurs d'un tableau POST


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Récupérer les valeurs d'un tableau POST
    Salut les fous,

    J'ai beau chercher une réponse à cette question simple, je n'arrive pas à me dépatouiller avec la bonne formule.
    Voilà, j'utilise un formulaire avec le plugin jQuery "clonable" pour dupliquer facilement plusieurs entrées de mon formulaire, composé de listes de choix.
    Je récupère dans mon _POST le tableau suivant (exemple) :
    Array (
    [RCpartspn] => part
    [RCpartsdesc] => desc
    [RCpartscomps_1] => 1
    [RCpartscompsqty_1] => e
    [RCpartscomps_2] => 4
    [RCpartscompsqty_2] => f
    [RCpartscomps_3] => 13
    [RCpartscompsqty_3] => g
    [RCpartscomps_4] => 18
    [RCpartscompsqty_4] => h
    [RCpartscheck_1] => 118
    [RCpartscheckvalue_1] => f
    [RCpartscheck_2] => 132
    [RCpartscheckvalue_2] => ok )

    Donc en gros des entrées de clé "identiques" mais avec _1, _2, _3 etc à la fin, dont je voudrais concaténer les valeurs pour obtenir :
    RCpartscomps = 1,4,13,18
    RCpartscompsqty = e,f,g,h

    Et je galèèèèèèère !

    Si vous avez une idée de génie, je suis preneur.

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Je tente juste une idée : si tu fais un foreach($_POST as $key=>$value) tu vas obtenir une boucle où à chaque passage, tu auras un nouveau couple $key/$value, donc avec ça, il y a sûrement moyen de faire ce que tu veux.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et si tu utilisais plutôt la notation tableau sur les champs de ton formualire pour grouper les champs identiques ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Je tente juste une idée : si tu fais un foreach($_POST as $key=>$value) tu vas obtenir une boucle où à chaque passage, tu auras un nouveau couple $key/$value, donc avec ça, il y a sûrement moyen de faire ce que tu veux.
    J'ai déjà fait, et après je bloque, il faut que je trouve le moyen de :
    -compter combien de clés de la même série
    -faire une boucle qui les concatène

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Et si tu utilisais plutôt la notation tableau sur les champs de ton formualire pour grouper les champs identiques ?
    pourrais-tu être plus explicite ? ça me semble être une piste intéressante, mais pour la mise en oeuvre, des détails seraient bien utiles.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Citation Envoyé par elmanu13 Voir le message
    J'ai déjà fait, et après je bloque, il faut que je trouve le moyen de :
    -compter combien de clés de la même série
    -faire une boucle qui les concatène
    qu'est qui t'en empeche? une fois que tu parcours tout tes post, tu les organises comme tu veux...
    C'est quoi une serie ?
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par elmanu13 Voir le message
    J'ai déjà fait
    Si tu l'as déjà et que tu as conservé ton code, donne-le ; ça donnera peut-être des idées pour trouver une solution...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par marcuscircus Voir le message
    qu'est qui t'en empeche? une fois que tu parcours tout tes post, tu les organises comme tu veux...
    C'est quoi une serie ?
    Je crois que j'ai trouvé :
    Ce qui m'en "empêchait" c'est que mes datas de POST arrivaient séparées en "série" : data_1 = valeur1, data_2 = valeur2, etc..
    Je n'arrivais pas à trouver la bonne formule pour compter combien j'avais de données qui commençaient par data_ (il peut y en avoir n nombre différent à chaque fois)

    Finalement, en modifiant mon formulaire et en organisant mes entrées en tableau comme subtilement suggéré par ABCIWEB, je reçois des tableaux dans mon tableau et le tri est bien plus direct.
    Dans mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="RCpartscomps[]" id="RCpartscomps_1">
    (comme ça chaque id est différent et utilise le plugin "clonable", mais le résultat du POST sera un tableau.)

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et oui c'est bien plus facile de lister le contenu d'un tableau complet que de faire le tri sur un nombre d'index inconnus Alors c'est résolu ?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    C'est en passe de le devenir, ce qu'il me reste à faire étant dans mes cordes, on peut considérer que c'est résolu, merci !

    Bon, désolé de relancer le sujet, mais j'ai un dernier blocage que je ne comprends pas.. Pour récupérer les données de mon POST, plutôt que de faire une boucle par paramètre j'utilise 2 foreach imbriqués :

    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
     
    foreach($_POST as $cle => $valeur){ //on lit tout le POST
     
    if(isset($valeur) && is_array($valeur) && count($valeur)) { //si c'est un tableau, on le concatène en une seule chaine séparateur virgule.
        foreach($valeur as $elem) {
            $result .= $elem.", ";
               }
               echo "tableau : ".$cle."=".$result."<br>"; //on affiche pour vérif
               $$cle = '"'.$result.'"'; //on balance dans une variable qui prend le nom de la clé
               $result = ''; //on passe le balai pour la boucle suivante
    }
    else //ce n'est pas un tableau, on affecte directement la valeur
    echo "pas un tableau <br>".$cle."=".$valeur."<br>";
     $$cle = $valeur;
    }
    Ce que je ne comprends pas, c'est que mon affichage pour vérif est bon, mais PAS mes valeurs, si elles sont passées dans le 2e foreach (si ce n'est pas un tableau, ça fonctionne à merveille)
    Si je veux afficher mes variables, ça me dit :
    Notice: Array to string conversion in /Users/elmanu/Sites/include/process_PARTS.php on line 74
    et ça affiche "Array"

    J'ai oublié une virgule ou quoi ?

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour info, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($valeur as $elem) {
      $result .= $elem.", ";
    }
    avec la fonction implode.
    Ce qui simplifie grandement le cas du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($valeur) && is_array($valeur) && count($valeur)) { //si c'est un tableau, on le concatène en une seule chaine séparateur virgule.
        $result = implode(', ', $valeur);
        echo "tableau : ".$cle."=".$result."<br>"; //on affiche pour vérif
        $$cle = '"'.$result.'"'; //on balance dans une variable qui prend le nom de la clé
    }
    Est-ce que encadrer ton tableau concaténé par des doubles quotes à un intérêt pour toi ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    merci pour le coup du implode, ça simplifie en effet !

    J'ai tenté les double quote pour résoudre mon problème, sans succès.
    Mais j'ai l'impression que ma variable est prise pour un tableau alors que c'est une chaine de caractères, non ?

    EDIT : J'AI TROUVÉÉÉÉÉÉ !

    En fait, dans mon code je n'ai pas entouré mon dernier "else" qui contient DEUX commandes.
    La deuxième est donc appliquée tout le temps, et mon était écrasé par le de la fin !!

    QUEL BOULET !!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/02/2012, 09h38
  2. Récupérer les valeurs d'un tableau
    Par fermat dans le forum Débuter
    Réponses: 3
    Dernier message: 02/02/2012, 14h17
  3. [PostgreSQL] Récupérer les valeurs d'un tableau
    Par Grotoumaigr dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/01/2012, 09h37
  4. Récupérer les valeurs dans un tableau
    Par ssxjim dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/01/2011, 20h49
  5. Réponses: 4
    Dernier message: 19/03/2007, 17h12

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