Ciao a tutti,
in una query del genere:
all'interno del ciclo while come faccio ad ottenere il valore del campo ID dell'ultimo record, ovvero del primo visto che è ordinato in modo ascendente?codice:SELECT * FROM tabella ORDER BY ID DESC LIMIT 0,30
Ciao a tutti,
in una query del genere:
all'interno del ciclo while come faccio ad ottenere il valore del campo ID dell'ultimo record, ovvero del primo visto che è ordinato in modo ascendente?codice:SELECT * FROM tabella ORDER BY ID DESC LIMIT 0,30
Intendi l'ultimo in assoluto oppure l'ultimo di ogni blocco di 30 record che estrai?
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
L'ultimo, ovvero il primo, di ogni blocco
Potresti fare una cosa del genere:
In questo modo all'uscita del ciclo while nella variabile $id è contenuto il primo ID del resultset.Codice PHP:...
$id = 0;
while (...) {
if ($id == 0) {
$id = $valore;
}
...
}
...
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Ed ovviamente all'interno del ciclo incremento la variabile $id
Grazie, non ci avevo pensatocodice:$id++;![]()
Anzi, ferma, ho letto male il tuo codice, la variabile va incrementata ma bisogna modificare il tuo codice
Dico bene?Codice PHP:$id = 0;
while (...) {
if ($id == 0) {
$primo_id = $valore;
}
$id++;
...
}
Il codice andava bene così come l'ho postato. La logica è che $id va impostato col valore dell'ID contenuto nel primo record. Quindi esso viene impostato inizialmente a 0 cosicchè la prima volta si entra nell'if e si imposta il valore che sarà sicuramente > 0 (valore del campo ID). Da quel momento in poi esso non dovrà essere più modificato, infatti non si entra più nell'if ed alla fine del ciclo while in $id ci sarà il valore del campo ID contenuto nel primo record.Originariamente inviato da satifal
Codice PHP:...
$id = 0;
while (...) {
if ($id == 0) {
$id = $valore;
}
...
}
...
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Hai ragione![]()
Avresti potuto adottare anche un'altra strada:
Dopodiche con un while recuperavi questo valore e se l'id della prima query era uguale al valore recuperato facevi quello che ti serviva.Codice PHP:SELECT * FROM tabella ORDER BY ID ASC LIMIT 0,1
E' un'alternativa che mi sento di suggerirti, scegli tu la strada che vuoi intraprendere.
In realtà ho dovuto seguire una strada un po' diversa, utilizzando le sub-query, poichè la select originale non è ordinata in base all'id, bensi in base ad un campo data. Pertanto non è detto che il primo record sia uguale a quello con id maggiore.
Ho dovuto quindi fare:
Poi nel ciclo while ho seguito il seggerimento di satifal:Codice PHP:SELECT *, (SELECT MAX(ID) FROM tabella WHERE ... ORDER BY ID DESC LIMIT 0, 30) AS max_id FROM tabella WHERE ... ORDER BY campo_data DESC LIMIT 0, 30;
Codice PHP:$max_id = 0;
while{
if($max_id == 0){
$max_id = $row["ID"];
}