Ir para o conteúdo
chicosoft

Mostrar sempre o Ultimo ID

Mensagens Recomendadas

chicosoft    0
chicosoft

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Drone    1
Drone

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bruno    0
Bruno

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
d-e-a-d    0
d-e-a-d

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
electric    1
electric

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DRKaQUiLa    0
DRKaQUiLa

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
electric    1
electric

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Drone    1
Drone

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
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
electric    1
electric

$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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Drone    1
Drone

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jreis    0
jreis

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?

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade