Avatar billede kennedk Nybegynder
16. september 2005 - 17:49 Der er 33 kommentarer og
1 løsning

hjælp med databse.

Kig denne kode igennem:

<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]', '$_POST[slettid]')") or die(mysql_error());
}
?>

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:
Avatar billede kennedk Nybegynder
16. september 2005 - 17:49 #1
- markerede:
Men ja , hvordan gør man det?
Avatar billede jakobdo Ekspert
16. september 2005 - 17:59 #2
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)
Avatar billede coderdk Praktikant
16. september 2005 - 18:07 #3
Tilføj felt til databasen:

  added datetime not null

Ændr insert til:

  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());
Avatar billede coderdk Praktikant
16. september 2005 - 18:08 #4
Ser måske pænere ud med:

  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());
Avatar billede kennedk Nybegynder
16. september 2005 - 18:08 #5
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?
Avatar billede kennedk Nybegynder
16. september 2005 - 18:10 #6
jeg skrev tol jacokbo ^^
Avatar billede coderdk Praktikant
16. september 2005 - 18:12 #7
Ja, du kan også lave din database om:

  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());
Avatar billede kennedk Nybegynder
16. september 2005 - 18:15 #8
ok :) det prøver jeg lige :)
Avatar billede kennedk Nybegynder
16. september 2005 - 18:19 #9
Den skriver bare slettid inde i min database med værdi 0000-00-00 00:00:00
Avatar billede kennedk Nybegynder
16. september 2005 - 18:22 #10
altså værdien ved lettid er 0000-00-00 00:00:00
Avatar billede jakobdo Ekspert
16. september 2005 - 18:27 #11
Bruger du CoderDK's indlæg fra: 18:12:11
Avatar billede kennedk Nybegynder
16. september 2005 - 18:29 #12
ja, men det virker slet ikke . nu skriver den heller ikke ind i min db
Avatar billede kennedk Nybegynder
16. september 2005 - 18:33 #13
<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());
}

?>

Det er der kode jeg har nu.
Avatar billede jakobdo Ekspert
16. september 2005 - 18:43 #14
Kommer der nogen fejl på siden?
Avatar billede kennedk Nybegynder
16. september 2005 - 18:43 #15
Nej, den skriver ingen fejl på siden.
Avatar billede jakobdo Ekspert
16. september 2005 - 18:48 #16
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...";
}
Avatar billede kennedk Nybegynder
16. september 2005 - 18:49 #17
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?
Avatar billede kennedk Nybegynder
16. september 2005 - 18:56 #18
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?
Avatar billede kennedk Nybegynder
16. september 2005 - 19:00 #19
hov den  mysql_query("DELETE FROM hej WHERE slettid <= NOW()") or die(mysql_error()); der står inde i If-sætning skal jo ikke med ;)
Avatar billede jakobdo Ekspert
16. september 2005 - 19:16 #20
Jo, for den vil slette alle gamle beskeder! Derfor har coderDK smidt den der!
Ellers skal du lave et cronjob som sletter hvert minut eller lign.
Avatar billede kennedk Nybegynder
16. september 2005 - 19:26 #21
cronjob hvad er det?
Avatar billede jakobdo Ekspert
16. september 2005 - 19:28 #22
Det er lidt ala: Skemalagte opgavet på Windows!
Hvis jeg f.eks vil have et program til at starte hver dag klokken 12.00

Læs længere beskrivelse her: http://en.wikipedia.org/wiki/Cronjob
Avatar billede kennedk Nybegynder
16. september 2005 - 19:37 #23
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?
Avatar billede jakobdo Ekspert
16. september 2005 - 19:42 #24
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!
Avatar billede kennedk Nybegynder
16. september 2005 - 19:43 #25
Ok :)
er det noget der er svært inden jeg roder mig ud i det?
Avatar billede jakobdo Ekspert
16. september 2005 - 19:47 #26
Har du egen server?
Og alt er let, når man ved hvordan det skal laves!
Avatar billede kennedk Nybegynder
16. september 2005 - 19:49 #27
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 ?
Avatar billede kennedk Nybegynder
16. september 2005 - 20:00 #28
altså bare sætte den øverst i koden også bare skrive den ved alle de filer man har behov for?
Avatar billede jakobdo Ekspert
16. september 2005 - 20:41 #29
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());
?>
Avatar billede kennedk Nybegynder
16. september 2005 - 20:46 #30
du tænker lige mine tanker :p
Avatar billede jakobdo Ekspert
16. september 2005 - 20:49 #31
:o)
Avatar billede kennedk Nybegynder
16. september 2005 - 20:58 #32
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?
Avatar billede kennedk Nybegynder
16. september 2005 - 21:48 #33
jeg fandt ud af det:)
Avatar billede kennedk Nybegynder
17. september 2005 - 16:47 #34
lukker dette spg ned.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester