Som i kan se er der en slettitd, jeg vil gerne have at den skal gå ind og slette beskeden når X tid er gået. hvordan gør man det? mine tabels nr int(11) auto_increment besked text slettid varchar(20) Nej markerede:
Så skal du jo køre en oprydning, som så sletter dem! Om med slettid = 1, 2 eller 5 siger jo ikke så meget! Du bør lave det i stil med: now() + ($_POST['slettid'] * 60)
mysql_query("INSERT INTO hej (besked, slettid, added) VALUES ('$_POST[besked]', '$_POST[slettid]', NOW())") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE DATE_ADD(added, INTERVAL slettid MINUTE) > NOW()") or die(mysql_error());
mysql_query("INSERT INTO hej (besked, slettid, added) VALUES ('$_POST[besked]', '$_POST[slettid]', NOW())") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE added < DATE_SUB(NOW(), INTERVAL slettid MINUTE)") or die(mysql_error());
jeg tænkte noget med at man skulle have en række med den dato den blev skrevet i? også noget med at den lagde slettiden oven i den , også når slettid var aktuel så gik den en og slettede det i databasen?
nr int(11) auto_increment besked text slettid datetime
og så bare:
mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid > NOW()") or die(mysql_error());
Ret lige: if ($_GET['skriv'] == "ok") { mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid > NOW()") or die(mysql_error()); } til:
if ($_GET['skriv'] == "ok") { mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid > NOW()") or die(mysql_error()); } else { echo "Vi er på afveje..."; }
mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid > NOW()") or die(mysql_error()); } rettede jeg til mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid = NOW()") or die(mysql_error()); }
nu skriver den fint ind, men hvad så med når den skal slette? skal den side så ikke køres lige når slettid = slettid? ellers sletter den vel ikke?
nu virker den, med koden :<form name="hej" action="hej.php?skriv=ok" method="post"> besked:<input name="besked" type="text"><br> slet om:<select name="slettid"> <option value="1">1 min</option> <option value="2">2 min</option> <option value="5">5 min</option> </select><br> <input type="submit" value="Skriv"> </form> <? include "connect.php"; if ($_GET['skriv'] == "ok") { mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); } mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); ?>
men for at slette den så skal koden mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); jo køres. kan man ikke lave noget smart så det ikke behøves?
Den kode spm jeg har den virker nu , den sletter jo alle efter den tid. så den er bare som den skal :) Men kan du ikke forklare lidt mere om det cronjob?
Ok! Vi siger du f.eks. gerne vil sende en email til alle dine brugere hver nat klokken 01:35 Så kan du lave et cronjob, som køre hver nat klokken 01:35 og den kalder så f.eks. scriptet: sendEmails.php Og så er der faktisk ikke så meget mere i det! (eller det er der, men hvad vil du evt vide?) Man kan også lave cronjob som køre hver 15 minut! Eller køre 13 minutter over hver time osv... Du kan næsten alt!
lige nu kører jeg på min apache server, bare for at udvikle en side lidt. også vil jeg købe et webhotel :) Men kan man ikke bare lave en kode som så køre mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error());, før alt andet sker på siden ?
Det kan du godt jo! Jeg ville evt lave det i en fil så! Som evt hed delete.php <? include("connect.php"); mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); ?>
men, ja, hvis jeg lige laver lidt om på koden så må du lige hjælpe :) <input name="besked" type="text"><br> slet om:<select name="slettid"> <option value="1">1 min</option> <option value="2">2 min</option> <option value="5">5 min</option> <option value="?">skal ikke slettes</option> </select><br> <input type="submit" value="Skriv"> </form> <? include "connect.php"; if ($_GET['skriv'] == "ok") { mysql_query("INSERT INTO hej (besked, slettid) VALUES ('$_POST[besked]', DATE_ADD(NOW(), INTERVAL $_POST[slettid] MINUTE))") or die(mysql_error()); mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); } mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); ?>
prøv at kigge på den ? altså med den" skal ikke slettes" hvordan vil du få det ind?
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.