• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

chicosoft

Mostrar sempre o Ultimo ID

18 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<?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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ? :D

obrigado

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ? :D

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ? :D

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D

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
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$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 :D

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 :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$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 :P

$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;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora