Ir para conteúdo

Arquivado

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

BigJhow

Problema com IF

Recommended Posts

function x($id){
	$mq=mysql_query("SELECT * FROM tabela1 WHERE id='$id'") or die(mysql_error());
	$mfa=mysql_fetch_array($mq);
	return $mfa['campo2'];
}
if($var1){
	$mq=mysql_query("SELECT * FROM tabela WHERE campo1='$var1' AND tempo<$time-604800");
	if(mysql_num_rows($mq)<>0){
		while($mfa = mysql_fetch_array($query)){
			$var2=x($mfa['campo3']);
			$id=$mfa['id'];
			$var3=y($mfa['campo1']);
			$novo=$var3+$var2;
			mysql_query("UPDATE tabela_de_usuarios SET campo2='$novo' WHERE campo1='$var1'");
			mysql_query("UPDATE tabela SET tempo='$time' WHERE id='$id'");
			echo "<font color=green> Funcionando </font>";
		}
	} else{
		echo "<font color=red> Erro no IF mysql_num_rows RETORNANDO O VALOR <S> 0 </S> </font>";
	}
} else{
	echo "<font color=red> Erro no IF \$var1 RETORNANDO O VALOR <U> 0 </U> </font>";
}
echo "<font color=red> Erro? </font>";

Este é um sistema primitivo de pontos, onde cada colocação garante um número de pontos semanais que são atribuídos no campo2. O campo1 equivale ao login do usuário, e o campo tempo é o tempo UNIX em que foi feito o último depósito de pontos. A função x pega o valor de pontos que devem ser adicionados. A variável $var1 é um cookie que já foi testado e tem um valor setado.

Mas, o sistema simplismente não funciona, já tentei de tudo e o máximo que consegui é exibir a mensagem de erro no IF var1 (coloquei elas pra tentar descobrir onde está o erro). Alguém descobriu onde tá?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Refatorar é palavra no seu caso. Meu cerebro dói ao tentar ler o seu código, justamente porque eu não sou intepretador do PHP e sim um ser humano. Ele não tem sentido nenhum para a gente.

 

Veja, você cria uma função chamada x!?!?! X pode ser qualquer coisa, sei lá o que X vai fazer. Você cria variáveis como $var1, $var2. Os campos do banco de dados, campo1, campo2.

 

Isso funciona aos olhos do PHP, mas é extremamente ruim programar dessa maneira. Sugiro que refaça seu código colocando nomes sugestivos a variáveis, funções, classes... basicamente é seguir um padrão (menos o padrão da bagunça e da desordem hahaha).

 

Veja um texto para você começar a ler:

 

http://www.phpam.com/blog/2009/01/21/padroes-de-codificacao-php/

 

Lembre-se que cada pessoa tem a sua maneira de programar. Não estou criticando a sua, estou apenas mostrando que há outras melhores e que podem te ajudar a programar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim fica difícil de ajudar...

 

Qual IF não funciona? O if ($var1) ou o que está dentro? Se for o primeiro, o problema deve estar no cookie que você disse que definiu.

Compartilhar este post


Link para o post
Compartilhar em outros sites


function salario($id){

$mq=mysql_query("SELECT * FROM empregos WHERE id='$id'") or die(mysql_error());

$mfa=mysql_fetch_array($mq);

return $mfa['salario'];

}

if($login){

$mq=mysql_query("SELECT * FROM u_empregos WHERE login='$login' AND ultimo_pagamento<$time-604800");

if(mysql_num_rows($mq)<>0){

while($mfa = mysql_fetch_array($query)){

$salario=salario($mfa['jobid']);

$id=$mfa['id'];

$dinheiro=dinheiro_banco($mfa['login']);

$novo_d=$dinheiro+$salario;

mysql_query("UPDATE usuarios SET dinheiro_banco='$novo_d' WHERE login='$login'");

mysql_query("UPDATE u_empregos SET ultimo_pagamento='$time' WHERE id='$id'");

echo "<font color=green> Funcionando </font>";

}

} else{

echo "<font color=red> Erro no IF mysql_num_rows RETORNANDO O VALOR <S> 0 </S> </font>";

}

} else{

echo "<font color=red> Erro no IF \$login RETORNANDO O VALOR <U> 0 </U> </font>";

}

echo "<font color=red> HN? </font>";

Testei o cookie em outra página e funciona normalmente. Quanto testo o script, aparece apenas a palavra HN.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se ele só exibe <font color=red> HN? </font>, provavelmente ele chega no bloco WHILE, mas não o executa.

 

Me diga o que é $query em "while($mfa = mysql_fetch_array($query))" e tente trocá-lo por $mq.

 

Se for isso mesmo, foi falta de boas práticas. Procure utilizar sempre antes de cada desenvolvimento:

 

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

E depois, quando for ao ar:

 

<?php
ini_set('display_errors', 0);
error_reporting(0);
?>

Dessa forma, se tiver alguma variável não definida (como provavelmente é o caso de $query) ele vai te avisar via "Notices".

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.