30. december 2005 - 23:13Der er
24 kommentarer og 1 løsning
Slette annonce automatisk efter 10, 20 ell. 30 dage
Er her nogen som ved hvordan man kan få en annonce til at slette sig selv ud fra et valg i en radiobutton. Alle data ang. annoncen ligger i én tabel. Jeg har set nedenstående(det første af nedenstående) i et andet spørgsmål, men ved ikke om det er noget ala det som skal bruges. Når man opretter en annonce skal man vælge om annoncen skal vises i 10, 20 eller 30 dage, hvorefter den skal slette sig selv automatisk. Det er vel også noget med at der skal oprettes et felt i databasen som indeholder en dato. vær venligst lidt pædagogisk i jeres forklaringer da jeg er lidt ny inden for php;)
mysql_query("INSERT INTO salgAfProdukt(Id,userId,kategori,produkt,supplerendeTekst,pris,loebetidForAnnonce,tlf1,tlf2,email,dinBy) VALUES('','".$userId."','".$kategori."','".$produkt."','".$supplerendeTekst."','".$pris."','".$loebetidForAnnonce."','".$tlf1."','".$tlf2."','".$email."','".$dinBy."')");
Jeg vil mene, at du bare oprettet et felt med typen DATETIME i din tabel.
Så kan du måske: DELETE FROM tabel WHERE DATE_ADD(datofelt, INTERVAL `loebetidForAnnonce` DAY) < NOW() Jeg er dog ikke sikker på, at man kan smide et feltnavn der.
men kan man ikke få den til at indsætte nuværende dato + 10,20 ell. 30 dage. og så et eller andet stykke kode, som så sletter den når den når udløbsdato.. eller noget i den stil.
Det var måske en smart idé. Så opret feltet, som du kalder "dato" med typen DATETIME.
Din insert skal så være: mysql_query("INSERT INTO salgAfProduk(Id,userId,kategori,produkt,supplerendeTekst,pris,loebetidForAnnonce,tlf1,tlf2,email,dinBy, dato) VALUES('','".$userId."','".$kategori."','".$produkt."','".$supplerendeTekst."','".$pris."','".$loebetidForAnnonce."','".$tlf1."','".$tlf2."','".$email."','".$dinBy."', DATE_ADD(NOW(), INTERVAL ".$loebetidForAnnonce." DAY)')");
hvordan er det lige jeg skal sætte det ind.. bare fordi du havde skrevet det til sidst.. kan det ikke bare stå i feltet "loebetidForAnnonce"?
mysql_query("INSERT INTO salgAfProdukt(Id,userId,kategori,produkt,supplerendeTekst,pris,loebetidForAnnonce,tlf1,tlf2,email,dinBy) VALUES('','".$userId."','".$kategori."','".$produkt."','".$supplerendeTekst."','".$pris."','".$loebetidForAnnonce."','".$tlf1."','".$tlf2."','".$email."','".$dinBy."')");
Tjoh, det kan det vel godt, men så bør du ændre typen af loebetidForAnnonce til DATETIME, og så skal du alligevel skrive det jeg havde til sidst, altså det vil så blive: DATE_ADD(NOW(), INTERVAL ".$loebetidForAnnonce." DAY) i stedet for $loebetidForAnnonce.
hov der mangler vist lidt.. hmmm prøver lige igen mysql_query("INSERT INTO salgAfProdukt(Id,userId,kategori,produkt,supplerendeTekst,pris,loebetidForAnnonce,tlf1,tlf2,email,dinBy) VALUES('','".$userId."','".$kategori."','".$produkt."','".$supplerendeTekst."','".$pris."','".$loebetidForAnnonce."','".$tlf1."','".$tlf2."','".$email."','".$dinBy."')");
ok.. er lige lidt forvirret... hvordan får man sit valg 10, 20 ell 30 til at hænge sammen med den dato som bliver sat ind, og er det smartest at have på et felt som hedder loebetidForAnnonce og et udloebsDato? nu ser det sådan her ud:
mysql_query("INSERT INTO salgAfProdukt(Id,userId,kategori,produkt,supplerendeTekst,pris,loebetidForAnnonce,tlf1,tlf2,email,dinBy) VALUES('','".$userId."','".$kategori."','".$produkt."','".$supplerendeTekst."','".$pris."' ,'".$loebetidForAnnonce."','".$tlf1."','".$tlf2."','".$email."','".$dinBy."')");
det var satans.. Det virker sq.. Det må jeg nok sige. DU kan jo trylle;) Men hvordan i alverden får man den så til at slette sig selv igen når den når udløbsdato?
Hehe, naah ikke trylle, men "practice makes perfect", selvom der stadig er lang vej...
Sletningen kan du ikke bare sådan lige gøre. Det kræver nemlig, at der køres et script for at slette. Den kan ikke bare slette uden at den bliver bedt om det.
Men du bør så kunne slette, ved at bruge: mysql_query("DELETE FROM tabelnavn WHERE loebetidForAnnonce < NOW()");
bare lidt ærgeligt hvis man skal ind og trykke på en knap hver dag, for at slette udløbne annoncer.. kan du følge mig;) Kan man ikke lave en function som iværksætter sig selv hver dag på et klokkeslæt, som så kører mysql_query("DELETE FROM tabelnavn WHERE loebetidForAnnonce < NOW()");
Niks. Da php er server-side så skal det aktiveres på den ene eller anden måde. Der er flere måder at gøre det på.
Du kan sætte delen øverst i filen, så den sletter evt. gamle annoncer inden den henter dem frem og viser dem, eller du kan bruge f.eks. http://www.cron-jobs.de/ der kan køre scriptet for dig med jævne mellemrum.
hmmm.. vil det sige at hver gang en person opretter en annonce, så kører den et script som sletter gamle annoncer? og kan det komme til at belaste databasen meget?
Sådan kan du godt gøre det, men skal det ikke vises til nogen? Så ville jeg nærmere smide det ind når de bliver vist end når de bliver oprettet. Og det belaster ikke, medmindre vi virkelig snakker om mange annoncer hver dag.
Netop. Pointen er jo, at du skal slette dem når de vises, ellers vil de jo blive vist, selvom de faktisk er udløbet, hvis der nu går et par dage imellem at der bliver oprettet nye.
Det gør jeg da bestemt gerne, hvis du mener vi har nået dertil hvor du ville :) Ellers må du sige til, hvis du løber ind i problemer med det senere...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.