chicosoft Posted December 7, 2006 at 07:32 PM Report #69441 Posted December 7, 2006 at 07:32 PM 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.
kingless Posted December 7, 2006 at 07:49 PM Report #69447 Posted December 7, 2006 at 07:49 PM <?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...
Drone Posted December 7, 2006 at 08:03 PM Report #69449 Posted December 7, 2006 at 08:03 PM 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
shumy Posted December 7, 2006 at 08:12 PM Report #69454 Posted December 7, 2006 at 08:12 PM 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!
chicosoft Posted December 8, 2006 at 12:46 AM Author Report #69535 Posted December 8, 2006 at 12:46 AM Penso que seja isso. Vou experimentar mais tarde. Obrigado.
pedrotuga Posted December 8, 2006 at 04:29 AM Report #69561 Posted December 8, 2006 at 04:29 AM 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);
d-e-a-d Posted December 11, 2006 at 03:11 PM Report #70101 Posted December 11, 2006 at 03:11 PM 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
Bruno Posted December 12, 2006 at 09:22 PM Report #70340 Posted December 12, 2006 at 09:22 PM 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.
d-e-a-d Posted December 14, 2006 at 10:20 AM Report #70516 Posted December 14, 2006 at 10:20 AM 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
electric Posted December 17, 2006 at 12:13 PM Report #70920 Posted December 17, 2006 at 12:13 PM 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
DRKaQUiLa Posted December 17, 2006 at 01:38 PM Report #70941 Posted December 17, 2006 at 01:38 PM 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
pedrotuga Posted December 17, 2006 at 01:49 PM Report #70944 Posted December 17, 2006 at 01:49 PM 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.
electric Posted December 17, 2006 at 02:04 PM Report #70946 Posted December 17, 2006 at 02:04 PM 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 😄
Drone Posted December 17, 2006 at 11:46 PM Report #71045 Posted December 17, 2006 at 11:46 PM 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 }
electric Posted December 18, 2006 at 02:12 PM Report #71176 Posted December 18, 2006 at 02:12 PM $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 😛
Drone Posted December 18, 2006 at 02:48 PM Report #71186 Posted December 18, 2006 at 02:48 PM $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; }
jreis Posted December 20, 2006 at 02:33 PM Report #71534 Posted December 20, 2006 at 02:33 PM 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"
djthyrax Posted December 20, 2006 at 04:48 PM Report #71568 Posted December 20, 2006 at 04:48 PM 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!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now