Visualizzazione dei risultati da 1 a 6 su 6

Discussione: PHP disegnare tabella

  1. #1

    PHP disegnare tabella

    Buongiorno a tutti, ho bisogno del vostro aiuto........

    devo creare, anzi disegnare, una tabella che prende i dati da DB, non ha un incremento graduale, e quando asse X e Y corrispondono alle giuste coordinate mi deve colorare la giusta cella.... scusate se mi spiego male, ma forse il caldo mi rallenta i neuroni

    cerco di farvi un esempio pratico......
    tabella (c=colore cella):

    ml/diam 16 22 25 30 35
    5 c
    10 c c
    25 c c c

    il mio DB:

    id quantita diametro
    1 5 16
    2 10 22
    3 10 25
    4 25 25
    5 25 30
    6 25 33

    avevo fatto così, ma sicuramente sbaglio......
    Codice PHP:
        // Inizio tabella
        
    $a=0;
        
    $b=0;
        echo 
    '<table border="1"><tr>
                        <td>ml</td>
        '
    ;
        
    //for ($y=$newY; $y<=120; $y+=$incr) {
        
    $queryQ=mysql_query("SELECT * FROM `misure` GROUP BY `quantita`");
        
    $totQ mysql_num_rows($queryQ);
        while (
    $rowQ=mysql_fetch_row($queryQ)) {
            foreach(
    explode(",",$rowQ[1]) as $y) {
        
    // Inizio riga
            
    $queryD=mysql_query("SELECT * FROM `misure` GROUP BY `diametro`");
            
    $totD mysql_num_rows($queryD);
            while (
    $rowD=mysql_fetch_row($queryD)) {
                foreach(
    explode(",",$rowD[2]) as $x) {    // Fine riga

        
    echo 'a'.$a.' - b'.$b.' - y'.$y.' - x'.$x.' - rowD[1]'.$rowD[1].' - rowD[2]'.$rowD[2].' <br>';
        

                    if (
    $a==&& $b==0) {
                        echo 
    '
                        <td>x'
    .$x.'</td>
                        '
    ;
                    }
                    elseif (
    $a==&& $b!=$totD-1) {
                        echo 
    '<td>x'.$x.'</td>
                        '
    ;
                    }
                    elseif (
    $a==&& $b==$totD-1) {
                        echo 
    '<td>x'.$x.'</td>
                        </tr>
                        <tr>
                        <td>y'
    .$y.'</td>
                        '
    ;
                    }
                    elseif (
    $a!=&& $b==0) {
                        echo 
    '<tr>
                        <td>y'
    .$y.'</td>
                        '
    ;
                    }

                    
    $b++;
            }
            
    $queryC=mysql_query("SELECT * FROM `misure`");
            while (
    $rowC=mysql_fetch_row($queryC)) {
                if (
    $y==$rowC[1] && $x==$rowC[2]) {
                    
    $class=' class="lav"';
                }
                else {
                    
    $class='';
                }
                echo 
    '<td'.$class.'>&nbsp;</td>
                '
    ;
                }
            }                
    $b=0;
        
    // Fine riga
        
    echo '</tr>
        '
    ;
        }
                
    $a++;
        }
        echo 
    '</table>';
            
        
    // Fine tabella 
    help help help

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    205
    Cosa significa sicuramente sbagli?
    Non l'hai neanche provato? Non sai che errori ti da?
    Sito Modellismo (Non ancora completo)

  3. #3
    Certo che l'ho provato, ecco perchè dico che sbaglio qualche passaggio.........
    e l'errore è che disegna male la tabella, mette un sacco di celle in più anche nella prima riga dove ci dovrebbero essere solo i parametri

  4. #4
    nessuno?!

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    un approccio diverso, molto migliorabile

    Codice PHP:
    // recupera le intestazioni della tabella finale
    $qcol "SELECT diametro FROM misure GROUP BY diametro";
    $col mysql_query($qcol) or die("$qcol error: " .mysql_error());


    // le inserisce in un array
    while($c mysql_fetch_array($col)) {
        
    $column[] = $c["diametro"];
    }


    // recupera i valori dalla tabella (tutti concatenati in un unico campo)
    $qrow "SELECT quantita, GROUP_CONCAT(diametro) as d_concat FROM misure GROUP BY quantita";
    $row mysql_query($qrow) or die("$qrow error: " .mysql_error());


    // imposta la tabella e scrive le intestazioni delle colonne
    echo '<table border="1">';
    echo 
    "<tr><td>ml</td><td>" implode("</td><td>"$column) . "</td></tr>";


    // scorre i risultati della seconda query
    while($r mysql_fetch_array($row)) {
        
    // nuova riga con il valore nella prima colonna
        
    echo "<tr>";
        echo 
    "<td>" $r["quantita"] . "</td>";


        
    // separa i valori del campo concatenato
        
    $d explode(","$r["d_concat"]);
        
        
    // scorre l'array delle intestazioni
        
    foreach($column as $c_data) {
            
    // controlla che il valore dell'intestazione sia nell'array generato nell'explode
            
    if(in_array($c_data$d)) {
                
    // se lo trova, segna il campo
                
    echo "<td> X </td>";
            }
            else {
                
    // se non lo trova, lascia il campo vuoto
                
    echo "<td> </td>";
            }
        }
        
    // chiude la riga
        
    echo "</tr>";
        }
    // chiude la tabella
    echo "</table>"

    il risultato è questo

    ml 16 22 25 30 33
    5 X
    10 X X
    25 X X X
    Ultima modifica di clasku; 17-07-2015 a 12:43

  6. #6
    E' perfetto
    mi dovrò studiare questa funzione GROUP_CONCAT()
    grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.