Jump to content

Mostrar sempre o Ultimo ID


Recommended Posts

Posted

Viva, preciso de saber se existe alguma maneira de o PHP ir ler sempre o utimo ID numa determinada BD e inseri-lo numa variavel?..

O ID é auto-increment.

Cumprimentos.

Posted
<?php
...
$query = "SELECT id FROM tabela";
$query = mysql_query( $query );

$array = array();
while($row = mysql_fetch_Array( $query )) {
$array[] = $row['id']; 
}
$num = count( $array );

echo $array[$num];

Acho que existem formas mais faceis de se fazer isso... mas como nao tenho um servidor para testar outras formas aqui fica esta.

Código escrito mas não testado...

Posted

Penso que assim funcione:

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1"); // SQL PARA OBTER O ULTIMO ID!
list($ultimoID) = mysql_fetch_array($result); // ENVIAR O RESULTADO PARA A  VARIAVEL $ultimoID
echo $ultimoID; // RETORNAR A VARIAVEL
Posted

Penso que assim funcione:

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1");
list($ultimoID) = mysql_fetch_array($result);
echo $ultimoID;

Devias usar max(), ordenar resmas de informação só para tirar o maior valor não é lá grande ideia.

Para o problema em questão deviam considerar LAST_INSERT_ID()

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Posted

Essas funcionam, mas o mais rápido é mesmo

o mais rápido é mesmo:

$sql = "select max(id) from table";
$result = mysql_query($sql);
$id=mysql_result($result,0);
Posted

Boas, sempre podes usar o LAST_INSERT_ID() em mysql ou o mysql_insert_id em php sem precisar de usar querys com select's.

Cumps

Posted

Boas, sempre podes usar o LAST_INSERT_ID() em mysql ou o mysql_insert_id em php sem precisar de usar querys com select's.

Cumps

Esse método falha se a tua aplicação for muito usada por varias pessoas ao mesmo tempo 😉

A melhor solução, a meu ver, é a do pedrotuga.

Posted

yah provavelmente... mas também depende onde e como quer usar, se for usar o id para relacionar com outra cena qualquer ou então se quer saber qual o próximo id, e se por acaso der para apagar linhas dessa coluna, se apagares o ultimo id o próximo id a ser criado será acima do apagado, mas no entanto o max(id) é o id antes de ser apagado... é relativo! lol 😉

Cumps

Posted

boas ppl tou a usar esta opção

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1"); // SQL PARA OBTER O ULTIMO ID!
list($ultimoID) = mysql_fetch_array($result); // ENVIAR O RESULTADO PARA A  VARIAVEL $ultimoID
echo $ultimoID; // RETORNAR A VARIAVEL

mas queria que esta me apresenta-se por exemplo os 5 ultimos e ai tentei trocar o id desc limit para 5 mas n resultou :\

e ja agora como mostrar a linha completa como por exemplo id, nome, data e tudo o que esta na ultima(s) linha inserida.

alguem me pode ajudar ? 😄

obrigado

[]'s

Posted

boas ppl tou a usar esta opção

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1"); // SQL PARA OBTER O ULTIMO ID!
list($ultimoID) = mysql_fetch_array($result); // ENVIAR O RESULTADO PARA A  VARIAVEL $ultimoID
      echo $ultimoID; // RETORNAR A VARIAVEL

mas queria que esta me apresenta-se por exemplo os 5 ultimos e ai tentei trocar o id desc limit para 5 mas n resultou :\

e ja agora como mostrar a linha completa como por exemplo id, nome, data e tudo o que esta na ultima(s) linha inserida.

alguem me pode ajudar ? 😄

obrigado

[]'s

Boas.

Penso que deve de ser algo do género:

$result = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 0,5"); // SQL PARA OBTER O ULTIMO ID!
while($result ( mysql_fetch_array($result)) // a ordem de amostragem, vai ser do ultimo, para o 5º a contar do fim
{
    echo $result['id']; // são apenas alguns exemplos, mas os nomes entre '', tem de ser exactamente iguais aos que estão na bad
    echo $result['nome'];
    echo $result['morada'];
    echo $result['telefone'];
}

espero ter ajudado.

cumps

Posted

boas ppl tou a usar esta opção

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1"); // SQL PARA OBTER O ULTIMO ID!
list($ultimoID) = mysql_fetch_array($result); // ENVIAR O RESULTADO PARA A  VARIAVEL $ultimoID
echo $ultimoID; // RETORNAR A VARIAVEL

mas queria que esta me apresenta-se por exemplo os 5 ultimos e ai tentei trocar o id desc limit para 5 mas n resultou :\

O código que tens está esquisito.

Faz um

print_r($ultimoID)

para veres o seu conteudo. O problema é que estás a tentar fazer echo de um array.

Essa função list nem sei o que é que faz, mas se queres sacar só um valor mais vale usares a mysql_result(), checka o manual.

De resto pores um 5 em vez de um 1 na clausula LIMIT funciona, eu uso essa clausula frequentemente dessa forma sem problemas.

e ja agora como mostrar a linha completa como por exemplo id, nome, data e tudo o que esta na ultima(s) linha inserida.

alguem me pode ajudar ? 😄

obrigado

[]'s

simples, depois de devidamente corrigido o código anterior. é Só fazer uma coisa do tipo.

$sql="select * from tabela where id='$ultimoID' order by id desc limit 5";
$resultado=mysql_query($sql);
while ($linha=mysql_fetch_array($resultado)){
    echo "<pre>";
    print_r($linha);
    echo "</pre>";
}

usei o print_r para fazer um dump de cada linha armazenada para poderes ver melhor como funciona o mysql_fetch_array, mas não te esquças de ler o manual.

Posted

boas 🙂

pah o codigo ta esquisito n sei lol limitei-m a copiar la de cima

[cote]

Faz um

Código:

print_r($ultimoID)

para veres o seu conteudo. O problema é que estás a tentar fazer echo de um array.

Essa função list nem sei o que é que faz, mas se queres sacar só um valor mais vale usares a mysql_result()

[/cote]

pah presiso ter kalma 🙂 sou novo nisto lol tou a tentar aprender php desde ontem de manha 😉

de resto acho que até percebi vou ver se consigo algo 😄

Posted

boas ppl tou a usar esta opção

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1"); // SQL PARA OBTER O ULTIMO ID!
list($ultimoID) = mysql_fetch_array($result); // ENVIAR O RESULTADO PARA A  VARIAVEL $ultimoID
echo $ultimoID; // RETORNAR A VARIAVEL

mas queria que esta me apresenta-se por exemplo os 5 ultimos e ai tentei trocar o id desc limit para 5 mas n resultou :\

O código que tens está esquisito.

Está esquesito porque? lol se nao sabes o que o list faz basta ires até ao help 😄

Esse script que fiz esta apenas a funcionar para uma row se queres para 5 tens de colocar isto:

$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 5"); // SQL PARA OBTER OS 5 ULTIMOS ID's!
while (list($ultimoID) = mysql_fetch_array($result)) { 
     echo $ultimoID; // RETORNAR A VARIAVEL
}
Posted
$result = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 5"); // SQL PARA OBTER OS 5 ULTIMOS ID's!
while (list($ultimoID) = mysql_fetch_array($result)) { 
     echo $ultimoID; // RETORNAR A VARIAVEL
}

pois é com isso ele ja mostra os 5 ultimos mas mesmo assim n me mostra a linha completa :\ tentei misturar como  codigo do DRKaQUiLa mas nd :\

onde diz :

SELECT id FROM tabela ORDER BY id DESC LIMIT 5

troquei para

SELECT * FROM tabela ORDER BY id DESC LIMIT 5

a pensar que iria ver tds os campos mas en vão :\ alguem me soluciona o problema ?

brigado desde ja 😄

PS: apesar de secalhar pensar que eu n tento eu tou a tentar fazer varias coisas apenas n percebo nem nunca aprendi nd de PHP e logo presiso de ajudas 😛

Posted
$result = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 5"); // SQL PARA OBTER OS 5 ULTIMOS ID's!
while ($r = mysql_fetch_array($result)) { 
     $var1 = $r['campo1'];
     $var2 = $r['campo2'];
     ...
     ...
     ...
}

Podes tambem utilizar o extract($r); e o que vai contecer é que vai converter todos os campos em variaveis, tipo tens os campos ID, nome, telefone... o que o extract vai fazer é criar as variaveis $ID, $nome, $telefone 😛

$result = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 5"); // SQL PARA OBTER OS 5 ULTIMOS ID's!
while ($r = mysql_fetch_array($result)) { 
     extract($r);
     echo $ID;
     echo $nome;
     echo $telefone;
}
Posted

Boas,

Ora entao, como ja foi dito tas a tentar fazer um echo de um array, o que nao te vai dar o resultado esperado. Experimenta isto:

...
$result = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 5"); // SQL PARA OBTER OS 5 ULTIMOS ID's!
while ($ultimoID = mysql_fetch_assoc($result)) { 
foreach ($ultimoID as $campo => $valor)
{
echo $campo.' = '.$valor.'<br />';
}
}
...

Isto vai mostrar todos os campos daquela linha, da forma "Campo = Valor". Basta personalizar o codigo conforme as tuas necessidades. A funcao "mysql_fetch_assoc()" é similar ao "mysql_fetch_array()", mas retorna um array sem chaves numericas, apenas com o nome dos campos da tabela como chaves. O "foreach()" vai percorrer o array todo, permitindo extrair os resultados campo á campo.

PS: nao testei o codigo, mas penso que esteja correcto.

EDIT: alterei a tag code para php, nao consigo é manter a indentação (tava a usar espaços), alguma solucao para isso?

"Pensa positivo: tudo pode piorar"

Posted

jreis, usa [ code=php] em vez de [ code] para melhor leitura sff 👍

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.