estrarre dati con colori diversi

  • Creatore Discussione Creatore Discussione tanaka
  • Data di inizio Data di inizio

tanaka

Nuovo Utente
13 Feb 2009
28
0
0
estrarre dati da Mysql e riportarli con colori diversi

Salve ,

ho un database molto semplice con un' unica tabella , dal quale devo estrarre tutti i dati di tutte le linee e riportarle a schermo .

il database è così composto :

ID | TITOLO | DESCRIZIONE | COLORE

dove nel campo colore in pratica ho inserito una stringa che è il nome di una classe inserita in css esterno .

Vado a stampare tutti i dati a schermo ( sono tutti link e DEVONO avere differenti colori ognuno ) ed assegno una variabile al colore , ma mi succede che tutta la pagina , cioè tutti i link , cambiano il loro colore sulla base dell' ultimo inserito . In pratica ( da quel poco che capisco io ) il puntatore arriva in fondo al database e sulla base di quel colore , mi colora tutto uguale anzichè diversi come dovrebbero essere ...
infatti basta inserire una nuova riga , con colore diverso che tutto assume il colore di quell' ultima riga ..

dove sbaglio ? come posso risolvere ?


Grazie mille in anticipo !
 
Ultima modifica:
ciao
scusa non ho capito bene
es.
nel css hai
.class1{..........}
.class2{..........}
ecc...
.classN{..........}
e nel campo colore
class1
class2
.....
classN
o sbaglio?

se è così quando estrai col while ricavi i vari dati

da cui

PHP:
<a href="<?php echo $titolo; ?>" class="<?php echo $colore; ?>"><?php echo $descrizione; ?></a>

dimenticavo
nella pagina devi aver richiamato il css
 
Ultima modifica:
PHP:
$sql = mysql_query("SELECT * FROM tabella ORDER by ID DESC");
while($row=mysql_fetch_array($sql))
{
echo "<a href=\"".$row['titolo']."\" class=\"".$row['colore']."\">". $row['descrizione']."</a>\n\r";
}
 
grazie ragazzi per le risposte ..

in effetti non capisco una cosa .. ( sono moooolto newbie )

nello script che stò modificando ( un calendario che dovrebbe ripoetare eventi diversi con diversi colori ) , succede questo :

quando si connette al database crea il classico array per poi suddividerlo in variabili ed array con il classico ciclo while , ma senza fare la stampa all' interno di questo ciclo .

molto più sotto , e dopo parecchio altro codice ( che forma il calendario ) và a stampare i vari dati raccolti precedentemente . IO non riesco a capire come posso trasportare fino all' altra parte di codice il valore colore di ogni riga , cioè il class che gli ho assegnato da database .

Devo assegnare il valore colore ad un array? se si , come ? chiedo questo perchè assegnando il valore colore ad una semplice variabile , essendo il ciclo di stampa staccato da ciclo di lettura del database , la cosa non mi funziona .


Chissà se sono stato chiaro .. :confused:

spero ..

grazie infinite !!!!


guardate , questo è il ciclo classico di lettura database ( dove event_team rappresenta le varie classi riportate nel database ) :


$query = "SELECT event_id,event_title,event_day,event_time,event_te am FROM $db_table WHERE event_month='$month' AND event_year='$year' ORDER BY event_time";

$query_result = mysql_query ($query);
while ($info = mysql_fetch_array($query_result))
{
$day = $info['event_day'];
$event_id = $info['event_id'];
$events[$day][] = $info['event_id'];
$event_info[$event_id]['0'] = substr($info['event_title'], 0, 100);;
$event_info[$event_id]['1'] = $info['event_time'];
$event_team = $info['event_team'];
}


.... molto codice dopo c'è il ciclo di scrittura dei dati :

echo "<div align=\"left\">\n";

while (list($key, $value) = each ($events[$i])) {

echo "<span class=\"$event_team\"><a href=\"javascript:MM_openBrWindow('event.php?id=$v alue','','width=500,height=200');\">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";
}
echo "</span></div>\n";
}
echo "</td>\n";


...


ma il mio "codice colore" in qualche modo non viene trasposrtato da un ciclo all' altro , ma finisce sempre per eseguire l' ultima voce del database ...


come trasporto il dato "colore" da un ciclo all' altro ? a cosa lo assegno in lettura ad un array ? ora è assegnato ad una variabile e non funziona ....


brutta cosa l' ignoranza ...

grazie a tutti voi !!!!!!!!!!
 
Ultima modifica:
quando devo utilizzare un array di dati prodotto da una quey in genere faccio così.

1. Metto tutto in un array:
PHP:
while($row = mysql_fetch_array($sql)) {
   foreach($row as $value) {
   $array_totale[]=trim($value);
   }
  }

2. ordino l'array:
PHP:
  $array_finale = array_unique($array_totale);
  sort($array_finale);
  reset($array_finale);

3.Poi mi vedo i dati con foreach
PHP:
foreach($array_finale as $value)
    {
     echo $value;//etc.
    }
 
ciao
proverei in questo modo, dal ciclo che ti ha detto eliox

PHP:
$sql = mysql_query("SELECT * FROM tabella ORDER by ID DESC");
$classe=array();//creo un arrai
while($row=mysql_fetch_array($sql))
{
$classe[]=$row['colore'];//la $classe si autoincrementa da 0 in poi.....
echo "<a href=\"".$row['titolo']."\" class=\"".$row['colore']."\">". $row['descrizione']."</a>\n\r";
}

poi modificherei leggermente

$conta=0;//inizializzo un contatore
while (list($key, $value) = each ($events[$i])) {
// nell' <a hreff... metto class=$classe[$conta]
echo "<span class=\"$event_team\"><a href=\"javascript:MM_openBrWindow('event.php?id=$v alue','','width=500,height=200');\" class=\" $classe[$conta]"\>" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";
$conta++;//incremento il contatore ad ogni ciclo del while
}

ogni a href "dovrebbe prendere la classe assegnata
 
Grazie Eliox !!!! lo terrò a mente quando dovrò di nuovo operare su codici di questo tipo .

purtroppo però ora devo operare su quello che ho già , tu come faresti ??




Grazie anche a Borgo Italia .. ho tentato il tuo codice ma non funziona ..

stò perdendo la testa ..:dipser:

iuo neanche capisco come facesse a stampare a video i dati senza il ciclo $conta che hai messo tu .. eppure lo fà .. un ciclo di prelievo dati riga per riga esiste già ( anche se io non lo capisco ) ; quindi dovrebbe bastare dire a questo ciclo : " senti , mentre scrivi tutti i dati che hai prelevato dal ciclo di lettura precedente , mi associ il relativo colore ( che hai sempre prelevato dal ciclo di lettura precedente ) ????


Ma non ci riesco ..:crying:


grazie infinite ragazzi per la disponibilità , la cortesia e la pazienza che mostrate . Spero di potermi sdebitare in qualche modo ..


Ps : ulteriore ragionamento

Mi chiedo :

se da qui recupera il valore del colore ( rappresentato dal nome della classe di appertenenza ) :

$query = "SELECT event_id,event_title,event_day,event_time,event_te am FROM $db_table WHERE event_month='$month' AND event_year='$year' ORDER BY event_time";

$query_result = mysql_query ($query);
while ($info = mysql_fetch_array($query_result))
{
$day = $info['event_day'];
$event_id = $info['event_id'];
$events[$day][] = $info['event_id'];
$event_info[$event_id]['0'] = substr($info['event_title'], 0, 100);;
$event_info[$event_id]['1'] = $info['event_time'];
$event_team = $info['event_team']; // recupero nome classe
}

perchè nell' altro ciclo non lo riporta riga per riga semplicemente con il tag span ? :

while (list($key, $value) = each ($events[$i])) {

echo "<span class=\"$event_team\"><a href=\"javascript:MM_openBrWindow('event.php?id=$v alue','','width=500,height=200');\">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";


dovrebbe funzionare , no ? perchè non va ?
 
Ultima modifica:
ho quasi risolto ...

ho inserito un array nel ciclo di lettura così :

$query = "SELECT event_id,event_title,event_day,event_time,event_team FROM $db_table WHERE event_month='$month' AND event_year='$year' ORDER BY event_time"; // estraggo titolo , giorno , // orario e team dalla
// tabella in ordine di tempo
$query_result = mysql_query ($query);
while ($info = mysql_fetch_array($query_result))
{
$day = $info['event_day'];
$event_id = $info['event_id'];
$events[$day][] = $info['event_id'];
$event_info[$event_id]['0'] = substr($info['event_title'], 0, 100);;
$event_info[$event_id]['1'] = $info['event_time'];
$event_info[$event_id]['2'] = $info['event_team']; // metto il team di appartenenza che identifica il colore qui

}

e nel ciclo di scrittura :

while (list($key, $value) = each ($events[$i])) {
$colore = $event_info[$value]['2'];// setto una variabile che contenga il dato letto prima
echo "<span class=\"$colore\"><a href=\"javascript:MM_openBrWindow('event.php?id=$value','','width=500,height=200');\">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";// riporto il la variabile associandola al tag span
}
echo "</span></div>\n";


però ... tutto va bene finchè due scritte non compaiono nella medesima casellina .. in quel caso quella che ha un orario precedente " vince " colorando le altre .. perchè ??? :dipser::dipser:
 
ciao
prova a portare </span> dntro il ciclo while


................
echo "</span>\n";
//riporto il la variabile associandola al tag span
}
echo "</div>\n";

mal che vada non funzia ancora;)
 
ciao Borgo Italia ,

ti bacerei !!!!!!!!!!!!!!!!!!! :fonzie:


era proprio quello .. ha funzionato a perfezione !

che dire .. grazie infinite ..:beer:


ma non pensiate che le mie domande siano finite , eh ??? :eek:

:p

Grazie ragazzi , alla prossima "query" .. :)

:byebye:
 

Discussioni simili