recupero solo ultimo dato

helpdesk

Utente Attivo
30 Set 2009
726
0
16
Pesaro
Ragazzi devo recuperare di volta in volta solo l'ultimo dato dell'array ho pensato di fare così:

$sql=mysql_query("SELECT nid from annunci");
$dati = array();
while($riga = mysql_fetch_array($sql)){
$dati[]= $riga['nid'];
}
echo "Dati=".implode("|",$dati);

ma mi da questo output: Dati=rftd|wgtd

a me serve solo l'ultimo dato ovvero wgtd come posso fare?
 
provato con:
PHP:
$sql=mysql_query("SELECT nid from annunci ORDER BY nid DESC
LIMIT 0 , 1");
?
 
Ciao Eliox ci ho riprovato questa mattina e mi sono accorto che funziona ma che si limita a leggere l'ultimo dato solo se hanno due righe ma io vorrei che legga sempre l'ultimo dato a prescindere dalle righe esempio ci sono 15 righe lìultimo dato della quindicesima se ce ne sono 20 l'ultimo della ventesima e così via ci vuole un ciclo for?

$sql=mysql_query("SELECT niu from annunci ORDER BY niu DESC LIMIT 0 , 1");
$dati = array();
$tipologia=".jpg";
while($riga = mysql_fetch_array($sql)){
$dati[]= $riga['niu'];
}
$dato="".implode($dati);
$foto=$dato.$tipologia;
echo "$foto";

va fatto così?

$sql=mysql_query("SELECT niu from annunci ORDER BY niu DESC LIMIT 0 , 1");
$dati = array();
$tipologia=".jpg";
for($riga=1;$riga <=mysql_fetch_array($sql);++$riga){
$dati[]= $riga['niu'];
}
$dato="".implode($dati);
$foto=$dato.$tipologia;
echo "$foto";
 
Ultima modifica:
... esempio ci sono 15 righe lìultimo dato della quindicesima se ce ne sono 20 l'ultimo della ventesima e così via ...

Forse non ti sei spiegato proprio bene. La soluzione fornita giustamente da Eliox recupera l'ultimo record inserito. In pratica viene effettuata una select sul campo nid della tabella annunci ordinata in maniera decrescente sul valore di nid ed infine viene restituito solamente il primo record di tale ordinamento (quello contenente il valore massimo).
Se hai bisogno di un comportamento differente dovresti spiegare un po' meglio le tue esigenze. Quando parli di righe immagino tu ti riferisca ai record. Potresti magare postare la struttura completa della tabella annunci e spiegare quale dato devi effettivamente recuperare.
 
Ciao safital.
Mi scuso per la poca chiarezza.
Il db annunci è strutturato così:
id_annuncio
annuncio
immagine
niu


devo recuperare l'ultimo dato di niu ovvero sempre l'ultimo numero della foto che registro nel record niu esempio: se ci sono tre numeri della foto 1, 2, 3 edevo leggere 3 se invece ce ne sono cinque 1,2,3,4,5 devo leggere 5 se ce n'è solo una devo leggere 1.
Per farlo avevo pensato ad un ciclo while ma non funziona e mi chiedo in cosa sbaglio?
 
Non c'è bisogno di scuse figurati, è che altrimenti non si capisce bene cosa devi realmete fare. Mi stai dicendo che il campo (non record) niu contiene più di un valore?
Ogni record o, se preferisci, riga contiene i campi id_annuncio, annuncio, immagine, niu. Tali campi possono contenere unicamente un valore. Per inserire più di un valore in un campo essi devono essere inseriti come stringa separati da un qualche delimitatore (es: 1|2|...|n) oppure il campo niu è una foreign key verso un'altra tabella che contiene i valori che cerchi.
 
ciao satifal e grazie per la risposta. No il record deve contenere un solo valore però nella query a me serve solo l'ultimo come se fosse un ciclo for che mostra l'iterazione di i fuori dal ciclo mostrando per esempio 4 come echo per via del fatto che ci sono 4 record
 
La select ordina i valori del campo niu in maniera decrescente e ti restituisce il primo della lista. Quindi così com'è non va bene. Se il campo niu fosse un intero la cosa funzionerebbe, siccome contiene stringhe esse vengono oordinate alfabeticamente.
Forse dovresti lavorare sull'id_annuncio. Perchè nel tuo esempio dici che il valore di niu "a6q9" è l'ultimo? Perchè ha l'id_annuncio più grande?
Se è così allora devi modificare la select in questo modo:

Codice:
SELECT niu from annunci ORDER BY id_annuncio DESC LIMIT 0 , 1

Fammi sapere
 
si infatti io faccio così:

$sql=mysql_query("SELECT nid from annunci ORDER BY nid DESC LIMIT 0 , 1");
$dati = array();
$tipologia=".jpg";
while($riga = mysql_fetch_array($sql)){
$dati[]= $riga['nid'];
}
$dato="".implode($dati);
$foto=$dato.$tipologia;
echo "$foto";

dovrei lavorare sull'id annuncio?
 
Questo devi saperlo tu, in base alla logica di cò che stai facendo. Se devi recuperare il nid dell'ultimo annuncio inserito allora dovresti eseguire la select utilizzando l'id_annuncio e recuperare il nid corrispondente

Codice:
SELECT nid from annunci ORDER BY id_annuncio DESC LIMIT 0 , 1

oppure, se hai l'id dell'annuncio che vuoi recuperare:

Codice:
SELECT nid FROM annunci WHERE id_annuncio = $id

dove $id è l'id dell'annuncio che vuoi recuperare.
 

Discussioni simili