Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Pivottizzare tabella

  1. #1

    Pivottizzare tabella

    ciao ragazzi!

    c'è una cosa che proprio non mi riesce di capire.
    allora, riempio una tabelle con dati che arrivano in questa maniera:
    codice:
    ARTICOLO   LISTINO   PREZZO
    articolo_1    1             50
    articolo_1    2             60
    io vorrei impostare la tabella in questo modo:
    codice:
    ARTICOLO   LISTINO_1   LISTINO_2
    articolo_1   50                60
    usando sub query lo saprei fare.
    ma vorrei capire se è possibile ottenere lo stesso risultato anche senza usare subquery.

    per ora questo è quello che ho fatto usando una sola query che tira fuori i dati come nel primo esempio:
    Codice PHP:
        <tbody>
            <?php foreach ($quey as $var): ?>
                <tr>
                    <td><?php echo $var['magazzino_codice']; ?></td>
                    <td><?php echo $var['listino_codice']; ?></td>
                    <td><?php echo $var['listino_modificato']; ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>

  2. #2
    diciamo che hai la tabella, che so, ARTICOLI_LISTINO, così:

    codice:
    ARTICOLO   LISTINO   PREZZO
    articolo_1    1             50
    articolo_1    2             60
    articolo_1    3             90
    articolo_2 ....
    ...
    faccio il seguento script: prendo tutti i record dalla tabella articoli_listino ordinati per articolo/listino, e creo un array multidimensionale del tipo:

    codice:
    articolo_1 => [ listino_1 => 50, listino_2 => 60, listino_3 => 90]
    e a questo punto itero l'array ottenuto per stampare a video la tabella. Se hai un numero fisso di listini, puoi anche evitare l'array di appoggio
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    diciamo che hai la tabella, che so, ARTICOLI_LISTINO, così:

    codice:
    ARTICOLO   LISTINO   PREZZO
    articolo_1    1             50
    articolo_1    2             60
    articolo_1    3             90
    articolo_2 ....
    ...
    faccio il seguento script: prendo tutti i record dalla tabella articoli_listino ordinati per articolo/listino, e creo un array multidimensionale del tipo:

    codice:
    articolo_1 => [ listino_1 => 50, listino_2 => 60, listino_3 => 90]
    e a questo punto itero l'array ottenuto per stampare a video la tabella. Se hai un numero fisso di listini, puoi anche evitare l'array di appoggio
    ciao!

    grazie per la risposta.
    però mi sfugge qualcosa.
    allora, il numero di listini per ogni articolo è sempre due.
    ho modificato la query per ordinarla per articolo / listino.
    a questo punto però non riesco a riempire l'array come dici tu!
    ho provato banalmente così, ma ovviamente non funziona.
    doppia tutte le righe:
    Codice PHP:
    $rows = array();
    foreach (
    $query as $q) {
        
    $rows[] = array(
            
    "articolo" => $q['magazzino_codice'],
            
    "listino_1" => $q['listino_modificato'],
            
    "listino_2" => $q['listino_modificato']
        );
    }
    var_dump($rows); 
    questo il risultato:
    codice:
    array(4) {   [0]=>   array(3) {     ["articolo"]=>     string(8) "C5.5.003"     ["listino_1"]=>     string(5) "62.00"     ["listino_2"]=>     string(5) "62.00"   }   [1]=>   array(3) {     ["articolo"]=>     string(8) "C5.5.003"     ["listino_1"]=>     string(6) "174.90"     ["listino_2"]=>     string(6) "174.90"   }   [2]=>   array(3) {     ["articolo"]=>     string(8) "C5.5.004"     ["listino_1"]=>     string(5) "66.00"     ["listino_2"]=>     string(5) "66.00"   }   [3]=>   array(3) {     ["articolo"]=>     string(8) "C5.5.004"     ["listino_1"]=>     string(6) "185.90"     ["listino_2"]=>     string(6) "185.90"   } }
    in pratica così non ho risolto niente.
    dovrebbero esserci due record nell'array, e invece ce ne sono 4 giustamente.
    non riesco a mettere in pratica quello che mi dici te!

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    La butto cosi. Non testato.

    Codice PHP:
    $sav '';
    $index = -1;
    $rows = array();
    foreach (
    $query as $q) {

        if (
    $sav != $q['magazzino_codice']) {
          
    $sav $q['magazzino_codice'];
          
    $index++;
          
    $rows[$index] = array();
          
    $rows[$index]['articolo'] = $q['magazzino_codice'];
          
    $j 1;
        }
        
    $rows[$index]["listino_$j"] = $q['listino_modificato'];
        
    $j++;
    }
    var_dump($rows); 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    allora, sempre non testato:

    Codice PHP:

    $prec 
    '';
    $results = [];

    foreach(
    $query as $q)
    {
        if(
    $prec != $q['magazzino_codice'])
        {
             
    $results[$q['magazzino_codice']] = [];
             
    $prec $q['magazzino_codice'];
         }

        
    $idListino $q['listino'];
        
    $results[$q['magazzino_codice']]['listino_'.$idListino] = $q['listino_modificato'];

    }

    print_r($results
    dovresti trovare un array del tipo:

    Codice PHP:

    "articolo_1" => [
       
    "listino_1" => XX,
       
    "listino_2" => YY
    ],
    "articolo_2" => [
       
    "listino_1" => ZZ,
       
    "listino_2" => JJ
    ]...,...,... 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    ecco qua:
    Codice PHP:
    $prec = '';
    $results = [];
    foreach ($query as $q) {
        if ($prec != $q['magazzino_codice']) {
            $results[$q['magazzino_codice']] = [];
            $prec = $q['magazzino_codice'];
        }
        $idListino = $q['listino_codice'];
        $results[$q['magazzino_codice']]['listino_' . $idListino] = $q['listino_modificato'];
    }
    ................................
    <tbody>
            <?php foreach ($results as $key => $val): ?>
                <tr>
                    <td><?php echo $key?></td>
                    <td><?php echo $val['listino_1']; ?></td>
                    <td><?php echo $val['listino_2']; ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    grazie mille per l'aiuto!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.