28. september 2005 - 21:54
Der er
28 kommentarer og 2 løsninger
dato med now() og slet efter given tid
Jeg forsøger at få noget datoværk til min blog til at fungere med datetime, men lige nu bruger jeg bare en almindelig varchar som vist herunder: <? include("php/config.php"); $dato = date("j/n Y") . " - kl. " . date("H:i:s"); $insert_post = "INSERT INTO `blog_comments` (`id`, `forfatter`, `email`, `site`, `tekst`, `dato`, `ref`) VALUES ('', '{$_POST['forfatter']}', '{$_POST['email']}', '{$_POST['site']}', '{$_POST['tekst']}', '{$dato}', '{$_POST['ref']}')"; mysql_query($insert_post) or die(mysql_error()); $message = "Kommentaren blev tilføjet til databasen.. Takker :)"; ?> <? echo "$message"; ?> Jeg vil dog gerne have det til at køre med DATETIME, men det eneste jeg ved er at man skal bruge noget med: NOW() hvordan gør man det? Iøvrigt vil jeg gerne have det lavet så den automatisk sletter sig selv og sine underliggende kommentarer efter et en bestemt tid fx et halvt år. de underliggende kommentarer har et ref nummer der har samme værdi som hovedindlæggets id-nummer.
Annonceindlæg fra itavis
28. september 2005 - 21:59
#1
Du retter feltet i din tabel til: DATETIME, og retter din sql til: $insert_post = "INSERT INTO `blog_comments` (`id`, `forfatter`, `email`, `site`, `tekst`, `dato`, `ref`) VALUES ('', '{$_POST['forfatter']}', '{$_POST['email']}', '{$_POST['site']}', '{$_POST['tekst']}', NOW(), '{$_POST['ref']}')";
29. september 2005 - 10:53
#2
Yep så virker det :) så er det bare det der med automatisk slet :)
29. september 2005 - 10:54
#3
I øvrigt hvordan fremkalder man datoen i formatet dd/mm Y - kl. tt:mm:ss ?? hvis det da er lovligt lige at stille et ekstra spørgsmål man har glemt :)
29. september 2005 - 11:28
#4
Du kan få datoen fremkaldt du ønsker enten med: DATO_FORMAT() (den her kan du formattere via mysql) eller UNIX_TIMESTAMP() (den kan du formattere i php) Det med at slette, er alt lave et script som køres hver gang der tilføjes en comment $query = mysql_query("DELETE comment WHERE tid < DATE_ADD(NOW() INTERVAL 6 month)")
29. september 2005 - 11:42
#5
ok.. det vil sige at i mit tilfælde kan jeg stille det op sådan: $deltime = mysql_query("DELETE FROM `blog` WHERE dato < DATE_ADD(NOW() INTERVAL 6 month)") mysql_query($deltime) or die(mysql_error()); Så vil den jo slette indlægget som jeg har skrevet.. Men kan den ikke også slette de tilhørende kommentarer samtidig? Kommentarer er kaldt frem ved ref = id hvis du forstår.. Altså ref er en række i blog_comments der har angivet sin værdi ud fra indlæggets id nummer..
29. september 2005 - 11:47
#6
kan ikke få det der dato værk til at virke.. Kan man ikke definere den sådan: $dato = DATO_FORMAT('dd/mm Y - kl. tt:mm:ss');
29. september 2005 - 11:53
#7
Jeg får følgende fejl: Fatal error: Call to undefined function: dato_format() in c:\apache\htdocs\test\comments.php on line 36
Slettet bruger
29. september 2005 - 12:00
#8
date("dd/mm Y - H:i:s", $foo['dato'])
29. september 2005 - 12:27
#9
gandso, jeg tror ikke det vil virke? dato er jo i datetime format, og ikke unixtimestamp. haolan: date_format og unix_timestamp er SQL funktioner: SELECT DATE_FORMAT(dato, '%d/%m %Y - %T') AS newTime; Eller SELECT UNIX_TIMESTAMP(dato) AS unix; og så kan du bruge unix i gandso's eksempel: date("dd/mm Y - H:i:s", $foo['unix'])
29. september 2005 - 12:56
#10
ok.. men hvordan kalder man det frem? jeg synes at uanset hvordan jeg sætter det ind får jeg fejl..
29. september 2005 - 12:59
#11
Vis mig den SQL du trækker data ud af databasen med, så kan jeg måske rette din eksisterende.
29. september 2005 - 13:03
#12
SELECT * FROM blog_comments WHERE ref='{$_GET['ref']}' order by id
29. september 2005 - 13:30
#13
Prøv at test denne: SELECT DATE_FORMAT(dato, '%d/%m %Y - %T') AS newDate,* FROM blog_comments WHERE ref='{$_GET['ref']}' order by id Og i stedet for du så printer $row['dato'] så prøv at print: $row['newDate']
29. september 2005 - 13:35
#14
stadig fejl: Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\test\comments.php on line 34
29. september 2005 - 13:38
#15
Prøv at ret: ref='{$_GET['ref']}' til: ref='" . mysql_escape_string($_GET['ref']) . "'
29. september 2005 - 13:40
#16
stadig samme resultat
29. september 2005 - 13:46
#17
man kan definere den sådan istedet $dato = date($r['dato'], 'dd/mm Y - hh:mm:ss');
29. september 2005 - 13:47
#18
men den skriver ikke datoen op på den rigtige måde...
Slettet bruger
29. september 2005 - 13:51
#19
Hvis dit felt er af typen "int" og du skriver til databasen med "now()" eller "time()", så vil du kunne gøre det således: $query = mysql_query("select dato from `blog_comments` where `ref`='" . $_GET['ref'] . "' order by `id` desc"); if (mysql_num_rows($query) >= "1") { while($foo = mysql_fetch_object($query)) { echo date("dd/mm Y - H:i:s", $r['dato']); } } else { echo "ingen"; }
29. september 2005 - 13:58
#20
Fik hjælp af en anden php freak :) han rettede min tabel til tinytext og definerede datoen med $datenow = time(); ved tilføjelse, og kalder det frem med $dato = date('d/m Y - H:i:s', $r['dato']); Så virker det :)
29. september 2005 - 13:59
#21
Hvad type er dit dato felt?
29. september 2005 - 14:01
#22
før var mit dato felt DATETIME men nu er det tinytext
29. september 2005 - 14:28
#23
Hvis du vil bruge NOW() skal du bruge DATETIME
Slettet bruger
29. september 2005 - 18:31
#24
Haolan: så forklar mig lige hvad forskellen på min løsning og det du skrev er. Desuden er int beregnet til tal, så int er laaangt bedre end tinytext.
02. oktober 2005 - 14:15
#25
gandso: det kan vel være ligegyldigt om det er beregnet til tal :) Men jeg havde ikke nået at læse dit indlæg inden jeg skev så ja din metode er nok meget det samme som det jeg bruger.. Dog er jakobdo's forslag nok det der tilpasser sig bedst til spørgsmålet, da jeg spurgte efter dato med now() og så svarede jakobdo på spørgsmålet med at slette på given tid.. Så mit forslag er at gandso får 50 point og jakobdo får 100 point.. Er det ikke meget rimeligt?
03. oktober 2005 - 08:07
#26
Et svar ihf.
08. oktober 2005 - 19:55
#27
lægger du også et svar gandso?
Slettet bruger
09. oktober 2005 - 13:21
#28
Jojo, fint :)
09. oktober 2005 - 14:19
#29
Takker for point!
09. oktober 2005 - 14:29
#30
takker for hjælpen :)
Vi tilbyder markedets bedste kurser inden for webudvikling