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 :

Transformer un tableau assoc en multidimentionnel


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 58
    Points : 27
    Points
    27
    Par défaut Transformer un tableau assoc en multidimentionnel
    Bonjour,

    Je cherche à transformer un tableau associatif à n éléments dont on ne connait pas les clés.

    je sais pas trop comment formuler ce que je veux faire alors je vais vous donner un exemple.

    Je reçois n champs(nb Inconnu) de la variables $_POST.
    ce qui me donne par exemple ça :

    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
    16
    Array
    (
        ['idCategorie-3'] => 3
        ['nomCat-3'] => CAT 1
        ['pu-3'] => 40.00
        ['quantite-3'] => 8
        ['idCategorie-4'] => 4
        ['nomCat-4'] => CAT 2
        ['pu-4'] => 45.00
        ['quantite-4'] => 3
        ['idCategorie-5'] => 5
        ['nomCat-5'] => CAT 3
        ['pu-5'] => 50.00
        ['quantite-5'] => 0
        ['suivant'] => Suivant
    )
    Et vu que je cherche à afficher dans une table html pour chacune des lignes(idCat,nomCat,pu,quantite,total=tarif x quantite)

    donc je suppose que pour bien construire mes tr td il faut formater le tableau précédent sous cette forme

    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
    16
    17
    18
    19
    Array([0] => Array(['idCategorie-3'] => 3
                       ['nomCat-3'] => CAT 1
                       ['pu-3'] => 40.00
                       ['quantite-3'] => 8
                       ['total'] => ['pu-3']*['quantite-3']
                      ),
          [1] => Array(['idCategorie-4'] => 4
                       ['nomCat-4'] => CAT 2
                       ['pu-4'] => 45.00
                       ['quantite-4'] => 3
                       ['total'] => ['pu-4']*['quantite-4']
                      ),
          [2] => Array(['idCategorie-5'] => 5
                       ['nomCat-5'] => CAT 3
                       ['pu-5'] => 50.00
                       ['quantite-5'] => 0
                       ['total'] => ['pu-5']*['quantite-5']
                      )
             )
    Merci pour votre aide et si je me complique la vie n’hésiter pas ^^

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Tu te compliques la vie en effet ^^

    Le html permet de passer des champs de formulaire avec des tableaux de taille dynamique comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <input name='tab[1]["toto"]' value='test' ...
    <input name='tab[1]["tata"]' value='autreTest'...
     
    // Après envoi du formulaire via la méthode POST :
    echo $_POST['tab'][1]['toto'] // affiche 'test'
    echo $_POST['tab'][1]['tata'] // affiche 'autreTest'
    Ce mécanisme te permettra d'obtenir directement ce que tu souhaites si tu nommes pertinemment tes input
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    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
    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
    <?php
    $_POST=Array
    (
        "idCategorie-3" => "3",
        "nomCat-3" => "CAT 1",
        "pu-3" => "40.00",
        "quantite-3" => "8",
        "idCategorie-4" => "4",
        "nomCat-4" => "CAT 2",
        "pu-4" => "45.00",
        "quantite-4" => "3",
        "idCategorie-5" => "5",
        "nomCat-5" => "CAT 3",
        "pu-5" => "50.00",
        "quantite-5" => "0",
        //...
    );
     
     
    $list=array();
    foreach($_POST as $key => $val)
    {
           //echo "".$key."=>".$val."<br/>";
            $tmp=explode("-",$key);
            if(isset($tmp[1]) && is_numeric($tmp[1]))
            {
                    //echo $tmp[0]." ---- ".$tmp[1]."<br/>";
                    $list[$tmp[1]][$tmp[0]]=$val;
            }
     
    }
    //var_dump($list);
    echo "<table border='1'>";
            echo "<tr>";
            echo "<th>#</tdh>";
            echo "<th>idCategorie</th>";
            echo "<th>nomCat</th>";
            echo "<th>pu</th>";
            echo "<th>quantite</th>";
            echo "<th>Total</th>";
            echo "</tr>";
    foreach($list as $key => $val)
    {
            echo "<tr>";
            echo "<td>".$key."</td>";
            echo "<td>".$val["idCategorie"]."</td>";
            echo "<td>".$val["nomCat"]."</td>";
            echo "<td>".$val["pu"]."</td>";
            echo "<td>".$val["quantite"]."</td>";
            echo "<td>".($val["quantite"]*$val["pu"])."</td>";
            echo "</tr>";
     
    }
    echo "</table>";
    ?>
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

Discussions similaires

  1. Transformer un Tableau de String en seul une string
    Par jojob dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 31/05/2011, 13h44
  2. Transformer un tableau de int en tableau Integer ?
    Par n!co dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 09/01/2007, 09h09
  3. [VBA-E] - transformé un tableau excel en objet
    Par jimbololo dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 03/06/2006, 15h48
  4. [XHTML 1.0] Transformer mon tableau en div
    Par stailer dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/05/2005, 18h50
  5. [Collections] Transformer un tableau de données en une chaîne
    Par NATHW dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2004, 16h44

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