Visualizzazione dei risultati da 1 a 6 su 6

Discussione: colori alternati

  1. #1
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    colori alternati

    ciao a tutti,
    ho un problemino:
    ho una tabella prodotta da una query su mysql.
    La colonna di riferimento della tabella è la data "dd/mm/yyyy". Vorrei che le righe della tabella abbiano colori alternati in relazione alle date tenendo presente che la data di uno stesso giorno si può ripetere nella riga successiva, quindi deve essere dello stesso colore precendente.
    come posso fare?
    grazie per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    L'ho scritto al volo, quindi se ci sono problemi non esitare a scrivere

    Codice PHP:
    $alt=0;
    $prevData false;

    for(
    $i=0;$i<=TOTALE_RIGHE;$i++){
        if(
    $prevData == $riga["data"]) //Se la data corrente è uguale a quella precedente, attivo la formattazione
            
    $alt true;
            
        if(
    $alt//Se la formattazione è attiva
            
    echo     "<tr style='background:#f5f5f5;'>"//Cambio il colore di sfondo
        
    else //Altrimenti
            
    echo     "<tr>"//La riga resta normale
        
        
    echo "
                    <td>Data</td>
                    <td>"
    .$riga["data"]."</td>
                </tr>"
    ;
                
        
    $prevData $riga["data"]; //Aggiorno la data precedente, inserendo quella della riga attuale
        
        //Inverto la formattazione per la riga successiva
        
    if($alt
            
    $alt false;
        else
            
    $alt true;

    Thinker

  3. #3
    Utente di HTML.it L'avatar di Kups
    Registrato dal
    May 2013
    Messaggi
    20
    Ti consiglio di usare i css, in particolare le regole :nth-child(even) e :nth-child(odd).

    Edit: mea culpa, mi sono perso un pezzo leggendo il post di inizio topic, ignoratemi tranquillamente.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    18
    Originariamente inviato da Thinker
    L'ho scritto al volo, quindi se ci sono problemi non esitare a scrivere

    Codice PHP:
    $alt=0;
    $prevData false;

    for(
    $i=0;$i<=TOTALE_RIGHE;$i++){
        if(
    $prevData == $riga["data"]) //Se la data corrente è uguale a quella precedente, attivo la formattazione
            
    $alt true;
            
        if(
    $alt//Se la formattazione è attiva
            
    echo     "<tr style='background:#f5f5f5;'>"//Cambio il colore di sfondo
        
    else //Altrimenti
            
    echo     "<tr>"//La riga resta normale
        
        
    echo "
                    <td>Data</td>
                    <td>"
    .$riga["data"]."</td>
                </tr>"
    ;
                
        
    $prevData $riga["data"]; //Aggiorno la data precedente, inserendo quella della riga attuale
        
        //Inverto la formattazione per la riga successiva
        
    if($alt
            
    $alt false;
        else
            
    $alt true;

    Thinker
    Se posso permettermi un appunto prendendo come riferimento questo codice, magari fa delle classi differenti col css, e fai direttamente l'if nella riga, secondo me viene un po' più pulito.

    tipo echo '<tr class="'; if ($alt) echo 'class1">'; else echo 'class2">';

    insomma giusto per rendere l'idea
    "The question of whether Machines
    Can Think... is about as relevant as
    the question of whether Submarines
    Can Swim." Dijkstra

  5. #5
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    Originariamente inviato da Thinker
    L'ho scritto al volo, quindi se ci sono problemi non esitare a scrivere

    Codice PHP:
    $alt=0;
    $prevData false;

    for(
    $i=0;$i<=TOTALE_RIGHE;$i++){
        if(
    $prevData == $riga["data"]) //Se la data corrente è uguale a quella precedente, attivo la formattazione
            
    $alt true;
            
        if(
    $alt//Se la formattazione è attiva
            
    echo     "<tr style='background:#f5f5f5;'>"//Cambio il colore di sfondo
        
    else //Altrimenti
            
    echo     "<tr>"//La riga resta normale
        
        
    echo "
                    <td>Data</td>
                    <td>"
    .$riga["data"]."</td>
                </tr>"
    ;
                
        
    $prevData $riga["data"]; //Aggiorno la data precedente, inserendo quella della riga attuale
        
        //Inverto la formattazione per la riga successiva
        
    if($alt
            
    $alt false;
        else
            
    $alt true;

    Thinker
    grazie per l'aiuto...

    come ho visto il codice mi è sembrato quello giusto, ma non funziona.
    di fatto colora le righe in modo irregolare.
    Provo qualche piccola modifica, vediamo un pò cosa succede...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Uhm strano, l'ho provato adesso e come base funziona. Puoi scrivere alcuni dei dati che utilizzi?


    Volendo puoi analizzare anche la voce successiva

    Codice PHP:
    $alt=false;
    $prevData false;
    $succ false;

    for(
    $i=0;$i<=count($riga)-1;$i++){
        if(
    $i count($riga)-1)
            
    $succ $riga[$i+1]; //Analizza la data successiva
        
    else
            
    $succ false;
            
        if(
    $prevData == $riga[$i] || $succ == $riga[$i]) //Se la data corrente è uguale a quella precedente, attivo la formattazione 
            
    $alt true
             
        if(
    $alt//Se la formattazione è attiva 
            
    echo     "<tr class='alter'>"//Cambio il colore di sfondo 
        
    else //Altrimenti 
            
    echo     "<tr>"//La riga resta normale 
         
        
    echo 
                    <td>Data</td> 
                    <td>"
    .$riga[$i]."</td>
                </tr>"

                 
        
    $prevData $riga[$i]; //Aggiorno la data precedente, inserendo quella della riga attuale 
        
        //Inverto la formattazione per la riga successiva 
        
    if($alt)  
            
    $alt false
        else 
            
    $alt true


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.