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

ricardocoimbra

Duvida retornar ultimo id

7 mensagens neste tópico

Aqui no forum foi dito para retornar o ultimo id:

$sql = "select max(id) from table";

$result = mysql_query($sql);

$id=mysql_result($result,0);

Mas imaginemos que o o id é auto incremente, tenho 7 produtos o proximo vai ser o 8.

Acontece que se eliminar 6 produtos  o proximo id já vai ser 3 e eu nao queria que isso acontece-se mas sim ele ir buscar o numero que vai ser atribuido no campo id auto incremente que seria o 9.

Alguma maneira de fazer isso ir buscas o numero de id que vai ser atribuido a esse produto!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boax...

Mas imaginemos que o o id é auto incremente, tenho 7 produtos o proximo vai ser o 8.

Acontece que se eliminar 6 produtos  o proximo id já vai ser 3 e eu nao queria que isso acontece-se mas sim ele ir buscar o numero que vai ser atribuido no campo id auto incremente que seria o 9.

grande confusao .... se o id é auto increment, se ja tiveres o id=7, podes apagar todos, que o proximo vai ser 8 ....

em situacoes normais, o id nao volta atras..... alem de que, se o id é auto increment, deve ser chave primaria, logo os numeros duma chave primaria nunca devem ser reaproveitados ....

$sql = "select max(id) from table";

nao sei o que pretendes fazer com isto, mas se é para voltar a utilizar esse max(id), vais ter quase de certeza problemas...

pessoa_1 faz isso e tem o max(id) = 10  ;

pessoa_2 faz isso e tem o max(id) = 10  ;

nao vai haver problemas se acontecer isso? ... 

ps: so agora vi o titulo  :-[

se queres saber qual o ultimo id que inseristes numa tabela, para voltar a utilizar noutra tabela, esse metodo que tens do max(id) é uma verdadeira barbaridade..... 

se é isso que pretendes usa o last_insert_id ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acontece o seguinte a cada produto que eu tenha quero que a foto fique com o id do produto.

Id é auto incremente

imaginemos

Tabela produtos

id | foto

1  | 1.jpg

2  | 2.jpg

3  | 3.jpg

Acontece que se eu fizer isso do:

$sql = "select max(id) AS last_insert_id from produtos";

$result = mysql_query($sql);

$id=mysql_result($result,0);

ele ia retomar o id 3 , mas imagina que que apagamos o produto 3, logo isto ia ficar:

id | foto

1  | 1.jpg

2  | 2.jpg

4 | 3.jpg

logo o id 4 nao corresponde ao numero da foto!

O last_insert_id nao me serve, eu quero é que me va buscar sempre o ultimo id inserido, mesmo que se apague um produto o proximo id ia ser 4 e com o last_insert_id ele ir busca o 4.

Soluções?

Basicamente tens de usar o que o RVG te disse.

Para complementar:

http://www.php-pt.com/index.php?option=com_content&task=view&id=42&Itemid=32

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que não percebeste bem (ou então estou a fazer confusão)

Se o que pretendes é que ao inserires um novo produto a foto correspondente a esse produto tenha no nome a ID do mesmo, podes usar o mysql_insert_id:

mysql_query(' insere o produto ');
$id = mysql_insert_id();
// Verificas se a ID é válida e em caso afirmativo
mysql_query(' update a foto cuja id do produto =$id ');

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boax ....

pelo que percebi, queres que no nome da foto, esteja o id da linha.....

varias solucoes possiveis:

1ª como foi indicado por SId. A meu ver, a mais simples

2ª- atraves de trigger. Mas como estas a usar o Mysql, teras de criar uma outra tabela ....

3ª - usando o teu metodo max(id), mas nesse caso teras de fazer um look a tabela... tem cuidado com os dead lock ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado a todos que me ajudaram na resolucao deste problema fiz com o $id = mysql_insert_id();

Pois a mim nunca me estava a dar porque eu primeiro anexava a foto e so posteriormente adicionava na base de dados! E nunca me tinha passado pela cabeça  mysql_insert_id(); e depois o update!

boax ....

pelo que percebi, queres que no nome da foto, esteja o id da linha.....

varias solucoes possiveis:

1ª como foi indicado por SId. A meu ver, a mais simples

2ª- atraves de trigger. Mas como estas a usar o Mysql, teras de criar uma outra tabela ....

3ª - usando o teu metodo max(id), mas nesse caso teras de fazer um look a tabela... tem cuidado com os dead lock ...

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