Pagina 1 din 1
Expira, Sterge anunt dupa numar de zile
Scris: Mie Noi 09, 2011
de evident
as vrea sa introduc in formularul de adaugare al anuntului o optiune de valabilitate anunt
de exempul o saptamana,30 de zile,3 luni,12 luni, un an.
cand o persoana introduce un anunt si pune de exemplu 30 de zile...anuntul sa ramana pe site 30 de zile iar dupa aceia sa se stearga automat din db sau nush, daca puteti sa imi dati o idee cum sa fac:)
Multumesc,
Expira, Sterge anunt dupa numar de zile
Scris: Mie Noi 09, 2011
de MarPlo
Salut
Se poate face asa, in tabelul MySQL se adauga inca o coloana de tip INT(11) in care se adauga Timestamp-ul (Timpul unix) cu data expirarii.
Din formularul HTML se preia numarul de zile, in PHP se transforma in secunde si se adauga la timpul curent,
time(). Valoarea rezultata e Timestump-ul cu timpul la care expira, aceasta se adauga in tabel.
Pt. stergere, cand e afisat un anunt, se face inca un query cu DELETE, care sa stearga randurile ce au in coloana cu timpul de expirare valoarea mai mica decat timpul curent
Cam asa:
Cod: Selectaţi tot
// preia numarul de zile, il transforma in secunde si-l adauga la timpul curent
$sec_zile = $_POST['casuta_zile'] * 24*3600;
$expira = $sec_zile + time();
// Insert care adauga $expira in coloana din tabel
$sql = "INSERT INTO `tabel` (`expira`) VALUES ($expira)";
// Query pt stergere
$sql = "DELETE FROM `tabel` WHERE `expira`<". time();
Expira, Sterge anunt dupa numar de zile
Scris: Mie Noi 09, 2011
de evident
Mam razgandit fata de prima idee
deci eu am in baza de date : data_adaugari de tip datetime
si as vrea sa mai fac :data_epirari tot de tip datetime
iar atunci cand un anunt este adaugat sa insereze si data_expirarii care sa fie de exemplu cate zile alege cel care adauga anuntul(fac un formular cu 3 selectii: 30 de zile,90 de zile,180 de zile)
Multumesc
Expira, Sterge anunt dupa numar de zile
Scris: Mie Noi 09, 2011
de MarPlo
Daca coloana cu data expirarii e de tip DATE sau DATETIME, se poate folosi functia MySQL
DATE_ADD() ca sa adaugi in interval de timp, precum in exemplu de mai jos:
Cod: Selectaţi tot
$days = 30; // contine nr. zile adaugate la data curenta
$sql = "INSERT INTO `tabel` (`col1`, `col2`, `expira`) VALUES ('$val1', '$val2', DATE_ADD(NOW(), INTERVAL $days DAY))";
Iar pt. stergere, merge instructiunea:
Cod: Selectaţi tot
$sql = "DELETE FROM `tabel` WHERE UNIX_TIMESTAMP(`expira`)<UNIX_TIMESTAMP()";
Expira, Sterge anunt dupa numar de zile
Scris: Mie Noi 09, 2011
de evident
am gresit undeva aici:
Cod: Selectaţi tot
$sql="INSERT INTO anunturi (titluanunt, nume, categorie, sunteti, textanunt, pret, moneda, email, nrtel, judet, localitate, data_adaugari, expira)
VALUES
('".$_POST['titluanunt']."','".$_POST['nume']."','".$_POST['categorie']."','".$_POST['sunteti']."','".$_POST['textanunt']."','".$_POST['pret']."','".$_POST['moneda']."','".$_POST['email']."','".$_POST['nrtel']."','".$_POST['judet']."','".$_POST['localitate']."',NOW(), DATE_ADD(NOW(), INTERVAL $days DAY))";
???
Multumesc.
Expira, Sterge anunt dupa numar de zile
Scris: Joi Noi 10, 2011
de keenbr
E posibil sa ai unele erori si vulnerabilitati in site cu urmatoarea linie:
Cod: Selectaţi tot
('".$_POST['titluanunt']."','".$_POST['nume']."','".$_POST['categorie']."','".$_POST['sunteti']."','".$_POST['textanunt']."','".$_POST['pret']."','".$_POST['moneda']."','".$_POST['email']."','".$_POST['nrtel']."','".$_POST['judet']."','".$_POST['localitate']."',NOW(), DATE_ADD(NOW(), INTERVAL $days DAY))";
Te sfatuiesc sa faci dupa cum urmeaza... daca ai eroare, posteaza linia si ce eroare iti da
Cod: Selectaţi tot
function post($var)
{
if(isset($_POST["$var"]))
$var=$_POST["$var"];
else
$var=0;
return $var;
}
$titluanunt=post("titluanunt");
$nume=post("nume");
$categorie=post("categorie");
$sunteti=post("sunteti");
.....
mie lene sa le iau pe toate in parte... le iei tu... apoi
VALUES
('".$titluanunt."','".$nume."','".$categorie."','".$sunteti."'
......
Sper ca ai inteles ideea
Expira, Sterge anunt dupa numar de zile
Scris: Joi Noi 10, 2011
de evident
Am lasat cum mi-a zis MarPlo si a mers....aveam o greseala de ')'
acum, stie cineva cum sa fac sa imi ia numarul de zile din formular si sa il insereze la expira
Cod: Selectaţi tot
<select name="days">
<option value="30">30N</option>
<option value="60">60</option>
<option value="90">90</option>
</select>
si $days=30
am incercat cu $days = $_POST['expira']; dar cred ca e prostie:D
Multumesc
Expira, Sterge anunt dupa numar de zile
Scris: Joi Noi 10, 2011
de MarPlo
In PHP, valoarea unui camp de formular se ia dupa numele lui, adica ce e trecut la
name="...".
In cazul de sus:
Cod: Selectaţi tot
$days = $_POST['days']; // deoarece in formular, acel camp are: name="days"