Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal
Preciso restringir as votações para os Fornecedores cadastrados no site, assim...
O usuário não poderá votar se já tiver votado no mesmo Fornecedor,
só poderá voltar a fazer a avaliação, no outro dia.
Tenho minha Tabela SQL que faz o Registros dos Votos:
Id_registro
Id_Fornecedor
Rating
Data_Registro
IP_Usuario
Qual lógica eu poderia seguir para fazer isso?
e para ele conseguir votar no outro dia?
Primeiro grave o ID do usuário.
Faça para a verificação pela data da votação.
$dataDeHoje = date("Y-m-d");
suaQuery("SELECT * FROM tabela WHERE date(`data_do_post`) >= '$dataDeHoje'");
daí você complementa:
"AND ID_user = '$id_user'"
não daria de usar IP do usuário ao invés de ID_user?
é possível, mais imagine que esse mesmo usuário acesse de um celular, depois de um pc e depois de um note book ou computador do serviço ou de amigos... o ip sempre vai mudar.
Para ser mais específico vou tentar explicar o que preciso fazer na avaliação dos Fornecedores:
O Usuário Não pode votar quando
O IP do usuario ja tenha votado no Fornecedor no dia atual
Pode Votar quando
O IP do usuario não votou no Fornecedor no dia atual.
Como faria para o PHP checar essas condições?
estou fazendo assim
$ip = file_get_contents('https://api.ipify.org');
date_default_timezone_set('America/Sao_Paulo');
$data_atual = date("Y-m-d");
if(!$conect=mysqli_connect('localhost','root','xxx','xxx')) die ('erro ao conectar');
#Recolhendo os dados do formulário
$dado1 =trim($data_atual);
$dado2 = trim($ip);
$sql = $conect->query("SELECT * FROM fornecedores_rating WHERE data='".$dado1."' and ip='".$dado2."' and fornecedor='".$_POST["id"]."'");
if(mysqli_num_rows($sql) > 0){
echo "Este usuário já existe";
exit();
} else {
if(!$conect->query("INSERT INTO fornecedores_rating (fornecedor, rating, data, ip) VALUES ('".$_POST["id"]."','".$_POST["rating"]."','".$dado1."','".$dado2."')")) die ('Os dados não foram inseridos');
echo "Dados inseridos com sucesso";
}Usa a lógica, caso exista um registro do dia atual (hoje), não vai inserir, caso contrário ele insere.
Você deve armazenar o ID de quem votou também, dessa forma você poderia fazer a comparação depois. Se o usuário já estiver com o ID na tabela de votação que tem o ID de tal fornecedor, então ele não vota mais.