Colori alternati per campi uguali e non

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve a tutti

ho un ulteriore inghippo sui duplicati.


La domanda è semplice:

Estraggo una tabella epr intero

ID NOME CITTA
1 Antonio Bari
2 Pasquale Venezia
3 Michele bari
4 Salvatore Palermo
5

quando estraggo al tabella con

PHP:
$sqlquery ="SELECT *  FROM Tabella  WHERE  Valore!='1' ORDER by Citta";
$result = mysql_query($sqlquery);

while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
 $citta= $linea['Citta'];
 $nome=$linea['Nome'];

	echo "\t<tr>\n";
   echo "<td bgcolor=\"$color\">".$nome."</td>";
      echo "<td bgcolor=\"$color\">".$citta."</td>";

Vorrei evidenziare a colori alternati le righe mantenendno lo stesso colore per le città uguali

Antonio - Bari ---->colore verde
Michele Bari ---Colore verde
Pasquale ---> Venezia colore rosso

Sono circa due ore che rimbambisco

Suggerimenti ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
per le righe alterne puoi provare cosi
PHP:
<style type="text/css">
    .alternate {
        background-color: #BABABA
    }
</style>
<?php
$i = 0;
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $citta = $linea['Citta'];
    $nome = $linea['Nome'];
    $alternate = ($i % 2 == 0) ? "" : " class='alternate'";
    echo "<tr $alternate>";
    echo "<td>" . $nome . "</td>";
    echo "<td>" . $citta . "</td>";
    echo "</tr>";
    $i++;
}
?>
Per le citta non ho capito, vuoi colorare solo la td della citta?

potresti creare un array per le citta verdi e uno per le citta rosse e poi verifichi in quale array si trova la citta
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao ciric intanto grazie per ò

PHP:
    $alternate = ($i % 2 == 0) ? "" : " class='alternate'";

non fa al caso mio eprchè alterna le righe se questa è dispari o pari invece a me servirebbe alternare le righe in funzione delle Città

ripropongo l'esempio:

se l'estrazione della tabella
PHP:
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $citta = $linea['Citta'];
    $nome = $linea['Nome'];

    echo "<tr>";
    echo "<td>" . $nome . "</td>";
    echo "<td>" . $citta . "</td>";
    echo "</tr>";
    $i++;
}

mi restituisce

Antonio Bari
Michele Bari
Giovanni Potenza
Paolo Roma
Vicnenzo Palermo
Francesco Palermo

il codce deve alternare inq uesta maniera

Antonio Bari -----Rosso
Michele Bari-----Rosso
Giovanni Potenza----Verde
Paolo Roma-----Rosso
Vicnenzo Palermo---Verde
Francesco Palermo---Verde
Domenico Siragusa ---Rosso

quindi quando trova la citta ugale deve seguire il colore della stessa citta

e partiamo dal presuposto ch eio non conosco le città inserite nel database quindi non posso fare uno switch ne impostare una condizione sulle città stesse
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ora ho capito,
forse la sto sparando grossa ( non ho testato), potresti provare qualcosa del genere
PHP:
<?php

$sqlquery = "SELECT *  FROM Tabella  WHERE  Valore!='1' ORDER by Citta";
$result = mysql_query($sqlquery);

$citta = "";
$color = "";
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if ($linea['Citta'] != $citta) {
        $color = ($color == "green") ? "red" : "green";
    }
    $citta = $linea['Citta'];
    $nome = $linea['Nome'];

    echo "\t<tr>\n";
    echo "<td bgcolor=\"$color\">" . $nome . "</td>";
    echo "<td bgcolor=\"$color\">" . $citta . "</td>";
}
?>
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
di solito quando dici, "non l'ho testato" entra al primo colpo :)


ma non è qeuesto il caso, mi colora tutte le righe in un unico colore.

potresti rispiegarmi questo?

PHP:
        $color = ($color == "green") ? "red" : "green";

so che è un if abbrviato ma non riesco a connettere la spiegazione.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
potresti rispiegarmi questo?
Se la variabile ha valore "green" la cambiamo in "red" viceversa se è red tornerà green

ora lo testo
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ah ok grazie

però credo sia questo che la manda fuori pista

PHP:
if ($linea['Citta'] != $citta) {

difatti si pone la condizione che $linea[' citta'] sia diverso da valore vuoto ma nella tabella so tutti diverso da vuoto quindi le colorerà tutte secondo l'else
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
a me funziona, ho tolto red per vedere meglio la differenza
PHP:
$citta = "";
$color = "";
echo "<table>";
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if ($linea['Citta'] != $citta) {
        $color = ($color == "green") ? "" : "green";
    }
    $citta = $linea['Citta'];
    $nome = $linea['Nome'];

    echo "\t<tr>\n";
    echo "<td bgcolor=\"$color\">" . $nome . "</td>";
    echo "<td bgcolor=\"$color\">" . $citta . "</td>";
    echo "</tr>";
}
echo "</table>";
ma nella tabella so tutti diverso da vuoto
E' vuoto solo a inizio ciclo per impostare il primo colore, alla seconda iterazione avrà il valore dell'iterazione precedente ovvero $citta = $linea['Citta'];
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
niente a me da tutto verde

non capisco :hammer:

non penso possa dipende dal fatto che la query è dentro un foreach, non dovvrebbe centrare niente

cmq ti postoil codice della query magari c'è una stupidaggine che mi sfugge

PHP:
foreach($id as $id_nome){

$sqlquery ="SELECT *  FROM tabella WHERE ID='{$id_nome}' AND Valore='1' ";
$result = mysql_query($sqlquery);

 $citta= "";
$color = "";
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if ($linea['Citta'] != $citta) {
        $color = ($color == "green") ? "red" : "green";
    }
$idx= $linea['ID'];

 $nome=$linea['Nome'];
 $citta=$linea['Citta'];
 $eta=$linea['Eta'];

 
	echo "\t<tr>\n";
   echo "<td bgcolor=\"$color\">".$citta."</td>";
      echo "<td bgcolor=\"$color\">".$nome."</td>";
      echo "<td bgcolor=\"$color\">".$eta."</td>";
	
	echo "\t</tr>\n";

	
}
}
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
cmq ti postoil codice della query magari c'è una stupidaggine che mi sfugge
hai messo green ovunque
PHP:
$color = ($color == "green") ? "green" : "green";
cambia
PHP:
$color = ($color == "green") ? "blue" : "green";

visto ora che hai modificato
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova al massimo a mettereun var_dump per vedere quante volte e cosa ti restituisce qwuella variabile
PHP:
if ($linea['Citta'] != $citta) {
        var_dump($color);
        $color = ($color == "green") ? "" : "green";
    }
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
o metti queste due fuori dal foreach
PHP:
 $citta= "";
$color = "";
EDIT : fuori vuol dire prima
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Pesno di aver capitoda dove nasce il rpoblema

quell'array nasceva dall'estrazione con group di tutte le righe avente un campo in comune

non so perchè ma quello sfasava

ho rifatto una query in maniera più semplice e i colori fungono bene ora

grazie ciric
 

lelemkop

Utente Attivo
2 Lug 2013
55
0
6
So che è passato molto tempo, ma ho cercato di adattare questo codice alla mia tabella.
Però i campi o meglio la colonna è completamente nera.
Vi posto il codice
PHP:
<?php
include 'conn.php';

echo '<br><br>';
echo "<span style=\"color: black; allign: center; font-size: 36pt\">SCHEDE IN ATTO</span>";

$sql = "SELECT id, tipologia,citta, via, civico, cognome, nome, date_format(data, '%d-%m-%Y     ore %H:%i') as data FROM interventi order by tipologia";
$res = mysql_query($sql) or die(mysql_error());
$i = 0; 
$tipologia= ""; 
$color = ""; 
while ($linea = mysql_fetch_array($res, MYSQL_ASSOC)) { 
    if ($linea['tipologia'] != $tipologia) { 
        $color = ($color == "green") ? "blue" : "green"; 
    } 
$idx= $linea['id']; 


 $tipologia=$linea['tipologia']; 

 
echo '
<table border="0" cellpadding="10" cellspacing="0">
<tr>
<td><b>data</b></td>
<td><b>tipologia</b></td>
<td><b>citta</b></td>
<td><b>via</b></td>
<td><b>civico</b></td>
<td><b>cognome</b></td>
<td><b>nome</b></td>
<td></td>
<td></td>
</tr>
 
	';
 
while ($row = mysql_fetch_array($res))

{
	echo '

<tr>
<td>' . $row['data'] . '</td>
<td bgcolor=\"$color\">' . $row['tipologia'] . '</td>
<td>' . $row['citta'] . '</td>
<td>' . $row['via'] . '</td>
<td>' . $row['civico'] . '</td>
<td>' . $row['cognome'] . '</td>
<td>' . $row['nome'] . '</td>
</tr>
 
		';
}
 
echo '</table>"';
     }

?>
dov'è l'inghippo? Immagine.jpg
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
forse il problema è qui
PHP:
<td bgcolor=\"$color\">
modifica cosi
PHP:
<td bgcolor="' . $color . '">
non mi pare comunque corretto il codice: cicli due volte la query
forme meglio se fai cosi
PHP:
include 'conn.php';

echo '<br><br>';
echo "<span style=\"color: black; allign: center; font-size: 36pt\">SCHEDE IN ATTO</span>";

$sql = "SELECT id, tipologia,citta, via, civico, cognome, nome, date_format(data, '%d-%m-%Y ore %H:%i') as data FROM interventi order by tipologia";
$res = mysql_query($sql) or die(mysql_error());
$i = 0;
echo '
<table border="0" cellpadding="10" cellspacing="0">
<tr>
<td><b>data</b></td>
<td><b>tipologia</b></td>
<td><b>citta</b></td>
<td><b>via</b></td>
<td><b>civico</b></td>
<td><b>cognome</b></td>
<td><b>nome</b></td>
<td></td>
<td></td>
</tr>
';
$tipologia = "";
$color = "";
while ($row = mysql_fetch_array($res)) {
    if ($linea['tipologia'] != $tipologia) {
        $color = ($color == "green") ? "blue" : "green";
    }
    $idx = $linea['id'];
    $tipologia = $linea['tipologia'];
    echo '

<tr>
<td>' . $row['data'] . '</td>
<td bgcolor="' . $color . '">' . $row['tipologia'] . '</td>
<td>' . $row['citta'] . '</td>
<td>' . $row['via'] . '</td>
<td>' . $row['civico'] . '</td>
<td>' . $row['cognome'] . '</td>
<td>' . $row['nome'] . '</td>
</tr>

';
}

echo '</table>"';
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho fatto la prova con questo (non avevo voglia di farmi il db)e sembrerebbe che sia quello che vuoi
PHP:
<?php
$linea=array('pinco' =>'roma','pallo' =>'roma','pallino' =>'bari','sempronio' =>'roma','sofonisba' =>'bari','asdrubale' =>'bari');
$citta = array('aaaa');
$num=1;
$color_1="green";
$color_2="red";
echo "<table>";
foreach($linea as $ch => $val){
	$citta[$num]=$val;
	$nome=$ch;
	if($citta[($num-1)]!=$citta[$num]){
		$swap=$color_1;//mannaggia in php non esiste la vecchia funzione del basic swap
		$color_1=$color_2;
		$color_2=$swap;
	}
	echo "<tr>";
	echo "<td bgcolor=\"$color_1\">" . $nome . "</td>";
	echo "<td bgcolor=\"$color_1\">" . $citta[$num] . "</td>";
	$citta[($num-1)]=$val;
	$num++;
	echo "</tr>";
}
echo "</table>";
?>
comunque in base a quanto sopra puoi provare a modificare
PHP:
<?php
$sqlquery = "SELECT *  FROM Tabella  WHERE  Valore!='1' ORDER by Citta";
$result = mysql_query($sqlquery);
$citta = array('aaaa');//un qualsiasi valore che non sia un nome di città
$color_1="green";
$color_2="red";
$num=1;
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
	$citta[$num] = $linea['Citta'];
    $nome = $linea['Nome'];
	if($citta[($num-1)]!=$citta[$num]){
		$swap=$color_1;
		$color_1=$color_2;
		$color_2=$swap;
	}
    echo "\t<tr>\n";
    echo "<td bgcolor=\"$color_1\">" . $nome . "</td>";
    echo "<td bgcolor=\"$color_1\">" . $citta[$num] . "</td>";
	$citta[$num-1]=$citta[$num];
	$num++;
}
?>
 

lelemkop

Utente Attivo
2 Lug 2013
55
0
6
Ho provato come hai detto tu (Borgo), ma uno non ho capito molto, due mi inseriva sempre la striscia nera.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puo essere che nello script con il db abbia sbagliato qualche copy/paste, vuol dire che lo proverò poi ti so dire
comunque era quello che volevi (vedi immagine)?
 
Discussioni simili
Autore Titolo Forum Risposte Data
K [Javascript] [HTML] Invertire colori alternati in tabella Javascript 3
criric Righe tabella a colori alternati Snippet Javascript 1
B Colori alternati delle celle in area ripetuta Classic ASP 3
jan267 Colori alternati Snippet PHP 3
M Colori cambiati Photoshop 0
M Colori errati su mobile HTML e CSS 1
D Avere gli stessi colori su Photoshop e TV via Chromecast Photoshop 1
ElloG Stampante a colori o b/n? Discussioni Varie 1
M Problema visualizzazione colori in photoshop Photoshop 0
L problema colori su photoshop Photoshop 0
P [Photoshop] Sostituire i colori in modo preciso Photoshop 0
Sermatth72 [HTML] creare link con colori Hover diversi, possibile? HTML e CSS 6
M [Photoshop] impossibile impostare Profilo colori Photoshop 1
borgo italia Web e contrasto colori ( webaccessibile ) Discussioni Varie 2
N [PHP] aiuto su variabili e colori PHP 4
borgo italia scelta dei colori di background e colori di contrasto Snippet PHP 1
W Combinazione colori Webdesign e Grafica 9
G Ho scaricato una mazzetta colori della Sikken per Photoshop CS6 Photoshop 3
filippino Tabella dei colori HTML HTML e CSS 1
M funzione codice esadecimale colori? PHP 1
filomeni Controllo colori file PHP 1
filippino Tabella colori esadecimali Discussioni Varie 1
L Script conta colori PHP 0
voldemort Codice colori Sviluppo app per iOS 0
I Codici esadecimali colori HTML e CSS 9
R Colori web-safe HTML e CSS 1
L CSS, cambiare i colori della barra e ingrandire una immagine WordPress 1
F Problema Generazione Colori Editor BBCODE Javascript 3
C Cambiare i colori alle celle di una tabella html in modo sequenziale Javascript 32
P Colori originali foto in bianco e nero Webdesign e Grafica 1
P Problemi di colori HTML e CSS 20
Monital script per modifica css con tabella colori html PHP 6
L Colorare immagine usando colori RGB Photoshop 18
Monital Alternare i colori di una riga i funzione dei record estratti PHP 6
M [VBulletin] pagina profilo utente colori sballati CMS (Content Management System) 1
P Mark di colori diversi con jpgraph PHP 0
T colori rgbtohsb PHP 3
tanaka estrarre dati con colori diversi PHP 10
S Colori diversi su Explorer rovinando tabella arrotondata HTML e CSS 2
S Come estrarre una palette di 256 colori da una immagine Flash 0
G A qualcuno funzionano i colori multipli adsense? Google AdSense 0
N Combinazione colori Webdesign e Grafica 2
W colori per lo slide show Webdesign e Grafica 12
A Colori nelle pagine web HTML e CSS 5
Apeweb Colori che cambiano Webdesign e Grafica 1
M Consiglio su quali colori utilizzare Webdesign e Grafica 10
K Colori barra laterale HTML e CSS 5
giorgione_tg Celle alterne con scelta dei colori Snippet PHP 0
G Problema coi colori di un menu CSS HTML e CSS 3
M Come cambiare colori e font da una pagina esterna. HTML e CSS 4

Discussioni simili