Ir para conteúdo

POWERED BY:

Arquivado

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

faguinho

Verificar se tabela está vazia

Recommended Posts

Pessoal, precisando de mais uma ajuda.

 

Estou gerando um código na minha base, onde quero que, se existe algum dado na minha tabela, ele retorna a mensagem que o item já foi assinado por $nome, caso não exista nada gravado, ele retorna com a execução do update e em seguida a mensagem que o item foi assinado com sucesso.

 

O código funciona, porém mesmo existindo um nome já cadastrado na tabela, ele diz que o item já está assinado por $nome, porém ainda sim executa o update.

 

Como eu posso consertar isso?

 

Segue código.

$sql = "select id, lista from chadoarthur where id='$id' and lista='$lista'";
$update = "UPDATE chadoarthur SET lista='$lista' WHERE id='$id'";

$updating = mysql_query($update);
$resultado = mysql_query($sql); 

if (mysql_num_rows($resultado) > 0){ 
    echo "<script>
	alert('Item já assinado por $nome'); location= './index2.php';
	</script>";     
} 
else { 
    echo "$updating";  
	echo "<script>
	alert('Item assinado com sucesso!'); location= './index2.php';
	</script>";

} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua lógica não tem sentido Se a tabela estiver vazia, não há o que atualizar. Você precisa inserir um dado antes de atualizá-lo.

 

Reveja a sua lógica.

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Mas é isso que eu quero mesmo, quando estiver um dado já preenchido na tabela, ele só da a mensagem de alerta e não tem que fazer mais nada, a não ser redirecionar para a página index2.php.

 

Porém, mesmo a tabela estando com um dado já gravado, ele ta rodando o update fazendo com que o dado que já existia, seja perdido e atualizado pelo dado novo.

 

Veja como funciona no meu link.

 

www.chadoarthur.com/index2.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Mas é isso que eu quero mesmo, quando estiver um dado já preenchido na tabela, ele só da a mensagem de alerta e não tem que fazer mais nada, a não ser redirecionar para a página index2.php.

É que seu texto diz uma coisa e o código faz outra. Aí ficou confuso...

 

Você está executando o UPDATE fora do if:

 

$updating = mysql_query($update);

 

essa linha deve estar dentro do if, não apenas um echo em $updating

Compartilhar este post


Link para o post
Compartilhar em outros sites


$sql = "select id, lista from chadoarthur where id='$id' and lista='$lista'";

$update = "UPDATE chadoarthur SET lista='$lista' WHERE id='$id'";

 

$resultado = mysql_query($sql);

 

if (mysql_num_rows($resultado) > 0){

$updating = mysql_query($update);

echo "<script>

alert('Item já assinado por $nome'); location= './index2.php';

</script>";

}

else {

echo "$updating";

echo "<script>

alert('Item assinado com sucesso!'); location= './index2.php';

</script>";

 

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda não entendi exatamente o que você quer fazer. No começo você disse que queria atualizar, depois disse que só deveria redirecionar...

 

Se quiser apenas redirecionar, remova esta linha de dentro do if:

 

$updating = mysql_query($update);

 

mas no else não tem registro pra atualizar, então não tem como dar update lá.

 

Acho que você não está conseguindo se expressar direito. Quando a tabela deve ser atualizada? E com quais dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No if ele não deve atualizar. No else ele deve atualizar.

 

Eu quero que quando a tabela lista estiver preenchida com qualquer dado, ele execute o if e pare por ai mesmo. Com isso ele não atualiza nada. Apenas mostra a mensagem que a lista já está assinada $nome.

 

Mas se a tabela lista não tiver nenhum tipo de dado, ele deve passar pelo else e rodar o update e em seguida mostrar a mensagem que a lista foi assinada com sucesso. A variavel que chama o update no else é o $updating.

 

Entendeu mais ou menos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí volta no problema que eu citei no começo. Se não há dados, não há o que atualizar. Você deve executar um INSERT, não um UPDATE.

 

INSERT insere registros. UPDATE atualiza registros que já existam.

 

Acho que sua confusão não é com PHP, é com SQL. Você está usando o comando SQL errado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém independente de ser update ou insert, ele não deveria executar o else, se o if for verdadeiro.

Sim, e não está executando.

O UPDATE foi feito até agora pois antes ele estava fora do if e agora está no bloco do if. Se mover pro else, funcionará corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites


$sql = "select id, lista from chadoarthur where id='$id' and lista='$lista'";

$update = "UPDATE chadoarthur SET lista='$lista' WHERE id='$id'";

 

$resultado = mysql_query($sql);

 

if (mysql_num_rows($resultado) > 0){

 

echo "<script>

alert('Item já assinado por $nome'); location= './index2.php';

</script>";

}

else {

$updating = mysql_query($update);

echo "$updating";

echo "<script>

alert('Item assinado com sucesso!'); location= './index2.php';

</script>";

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Baralto,

 

O que estou tentando explicar é que, o update já funciona. Isso não é meu problema.

 

O que não funciona é a condição do if. Se o if for verdadeiro (if (mysql_num_rows($resultado) > 0)) ele deve executar o if e parar por ali, só que ao invés disso, ele executa o if e também ta executando o else.

 

O else só pode ser executado se o if não for verdadeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Baralto,

 

O que estou tentando explicar é que, o update já funciona. Isso não é meu problema.

 

O que não funciona é a condição do if. Se o if for verdadeiro (if (mysql_num_rows($resultado) > 0)) ele deve executar o if e parar por ali, só que ao invés disso, ele executa o if e também ta executando o else.

 

O else só pode ser executado se o if não for verdadeiro.

 

A construção da linguagem torna impossível que isso aconteça, if e else são mutuamente exclusivos.

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.