View Full Version : [ajuda] PHP + MySQL


anjo2
12-09-2007, 17:51
Isto pode ser um erro estúpido e eu não o estar a ver, mas vou perguntar na mesma porque não estou a conseguir resolver :(

tenho:

$sql_id_check = mysql_query("SELECT id FROM $seccao ORDER BY id DESC");
if ($sql_id_check) $id = mysql_result($sql_id_check, 0, id);
else $id = 1;

Isto devia ir buscar o ultimo id da tabela, e se tivesse vazia, o id era 1, o que está errado?

Isto só não funciona quando a tabela está vazia.

MARSHALL
12-09-2007, 17:54
Pelo que vejo tu na busca não filtras nada, por isso basta ter algo na tabela para ele encontrar alguma coisa.
Não estou a entender o que queres fazer.

anjo2
12-09-2007, 18:08
Pelo que vejo tu na busca não filtras nada, por isso basta ter algo na tabela para ele encontrar alguma coisa.
Não estou a entender o que queres fazer.

Isto era para adicionar o conteudo, mas primeiro ver o ultimo id que era para adicionar com um id logo a seguir, mas se ainda não houvesse nenhum começava com o id = 1, só que não faz :S

mascker
12-09-2007, 18:36
Boas,

Para isso defines o campo na tabela como auto_increment que ele faz a numeração sozinho.

Não precisas de fazer isso em php...


Saudações

p3dro
12-09-2007, 18:42
Isto era para adicionar o conteudo, mas primeiro ver o ultimo id que era para adicionar com um id logo a seguir, mas se ainda não houvesse nenhum começava com o id = 1, só que não faz :S

vê se esta função te ajuda mysql_insert_id (http://pt.php.net/mysql_insert_id)

Description
int mysql_insert_id ( [resource $link_identifier] )

Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query.

Caso o mysql_insert_id, não se aplique ao teu problema, podes por ex. usar:
$sql_id_check = mysql_query("Select max(`id`) as `MaxID` From `$seccao`");

E depois vês o valor que devolve, se for um número incrementas 1, senão atribuis o valor 0


Pois, se o teu problema foi mesmo o auto_increment, basta então fazeres o que o mascker indicou. Mas o teu campo ID não é chave primária da tabela?

anjo2
12-09-2007, 18:52
o meu problema é que quando não existe queria definir como id = 1

p3dro
12-09-2007, 19:40
vê se desta maneira funciona ...

$sql_id_check = mysql_query("SELECT max(id) as max_id FROM $seccao");
if ($sql_id_check){
$id = mysql_result($sql_id_check, 0,"max_id");
if(!$id) $id=1;
}

anjo2
12-09-2007, 20:55
Não :S


EDIT: Resolvido, obrigada

p3dro
12-09-2007, 21:52
Não :S


EDIT: Resolvido, obrigada

resolveste como?

anjo2
12-09-2007, 22:12
Fui rever tudo desde o inicio e vi que o erro não estava ali, quando o código começa a ser grande às vezes há falhas estúpidas.


de qualquer forma, se alguem vier a precisar, deixei assim:

$sql_id_check = mysql_query("SELECT id FROM $seccao ORDER BY id DESC LIMIT 1");
if ($sql_id_check) {
$id = mysql_result($sql_id_check, 0, 'id');
$id += 1;
}
else $id=1;

AliFromCairo
12-09-2007, 22:33
Boas,

Para isso defines o campo na tabela como auto_increment que ele faz a numeração sozinho.

Não precisas de fazer isso em php...


Saudações

Tb aconselho a definires o campo como auto_increment.