• User Attivo

    Modifica colore riga mysql

    Salve, ho un script dove inserisco dei dati mediante un form html, e li visualizzo in una tabella, ora vorrei aggiungere un opzione, quando vado a modificare un record cambiare anche il colore di sfondo della riga esempio:

    hxxxp://xxx.geks.altervista.org/public/esempio.html

    Qualche suggerimento, esempio da dove partire?

    Grazie mille.:ciauz:


  • ModSenior

    Intendi dire se qualcuno sceglie una riga, e clicca su modifica, poi deve cambiare colore?


  • User Attivo

    si, ma non e obbligatorio, e solo per rendere meglio l'idea, visto che ci saranno molti intabellati quindi mi aiuterebbe a capire meglio se la pratica è stata evaso oppure no o e in lavorazione...

    PS: grazie per avermi risposto.


  • ModSenior

    Beh ma allora sarebbe opportuno prelevare tale dato da un database e gestire la colorazione/assegnazione classe attraverso un linguaggio server. Php appunto.


  • User Attivo

    Quindi, dovrei già inserire nel database i due valori (evasa,respinta) poi durante la modifica, assegno tale valore alla riga che di conseguenza ottiene uno stile giusto?

    Se si potresti farmi un piccolo esempio da dove partire o magari se conosci qualche tutorial o script simile da studiare?


  • ModSenior

    Si comunque il dato da mettere in database.
    Poi appena effettui la modifica magari ricarichi la pagina e con degli if controlli una cosa del genere.

    if ($evasa)
    {
    classe="evasa"
    }
    else
    {
    classe="nonevasa"
    }

    E poi applichi lo stile alla riga.

    class='$classe'.

    Una cosa del genere.
    Andare più in particolare non è facile.


  • User Attivo

    ok grazie, adesso faccio qualche prova, magari se non riesco posto il codice...


  • ModSenior

    Bene se posso e se sarò sveglio o se non passa qualcun altro prima spero di aiutarti. 🙂


  • User Attivo

    Dovresti avere un campo della tabella del db che assume un determinato valore...
    Esempio (che vale più di mille parole...)

    Nome campo: 'stato'
    Valore: 'evaso' oppure 'respinto'

    Presumo che tu utilizzi un ciclo while per elencare i record, mettiamo che memorizzi i valori dei campi in una variabile di nome '$var' e che vuoi evidenziare in giallo la riga...

    Dove stampi a video i risultati... visto che utilizzi una tabella html:

    [php]
    if ($var['stato']=='evaso') {
    echo '<tr style="background-color: yellow;">';
    } else {
    echo '<tr>';
    }
    [/php]


  • User Attivo

    Niente, dove sbaglio?

    [PHP]<?php
    // mi connetto al database
    $conn = mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('test', $conn) or die(mysql_error());

    // visualizzo le intestazioni della tabella
    echo <<<EOF
    <table>
    <tr>
    <th>Nome</th>
    <th>Cognome</th>
    <th>Telefono</th>
    <th>stato</th>
    </tr>
    EOF;

    // query che recupera i dati dal db
    $query = mysql_query("SELECT * FROM lista ORDER BY nome ASC");

    while($var = mysql_fetch_assoc($query))
    {
    //prova
    if ($var['stato']=='evaso') {
    echo '<tr style="background-color: yellow;">';
    } else {
    echo '<tr>';
    }
    // visualizzo i dati estratti
    echo <<<EOF
    <tr>
    <td>{$var['nome']}</td>
    <td>{$var['cognome']}</td>
    <td>{$var['telefono']}</td>
    <td>{$var['stato']}</td>
    </tr>
    EOF;

    }

    // chiudi la tabella
    echo <<<EOF
    </table>
    EOF;

    // chiude la connessione
    mysql_close($conn) or die(mysql_error());
    ?>

    [/PHP]
    :bho:


  • User Attivo

    Prova così:
    [php]
    <?php
    // mi connetto al database
    $conn = mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('test', $conn) or die(mysql_error());

    // visualizzo le intestazioni della tabella
    echo <<<EOF
    <table>
    <tr>
    <th>Nome</th>
    <th>Cognome</th>
    <th>Telefono</th>
    <th>stato</th>
    </tr>
    EOF;

    // query che recupera i dati dal db
    $query = mysql_query("SELECT * FROM lista ORDER BY nome ASC");

    while($var = mysql_fetch_assoc($query))
    {

    // visualizzo i dati estratti 
    
        if ($var['stato']=='evaso') { 
          echo '<tr style="background-color: yellow;">'; 
           } else { 
            echo '<tr>'; 
           } 
            echo '<td>'.$var['nome'].'</td> 
            <td>'.$var['cognome'].'</td> 
            <td>'.$var['telefono'].'</td> 
            <td>'.$var['stato'].'</td> 
        </tr>';
    

    }

    // chiudi la tabella
    echo <<<EOF
    </table>
    EOF;

    // chiude la connessione
    mysql_close($conn) or die(mysql_error());
    ?>
    [/php]


  • User Attivo

    edit: ho riscritto tutto togliendo quel EOF 😄 e adesso funziona, ora pero vorrei metter un altro colore, per il respinto il respinto,

    [PHP]<?php
    // mi connetto al database
    $conn = mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('test', $conn) or die(mysql_error());

    $query="SELECT nome,cognome,telefono,stato FROM lista";
    $res = mysql_query($query);
    if ($res && mysql_num_rows($res) > 0){

    ?>
    <table>
    <tr>
    <td>Nome</td>
    <td>Cognome</td>
    <td>Telefono</td>
    <td>Stato</td>
    </tr>
    <?php

    while($var=mysql_fetch_assoc($res)){
    
    
    
    if ($var['stato']=='evaso') { 
          echo '<tr style="background-color: yellow;">'; 
           } else { 
            echo '<tr>'; 
           } 
            echo '<td>'.$var['nome'].'</td> 
            <td>'.$var['cognome'].'</td> 
            <td>'.$var['telefono'].'</td> 
            <td>'.$var['stato'].'</td> 
        </tr>';
    

    }
    }
    ?>
    </table>[/PHP]


  • User Attivo

    Che errore?
    E qual'è la linea 8?


  • User Attivo

    no adesso funziona correttamente, ora pero vorrei aggiungere un secondo colore per respinta.

    PS: la linea 8 corrispondeva a EOF 😄


  • User Attivo

    @Bivio said:

    ora pero vorrei aggiungere un secondo colore per respinta.

    [php]
    if ($var['stato']=='evaso') {
    echo '<tr style="background-color: yellow;">';
    } else {
    echo '<tr>';
    }
    [/php]

    vuol dire:

    SE il campo 'stato' contiene 'evaso'
    SCRIVI la riga con stile sfondo giallo
    ALTRIMENTI
    SCRIVI la riga senza stile

    ...

    quindi? :dull:


  • User Attivo

    Si mi riferivo a un secondo colore per lo stato respinto:

    SE il campo 'stato' contiene 'evaso'
    SCRIVI la riga con stile sfondo giallo
    SE il campo 'stato' contiene 'respinta'
    SCRIVI la riga con stile sfondo rossa
    ALTRIMENTI
    SCRIVI la riga senza stile

    Il problema che non riesco a concatenare entrambe le condizione, cioè utilizzando if viene verificata una delle due condizioni, mentre io vorrei che se entrambe le condizioni sono vere deve essere assegnato il colore di sfondo, che sara giallo per evaso, rosso per respinto.

    PS: grazie mille per l'aiuto ero da tempo che cercavo invano 😄


  • User Attivo

    Ma... 'stato' deve contenere solo 'evaso' o 'respinto' o anche un altro valore?


  • User Attivo

    Allora il campo stato conterrà i seguenti valori:

    Vuoto: lo stile della riga non cambia
    Respinto: Lo stile della riga diventa rosso
    Evaso: Lo stile della riga diventa verde


  • User Attivo

    Oh... allora è molto semplice...

    if (condizione1) {
    codice da eseguire se condizione1 è vera
    }
    elseif (condizione2) {
    codice da eseguire se condizione1 è falsa e la condizione2 è vera
    }
    else
    {
    codice da eseguire se tutte le condizioni precedenti sono false
    }

    Metti in pratica! :wink3:


  • User Attivo

    ok ora prova con piu calma, però gia avevo fatto una prova, in pratica con questo schema mi verifica una sola condizione, cioè:

    if (evasa) {
    colora la riga verde
    }
    elseif (respinta) {
    colora la riga rossa}
    else
    {
    lo stile della riga rimana invariato
    }

    Ma in questo modo nella stessa tabella non posso avere sia le righe verdi che rosse, giusto o sbaglio io qualcosa?

    Devo comunque fare qualche prova, magari mi sbaglio 😄