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
-
- Mesaje:168
Expira, Sterge anunt dupa numar de zile
MarPlo
Mesaje:4343
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:
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();
evident
Mesaje:168
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
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
MarPlo
Mesaje:4343
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:
Iar pt. stergere, merge instructiunea:
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))";
Cod: Selectaţi tot
$sql = "DELETE FROM `tabel` WHERE UNIX_TIMESTAMP(`expira`)<UNIX_TIMESTAMP()";
evident
Mesaje:168
am gresit undeva aici:
???
Multumesc.
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.
keenbr
Mesaje:44
E posibil sa ai unele erori si vulnerabilitati in site cu urmatoarea linie:
Te sfatuiesc sa faci dupa cum urmeaza... daca ai eroare, posteaza linia si ce eroare iti da
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))";
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
evident
Mesaje:168
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
si $days=30
am incercat cu $days = $_POST['expira']; dar cred ca e prostie:D
Multumesc
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>
am incercat cu $days = $_POST['expira']; dar cred ca e prostie:D
Multumesc
MarPlo
Mesaje:4343
In PHP, valoarea unui camp de formular se ia dupa numele lui, adica ce e trecut la name="...".
In cazul de sus:
In cazul de sus:
Cod: Selectaţi tot
$days = $_POST['days']; // deoarece in formular, acel camp are: name="days"
Subiecte similare
- Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML Primul mesaj
Bună MarploUltimul mesaj
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc