Cambiare colore riga dati estratti da mysql

  • Creatore Discussione Creatore Discussione Bivio
  • Data di inizio Data di inizio

Bivio

Utente Attivo
19 Mag 2010
91
0
6
Salve, ho creato un piccolo script che mi permetterà di archiviare alcuni dati su un database mysql, ora vorrei aggiungere la possibilità di cambiare il colore di una riga, esempio quando vado a modificarla, tipo di base non hanno colore, la tabella prenderà il colore del css, mentre quando poi io andrò a modificare una riga potrò scegliere tra due colori predefiniti, non so se ho reso l'idea...potete darmi una mano?
 
Ciao Bivio,

non sono sicuro di aver capito la tua esigenza, però credo che potresti gestire il tipo di colore con un un flag nella tabella del db per ogni riga.

Mi spiego meglio,
non modificata = 0
modificata = numero del colore preso da una tabella colori

Tabella colori
Rosso=1
Giallo=2
Verde=3

inoltre nella tabella potresti inserire anche l'esadecimale es. Rosso #F00
in modo da fare una query select del colore e inserirlo sulla riga.

Spero di aver capito il tuo problema e di esserti stato utile
 
Finalmente avendo un po di tempo libero, sto cercando di ritornare sul progetto.

@borgo italia

Il tuo esempio già lo conoscevo, non e quello che cercavo.

@clickeweb

Forse la tua strada e quella giusta, ma anche facendo delle prove non sono riuscito a risolvere, per farmi capire meglio vorrei realizzare una cosa ti questa esempio
 
ciao
da quello che ho capito( a parte i colori):
- se modifichi un nominativo la riga deve diventare verde
- se aggiungi un nominativo la riga deve diventare rossa
- le righe rimanenti devono rimanere bianche
giusto?
poi
le righe colorate devono sempre rimanere colorate o dopo un certo tempo (es il giorno dopo) devono tornare bianche? se è così nella tabella hai il campo con la data di inserimento e/o modifica del record (spero che se sì siano in timestamp oppure devi indicarmi come viene/vengono salvate gg.mm.aa o gg/mm/aaaa….)?
eventualmente posta la stuttura della tabella

dimenticavo
per distinguere i campi di nuovo inserimento da quelli modificati devi avere due campi data: inserimento e modifica, oppure come dicevacw dei flag
 
Ultima modifica:
Ciao borgo italia, allora forse non sono riuscito io a spiegarmi bene, alla fine sono riuscito ad ottenere quello che volevo che sarebbe questo :D :link
Ma adesso mi servirebbe un altro aiuto vorrei, visualizzare in fondo alla pagina (o in altra parte, poi deciderò....) La data del ultimo inserimento/modifica, come potrei fare?
 
ciao
potrest fare una cosa del genere (se le date sono in timestamp)

PHP:
$query=mysql_query("SELECT MAX(data) FROM tabella");
$riga=mysql_fetch_array($query);
$data_umana=date("d m Y h:m:s",$riga['data']);
echo "data ultimo inserimento: $data_umana";

oppure con la query
$query=mysql_query("SELECT data FROM tabella ORDER BY data LIMIT 1");
 
provato ma mi visualizza questo:

data ultimo inserimento: 01 01 1970 01:01:00

sicuramente sbaglio io qualcosa...
 
ciao
vuol dire che nella variabile
$riga['data'] o come si chiama il campo della data
hai un valore uguale a zero (la data che ti restituisce è la partenza del timestamp)
per verificare la dat metti un bel var_dump subito dopo il fetch_array
var_dump($riga['data']);
e guarda cosa ti restituisce

p.s.
non mi hai ancora detto se salvi le date in timestamp, questo perche (ad esempio) se le salvi in formato umano 01/04/2011 (quindi una stringa) è facile che prenda solo lo 01 come intero.
 
ok adesso provo, la data in timestamp viene visualizzata in questo modo: 0000-00-00 00:00:00
 
ciao
allora non è un timestamp.
il timestamp è un numero intero. sono i secondi trascorsi dalla data di inizio (vedi post precedente) alla dat e ora attuale.
prova a scriverti questo miniscript

PHP:
$timestamp=time();
var_dump($timestamp);
$data_umana=date("d m Y H:i:s",$timestamp);
var_dump($data_umana);
e vedi la differenza
 
ciao
comunque se la data 0000-00-00 00:00:00 risulta essere aaaa-mm-gg HH:ii:ss, cioè anno mese giorno ora minuti e secondi quanto ti ho già scritto, con una modifica va bene lo stesso

PHP:
<?php
$query=mysql_query("SELECT data FROM tabella ORDER BY data LIMIT 1"); 
$riga=mysql_fetch_array($query); 
echo "data ultimo inserimento: ".$riga['data'];  
?>
cioè non devi fare la trasformazione da timestamp a umano perchè già in formato umamo (ma non italiano).
se vuoi trasformartela in formato italiano gg.mm.aaaa HH:ii:ss dovresti fare una cosa del genere

PHP:
<?php
//.....
$d_1=explode(" ",$riga['data']);//esplodi secondo lo spazio
// in $d_1[0] ti ritrovi la parte aaaa-mm-gg mentre in in $d_1[1] la HH:ii:ss
$d_2=explode("-",$d_1[0]);//esplodi secondo il trattino
//in $d_2[0] => aaaa, $d_2[1] => mm e $d_2[2] => gg
//ricomponi
$data_italiano=$d_2[2]."-".$d_2[1]."-".$d_2[0]." ".$d_1[1];// gg-mm-aaaa H:ii:ss
echo "data ultimo inserimento: $data_italiano";
?>
 
niente adesso invece mi visualizza questo:

data ultimo inserimento: 0000-00-00 00:00:00
 
ciao
il problema allora mi sembra che sia a monte.
sei sicuro che la data sia registrata nel db? verifica con myadmin cosa c'è nei vari campi.
hai messo il nome esatto della data nella $riga['data???'] e nella select?
 
ciao
ho visto.
per forza ti restituisce 0000-00-00 00:00:00 nel campo data c'è solo quel valore.
quindi vuol dire che inserisci male.
inoltre vedo che hai definito il campo data come timestamp (tra l'altro incompatibile con il valore di default che hai messo)
come ti ho detto la data in formato timestamp è un numero intero.
esempio
questa è la data in timestamp 1302162749
che corrisponde alla data umana 07-04-2011 09:52:29 (o viceversa).
nelle tabelle che faccio non definisco il campo data timestamp ma con int(12)
 
scusami adesso sto facendo un po di confusione, quindi ricapitolando devo fare:

1) creare un campo 'data' int(12)
2) creare una query che quando aggiorno/modifico stampo la data attuale nel campo 'data'
3) utilizzare la tua query per estrapolare l'ultima data e visualizzarla?
 
ciao
1) creare un campo 'data' int(12)
no basta che tu lo modifichi in quanto l'hai di già

poi i passi che dovresti compire sono:
- al momento in cui inserisci un nuovo dato
1. prelevare la data in timestamp con (es.) $dataTS=time();
2. nell'insert che fai per gli altri dati devi inserire ne campo data il valore che risulta
es. "INSERT INTO tabella(....., data) VALUES(.....,'$dataTS');
- al momento che uppi i dati devi sempre prelevare la data in timestamp e assieme ai dati che uppi uppare anche la data
- al momento della lettura con la select che ti ho indicato prelevi la data massima e la trasformi in data umana italiana con
echo "data ultimo aggiornamento: ".date("d-m-Y H:i:s",$riga['data']);
oppure se preferisci prima la metti in una variabile e poi la echizzi (neologismo di stampi)
 
Ciao, ho avuto poco tempo in questi giorni per fare delle prove, ne ho fatto una veloce ecco come:
creato una variabile data:

PHP:
$date = date("d/m/Y H:i");
Ecco la query durate l'inserimento del record:
PHP:
$sql = "INSERT INTO lista (nome,cognome,telefono,stato,date) VALUES ('$_POST[nome]','$_POST[cognome]','$_POST[telefono]','$_POST[stato]','$date')";
Query di aggiornamento:
PHP:
$sql = "UPDATE lista SET nome='$_POST[nome]', cognome='$_POST[cognome]', telefono='$_POST[telefono]', date= '$date' WHERE id='$_POST[id]'";

Adesso diciamo ho il campo data che funziona correttamente, memorizza la data di aggiunta e quella d aggiornamento, ora pero non riesco ad estrarre quella più recente e visualizzarla ho provato con

PHP:
$query=mysql_query("SELECT date FROM lista ORDER BY date DESC LIMIT 1");  
$datamax=("SELECT MAX(date)  FROM lista ");
:hammer:
 
ciao
se vuoi estrarre la data devi fare
PHP:
<?php
$query=mysql_query("SELECT date FROM lista ORDER BY date DESC LIMIT 1");  
$riga=mysql_fetch_array['date'];
echo $riga['date'];
?>
due piccole cose:

1. stai attento che con la data scritta in quel modo $date = date("d/m/Y H:i") in date (a parte le ore e i minuti)oggi in $date troveresti

14.04.2011 10:35

con un piccolo particolare che se il mese prossimo inserisci/uppi qualcosaltro la data di qualcosaltro ti può risultare ad esempio

07.05.2011 12:10

col risultato che 07.05.2011 12:10 < 14.04.2011 10:35 (stai operando con stringhe) e quindi l'ordinamento ti può andare in pallino

2. cerca di evitare di dare i nomi dei campi e variabili siano uguali alle parole chiave di php, mi riferisco al campo che hai chiamato date -> date(...)
 

Discussioni simili