Ir para conteúdo
Fórum Script Brasil
  • 0

Compração com SQL (essa é dificil)


Jean Paulo

Pergunta

Galera, estou com um ultimo problema nesse script de voto.

Eu já fiz com que fosse armazenado IP, enquente, data na tabela na hora que é votado.

Porem quero faser com que antes ele faça uma validação e verifique se:

a tada gravada na tabela é mais velha que a atual..

se for mais velha, sua entrada sera apagada, e com isso,,, seguindo o script.........

vai liberar a opção de voto...

e caso não seja mais velha.... ela vai parar na proxima condição, que verifica se tem os registros já na tabela....

So que meu script.. toda hora que vai votar ele já esta apagando os dados da tabela.

Como resolver?

voto.php:

<?php include "config.php" ?>

<?php include "config2.php" ?>




<?php
$dataatual = date("d/m/Y");//Dia: Mês: Ano:

if (isset ($_REQUEST['id'])) {
    
        $sql = mysql_query ("SELECT * FROM ipvotos WHERE idpropaganda='$_REQUEST[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
        $c = mysql_num_rows ($sql);
    
        if ($c['datadovoto']<$dataatual) {                           
        query ("DELETE FROM ipvotos WHERE ip='$_SERVER[REMOTE_ADDR]'", $basedados_accounts);}
                            

        $check = mysql_query ("SELECT * FROM ipvotos WHERE idpropaganda='$_REQUEST[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
          $checkip = mysql_num_rows ($check);
        
        
        //caso não tenha votado
        if ($checkip == 0) {
            
            $podevotar = "sim";
            include "votar.php";
            
            
            

        //caso contrário
        } else {
            $podevotar = "não";
            echo "<script> alert('Somente é aceito um voto a cada 24 hrs!');</script>";
            
            
        }
        
        
    




// caso o id do servidor seja invalido
}else{
    
echo "Servidor não Existe";    }
    
?>
Votar.php:
<?
if($podevotar != "sim") {
    echo "<script> alert('Você não tem permição para votar!');</script>";
    header("Location: index.php");
}else{


if($_POST) {

    $codigo      = strtoupper(addslashes(htmlentities($_POST['codigo'])));
    
    $erro .= (!empty($codigo)) && (!PhpCaptcha::Validate($codigo)) ? 'Codigo de seguranca não confere!\n' : NULL;    
    

    if(empty($erro)) {
        mysql_query("UPDATE listaservidores_adm SET votos = (votos+1) WHERE idpropaganda='$_REQUEST[id]'") or die(mysql_error());
        mysql_query("INSERT INTO `ipvotos` (`idpropaganda`, `ip`, `datadovoto`) VALUES ('$_REQUEST[id]', '$_SERVER[REMOTE_ADDR]', '$dataatual')") or die(mysql_error());
        
        
        echo "<script>alert('Voto computado com Sucesso!!');</script>";
        echo "<script>window.location='index.php';</script>";
        }else{
        echo "<script>alert('".$erro."');</script>";
        echo "<script>window.location='?page='$_REQUEST[id]'';</script>";    
    }    
}
    
?><style type="text/css">
<!--
body {
    background-image: url(images/fundo.jpg);
}
.caixadevoto {
    background-image: url(images/backgroundvoto.png);
    background-repeat: no-repeat;
    background-position: center center;
}
#caixadevoto form .fonte tr td h3 {
    color: #FFF;
}
-->
</style>
<div class="caixadevoto" id="caixadevoto">
  <form action="" method="post">
    <table width="404" height="243" border="0" align="center" class="fonte">
      <tr>
        <td width="52%" align="right">&nbsp;</td>
      </tr>
      <tr>
        <td align="conter"><h3 align="center">Confirmar voto TOP SERVERS</h3></td>
      </tr>
      <tr>
        <td align="center"><h3>
          <input name="codigo" type="text" class="acao_list" id="codigo" maxlength="5" />
        </h3></td>
      </tr>
      <tr>
        <td align="center"><img src="img.php" alt="" /></td>
      </tr>
      <tr>
        <td align="center"><input name="Votar!" type="submit" class="acao_list" id="Votar!" value="Votar" /></td>
      </tr>
      <tr>
        <td align="right">&nbsp;</td>
      </tr>
    </table>
  </form>
  <?
}
?>
</div>

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Seguindo a dica ali do amigo, eu fiz desse geito. So que mesmo assim, ela sempre esta apagando o dado da tabela.

Algo que eu verifiquei... tentei imprimir o resutado das 2 variaveis:

$time e $c['datadovoto'];

So mostrou o resultado do $time...... porque que esta dando errado?

<?php include "config.php" ?>

<?php include "config2.php" ?>



<?php

$data = date("d/m/Y");//Dia: Mês: Ano:

  



if (isset ($_REQUEST['id'])) {
    
        $sql = mysql_query ("SELECT * FROM ipvotos WHERE idpropaganda='$_REQUEST[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
        $c = mysql_num_rows ($sql);
        
        
        function dataToTimestamp($data) {  
list($dia, $mes, $ano) = extract(explode("/", $data));  
return mktime(0, 0, 0, $mes, $dia, $ano);  
}  


$data = date("d/m/Y");//Dia: Mês: Ano:
$time = dataToTimestamp("$data");  



$tMaior = $time;

$tMenor = $c['datadovoto'];
  
$diff = $tMaior-$tMenor;  

$numDias = $diff/86400;  
  



        
    
        if ($diff>=1) { 

            query ("DELETE FROM ipvotos WHERE ip='$_SERVER[REMOTE_ADDR]'", $basedados_accounts);}
                            

        $check = mysql_query ("SELECT * FROM ipvotos WHERE idpropaganda='$_REQUEST[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
          $checkip = mysql_num_rows ($check);
        
        
        //caso não tenha votado
        if ($checkip == 0) {
            
            $podevotar = "sim";
            include "votar.php";
            
            
            

        //caso contrário
        } else {
            $podevotar = "não";
            echo "<script> alert('Somente é aceito um voto a cada 24 hrs!');</script>";
            
            
        }
        
        
    




// caso o id do servidor seja invalido
}else{
    
echo "Servidor não Existe";    }
    
?>

Link para o comentário
Compartilhar em outros sites

  • 0

O que acontece é que a variável $c é apenas o número de linhas retornados pela sua consulta e não os dados. Para utilizar os dados, você deve utilizar a função mysql_fetch_assoc antes:

$sql = mysql_query ("SELECT * FROM ipvotos WHERE idpropaganda='$_REQUEST[id]' AND ip='$_SERVER[REMOTE_ADDR]'");
$c = mysql_num_rows ($sql);
$dados = mysql_fetch_assoc($sql);
if($dados['data']<$dataAtual){
    ...
}
Mais informações sobre a função mysql_fetch_assoc: http://php.net/mysql_fetch_assoc obs: Você poderia alterar sua consulta e fazer direto nela a verificação...
$dataAtual = Date("d/m/Y");
$sql = mysql_query ("SELECT * FROM ipvotos WHERE idpropaganda='$_REQUEST[id]' AND ip='$_SERVER[REMOTE_ADDR]' AND data='$dataAtual' ");
if(!mysql_num_rows($sql)){
$sql = "DELETE FROM ipvotos WHERE idpr...";
}

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0

Stoma, tou tão feliz cara, eu mesmo cheguei ao ponto de conseguir desenvolvelver meus proprios scripts xD.

Claro que com erros, mas com a ajuda de vocês deu tudo certo.

No teste de mesa que fiz agora eu percebi uma falha.

Se o usuario votar apartir desse link:

http://127.0.0.1/BackupSistemaJP/site%20atual/voto.php?id=1

e depois votar atraves desse link:

http://127.0.0.1/BackupSistemaJP/site%20atual/voto.php?id=2

O registro dele sera apagado, porque são IDs diferentes, mas eu já arrumei hehehe

Link para o comentário
Compartilhar em outros sites

  • 0

opa, o erro não deu mais porque era problema do PHP da hospedagem, agora troquei de host e ta legal.

Poisé, é algo pessoal saca.

já vi outros sites do tipo e quis tentar faser um.

Meu sisteminha todo foi desenvolvido por mim...lembrando da ajuda de vocês é claro,, e alguns scripts que eu tomei base.

Ficou legal mesmo?

Se tem que ver as funções que eu botei.

me add no MSN ai JEAN_JPSM@HOTMAIL.COM que eu te passo os dados de ADMIN.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...