Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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á?
No meu código tem tudo com os nomes corretos. Só fiz isso para proteger a identidade do site que usa esse código :P
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.
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.
Olá BigJhow,
Qual a mensagem de erro que aparece no 'if'? Talvez ela dê alguma pista.
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".
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.