• User

    Alternare il colore di sfondo delle righe di una tabella PHP

    Ciao a tutti,

    ho la necessità di prelevare dei dati da un db MySql e fare in modo che le righe della tabella siano alternate di due colori.

    Ho trovato diversi script ma non riesco a farlo funzionare.

    Vi riporto il codice:

        [php]<?php  
    

    $counter = 1;

    $classifica_marcatori = mysql_query(" SELECT * FROM giocatori_b1_2011_2012 ORDER BY punti_fatti_totale DESC ");

    while($row=mysql_fetch_array($classifica_marcatori))
    {

    ($counter % 2 == 0) ? $class = "grigio" : $class = "giallo";

    echo '<div id="classifica_marcatori_container">';
    echo '<div id="riga" class="$class">';
    echo '<div id="colonna">';
    echo $row[giocatore];
    echo '</div>';
    echo '<div id="colonna">';
    echo $row[squadra];
    echo '</div>';
    echo '<div id="colonna">';
    echo $row[punti_fatti_totale];
    echo '</div>';
    echo '</div>';
    echo '</div>';

    $counter++;

    }[/php]

    La tabella viene riportata correttamente ma non riesco a fare in modo che le righe compaiano di colori alternati.

    Ovviamente nel foglio di stile ho messo le classi per i colori:

    .giallo {
        background-color: #FFFF00;
    }
    .grigio {
        background-color: #CCCCCC;
    }
    

    Mi potete aiutare per favore????

    Grazie mille


  • Consiglio Direttivo

    Ciao ivan_83_to,
    prova ad inserire lo script così:
    [php] <?php

    $counter = 1;

    $classifica_marcatori = mysql_query(" SELECT * FROM giocatori_b1_2011_2012 ORDER BY punti_fatti_totale DESC ");

    while($row=mysql_fetch_array($classifica_marcatori))
    {

    ($counter % 2 == 0) ? $class = "grigio" : $class = "giallo";

    echo '<div id="classifica_marcatori_container">';
    echo '<div id="riga" class="'.$class.'">';
    echo '<div id="colonna">';
    echo $row[giocatore];
    echo '</div>';
    echo '<div id="colonna">';
    echo $row[squadra];
    echo '</div>';
    echo '<div id="colonna">';
    echo $row[punti_fatti_totale];
    echo '</div>';
    echo '</div>';
    echo '</div>';

    $counter++;

    }[/php]


  • User

    Ciao, funziona!!!

    Posso chiederti la modifica che hai fatto al mio codice ( class="'.$class.'" ) in cosa consiste? Qual è la funzione di: "'. ?

    Grazie mille comunque per l'aiuto.

    Ivan


  • Consiglio Direttivo

    Certo! 🙂

    L'escape (**\ **= backslash) anteposto alle virgolette/apici serve a far comprendere all'interprete di PHP che quella virgoletta/apice va interpretata esattamente per quello che è e non come un marcatore di stringa.
    Per portarti un esempio con il tuo script:
    [php]<?php
    echo "<div id="riga" class="nomeclasse">";
    ?>[/php]Potresti scrivere la riga anche così, ovvero utilizzando le virgolette come marcatore di stringa invece degli apici, ma avendo all'interno della stringa altre virgolette bisogna utilizzare la tecnica dell'*escape *per dirgli "Questa è semplicemente una virgoletta che fa parte di una stringa e non il marcatore di fine stringa".
    Ovviamente la tecnica dell'escape va utilizzata solo se utilizzi come marcatore di stringa lo stesso carattere contenuto nella stringa, ovvero se come marcatore di stringa utilizzi gli apici dovrai escapare tutti gli apici contenuti nella stringa, se utilizzi le virgolette dovrai escapare tutte le virgolette contenute nella stringa. Nel tuo caso, avendo utilizzato gli apici come marcatore di stringa, non c'è nulla da escapare non essendoci altri apici all'interno della stringa.

    Per inserire invece il valore di una variabile PHP insieme ad una stringa si utilizza il sistema della concatenazione.
    Se tu dovessi visualizzare due valori di variabili scriveresti:
    [php]<?php
    $var1="Ciao";
    $var2="Ivan";
    echo $var1 . $var2; // stamperebbe a video CiaoIvan
    ?>[/php]Ma così verrebbe tutto attaccato, per spaziarlo bisogna inserire una "stringa" che, in questo caso, sarà un semplice spazio:
    [php]<?php
    $var1="Ciao";
    $var2="Ivan";
    echo $var1 . " " . $var2; // stamperebbe a video Ciao Ivan
    echo $var1 . ' ' . $var2; // stamperebbe a video Ciao Ivan
    ?>[/php]Come vedi ho utilizzato sia le virgolette che gli apici dato che hanno lo stesso effetto.

    Nel tuo caso non hai fatto altro che concatenare 3 stringhe:
    Stringa 1 = '<div id="riga" class="'
    Stringa 2 = $class
    Stringa 3 = '">'
    Ottenendo quindi:
    [php]<?php
    echo '<div id="riga" class="' . $class . '">';
    ?>[/php]Spero di essere stato chiaro e non troppo tecnico.
    :ciauz:


  • User

    Chiarissimo....cosa nuova imparata!!!

    Ti ringrazio ancora.

    :ciauz:

    Ivan


  • Consiglio Direttivo

    Di nulla. 😉
    [URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile


  • User

    Ciao,

    ne approfitto per chiederti ancora un aiuto.

    Se da questo codice volessi stampare alcune righe in grassetto, come posso fare?

    Per fare un esempio pratico: da questo campo $row[giocatore] voglio fare un controllo e dirgli: se compare il valore "Ivan", stampa la riga in grassetto.

    Come posso fare?

    Grazie mille ancora...


  • Consiglio Direttivo

    Controlli il valore di $row['giocatore'] e, tramite il sistema della concatenazione, includi il valore di ogni cella tra i tag <strong>..</strong>

    [php]<?php
    if ($row['giocatore']=="Ivan")
    {
    $row['giocatore']="<strong>".$row['giocatore']."</strong>";
    $row['qualcosaltro']="<strong>".$row['qualcosaltro']."</strong>";
    }
    ?>[/php]
    😉


  • User

    Fantastico, funziona alla grande!!

    Ancora grazie mille!!!

    Ciao.
    Ivan


  • Consiglio Direttivo

    Bene così, buon lavoro. 😉
    [URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile