Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

willwalker

Pegar valor do auto increment da tabela com SELECT

Recommended Posts

Eu estou tentando assim mas está me retornando 0 sempre!

 

<?php $sql = mysql_query("SELECT LAST_INSERT_ID() as lastId FROM produtos "); $rss = mysql_fetch_assoc($sql); ?>
<input type="text" name="hdId" value="<?=$rss['lastId']?>" />

Só quero pegar o ultimo id, mas não dos ids cadastrados e sim o valor do id do proximo cadastro se acontecer.

 

Abraços Walker http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a função LAST_INSERT_ID() serve para pegar um valor imediatamente depois de um INSERT.

 

ex.:

INSERT INTO tbl (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();

O jeito é fazer como o Matias disse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a função LAST_INSERT_ID() serve para pegar um valor imediatamente depois de um INSERT.

 

ex.:

INSERT INTO tbl (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();

O jeito é fazer como o Matias disse.

Essa nem eu sabia O.o... Muito boa...

 

Então... logo após isso, você teria que incrementar a variável...

 

Mas acontece o seguinte:

 

Se você tem uma tabela com 60 registros e apaga o úlitmo (60), o próximo a ser inserido não será 60, e sim 61...

 

O que eu faço é cadastrar primeiro e só depois retornar o último... http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo só ira acontecer de voltar o registro para 60 como citado por voce se o incremento for manual, que no caso explicitado por voce nao vejo necessidade se o mesmo é sequencial. Basta coloca-lo como AI, assim voce poderá apagar o registro 60 antes de realizar uma insercao e logo depois fazer um add de registro que seu codigo sera automaticamente 61.

Agora so uma pergunta, para que necessita do ultimo ID?

 

 

Abracos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu nem entrei no mérito do porque você quer fazer isto, mas pelo seu código, você quer colocar este valor em um formulário. Isto vai dar problema. Vejamos um exemplo.

 

Eu entrei no site para fazer o cadastro (não sei do que é, mas não importa) e comecei a cadastrar. Aí, meu filho (que tá com 10 dias de vida!!!) começou a chorar. Eu parei o cadastro no meio (mas já com o número ali) e fui atender ele. Enquanto eu o atendia, o lucasmartins entrou no site pra se cadastrar. E agora? Qual número você vai colocar no formulário pra ele? O último mais 1? Mas o meu também está com o mesmo número. E quando eu terminar o cadastro? O que vai acontecer? Vai duplicar? Ou vai usar o auto increment e jogar o meu para o próximo? Então pra que serviu o número do meu formulário?

 

Veja que não faz muito sentido fazer assim. O ideal é fazer como o Rick sugeriu. Mostra o ID depois de terminar de cadastrar. Aí você pode utilizar a função mysql_insert_id() logo após o insert, que vai retornar o id deste cadastro. Aí, na mensagem de confirmação do cadastro, você já mostra o código (id) dele.

 

Espero que tenha compreendido

 

Qualquer coisa poste novamente.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo só ira acontecer de voltar o registro para 60 como citado por voce se o incremento for manual, que no caso explicitado por voce nao vejo necessidade se o mesmo é sequencial. Basta coloca-lo como AI, assim voce poderá apagar o registro 60 antes de realizar uma insercao e logo depois fazer um add de registro que seu codigo sera automaticamente 61.

Agora so uma pergunta, para que necessita do ultimo ID?

 

 

Abracos!

Essa é a questão...

 

Talvez seja uma foreign key e ele queira inserir em outra tabela, aí tem que proceder do jeito que falei...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matias, acho que o propósito dele estar querendo fazer isso é quase igual o q você disse, mas é no cadastro de produto. O problema é que mesmo assim o problema continua :P, willwalker, imagine que você tem dois funcionários cadastrando produtos, como o Matias já disse, pode ocorrer uma falha...

 

Eu estava quase me deparando com um problema desses na construção de um guia, na semana passada.

 

A situação era que ao cadastrar um tal restaurante, poderia cadastrar alguns serviços próximos (postos de gasolina, ponto de táxi, etc) e para isso eu precisava relacionar esses serviços com esse restaurante que ainda nem estava na minha tabela...

 

Para não querer inventar demais, e não ter riscos de falhas futuras, eu decidi que os serviços só poderiam ser adicionados depois que o restaurante já estava cadastrado, ou seja, somente na alteração do restaurante o cara poderia cadastrar serviços próximos. E não precisa ter medo de fazer assim, todas as aplicações são assim. Veja o orkut, quando você se cadastrou nele, você conseguia adicionar os álbums, fotos, amigos e etc??? Não, primeiro cadastra o necessário: nome, email, senha... e o resto vai depois que você já está no banco do orkut...

 

willwaker, eu não sei qual é o seu objetivo ao certo, mas agora que vi que você quer pegar o próximo ID a ser cadastrado, te apresento essa solução:

 

$sql = "SHOW TABLE STATUS FROM `banco_de_dados` LIKE 'tabela'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
echo $row["Auto_increment"];

Ele irá te imprimir o próximo auto-increment.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossaaa virou um debate meu tópico. Então:

 

Eu preciso disso para colocar os perfis que esse produtos será visto, e eu trabalho em uma agencia e esse trabalho já foi feito por outro cara, que pra mim é um #@?$%~ ignorante, porque era muito mais facil ter colocado essas informações na mesma tabela. Mas o babaca coloca em outra tabela, e tem VÁRIOS atrquivos puxando dessa tabela que o babaca criou.

 

Me desculpe os palavrões, mas esse cara programa tão porco que eu to puto já. Fiquei 6 horas para resolver o problema de não cadastrar os perfis na hora que se cadastra um produto. Agora falta inserir o ide do produto. Mas o interessante é que é feito o cadastro primeiro e depois é feito esse outro cadastro os perfis.

 

Vou testar o método do Lucas e ver se dá certo.

 

Abraços Walker http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.