Voteaza odata in ziua curenta

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje: 328

Voteaza odata in ziua curenta

Sincer nu stiu cum sa pun conditia ca cineva sa poata vota dupa ora 24 la 24 de ore de la ultimul vot.
Deci de exemplu daca cineva voteaza pe data de 30 decembrie ora 23:50 - sa mai poata vota si pe 31 decembrie ora 00:05 , iar urmatoru vot pe 1 ianuarie ora 00:01
Deci cumva trebuie sa compar data din baza de date cu data reala.
Timpul e in format: 1388476699

Cod: Selectaţi tot

setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest');
$timp = time();
$row['votdateadd'] > $timp
Iar in baza de date timpul este adaugat mai mare cu 24 de ore( in secunde ... )

Ajutor.

MarPlo Mesaje: 4343
Salut
Practic, votul sa se poata acorda o singura data in ziua curenta, indiferent la ce ora a votat in ziua precedenta.
Pentru asta, se compara ca votul dat plus 24 ore sa nu depaseasca timpul Timestamp cand se termina ziua.

Cod: Selectaţi tot

$end_day = strtotime('tomorrow', time()) - 1;
if(($row['votdateadd'] + 86400) < $end_day) {
  echo 'vot';
}
 
- Daca in baza de date timpul este deja adaugat cu 24 de ore in plus ( in secunde), scoate " + 86400" din acest cod.

cadou Mesaje: 328
Am testat codu e ok.
Inca ceva
Vreau ca si ip-ul sa fie o conditie, am tot modificat dar tot nu am dat de cap.
Adica 1 vot/ip/cont/dupa ora 00.00.
Adica daca eu de pe contu xxx dau vot la profilu yyy cu ip-ul zzz
si mai am un cont 111 si dau vot la profilul yyy cu ip-ul zzz sa nu mai mearga sa mai votez profilu yyy de pe alt cont daca am acelasi ip !

tot codul meu de vot este asa:

Cod: Selectaţi tot

<?php session_start(); include('../conectare.php');
setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest');
$ip = $_SERVER["REMOTE_ADDR"];
if(isset($_POST['pentru'])){
if(isset($_SESSION['nume'])){
$dl = $_SESSION['nume'];
$dela = strtolower($dl);
$pt = $_POST['pentru'];
$pentru = strtolower($pt);
$timp = time();

$cerere = mysql_query("SELECT * FROM `membri` WHERE `nume` = '$pentru'");
$rand = mysql_fetch_assoc($cerere);

$cer = mysql_query("SELECT * FROM `vot-profil` WHERE `votdela` = '$dela' AND `votpentru` = '$pentru' order by votid DESC LIMIT 1");
$row = mysql_fetch_assoc($cer);

$end_day = strtotime('tomorrow', time()) - 1;

//daca nu merge sa votezi
if($dela == $row['votdela'] AND $pentru == $row['votpentru'] AND (($row['votdateadd'] + 86400) > $end_day))
{
echo 'Ai mai votat acest user';
}

else { 
$newplus = $rand['vot-plus'] + 1;
$votat = mysql_query("UPDATE `membri` SET `vot-plus` = '$newplus' WHERE `nume` = '$pentru'");
$addvot = mysql_query("INSERT INTO `vot-profil` (`votdela`, `votpentru`, `votdateadd`, `votip`) VALUE ('$dela', '$pentru', '$timp', '$ip')");
if($votat && $addvot) {echo 'Multumesc pentru vot';}
else {echo 'eroare';}
}
}
}
// daca e delogat
else { echo 'Pentru a vota trebuie sa fi logat'; }
?>

MarPlo Mesaje: 4343
Poti crea un tabel in care sa inregistrezi pe fiecare rand: ip-ul, id-ul/ profilul pe care l-a votat si timpul.
Apoi, inainte de a adauga votul:
1. Se sterg inregistrarile care nu sunt din ziua curenta.
2. Se selecteaza id-urile /profile votate de acel ip.
3. Se verifica inregistrarile selectate. Daca profilul a mai fost votat, se afiseaza mesaj; daca nu, se adauga votul, si se face Insert si in acest tabel, ip-ul, profilul-votat, si timpul.

- Asta e ca iddee, la partea de cod nu ma mai bag (incerc sa ma las).

cadou Mesaje: 328
Aha ok. multumesc de timpul acordat si pasul de inceput !