BigJhow 0 Denunciar post Postado Agosto 20, 2010 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
André D. Molin 15 Denunciar post Postado Agosto 20, 2010 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
BigJhow 0 Denunciar post Postado Agosto 20, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites
Haz 3 Denunciar post Postado Agosto 20, 2010 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
BigJhow 0 Denunciar post Postado Agosto 21, 2010 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
M. Simão 0 Denunciar post Postado Agosto 22, 2010 Olá BigJhow, Qual a mensagem de erro que aparece no 'if'? Talvez ela dê alguma pista. Compartilhar este post Link para o post Compartilhar em outros sites
Haz 3 Denunciar post Postado Agosto 23, 2010 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