Simpel dato skrivning

Tags:    php

<< < 12 > >>
Hej alle :D

Jeg har dette simple script som skriver en nyhed med dags dato:
---
mysql_query("INSERT INTO `nyheder` (id, emne, tekst, dato)

VALUES ('','".$_POST['select']."','".$_POST['FCKeditor1']."',NOW());") or die(mysql_error());

---

Mit problem er nu at jeg med dette:
---
$tid=strtotime("Y-m-d","$datofelt");
mysql_query("INSERT INTO `nyheder` (id, emne, tekst, dato)

VALUES ('','".$_POST['select']."','".$_POST['FCKeditor1']."','$tid');") or die(mysql_error());

---
...ikke kan skrive en dato ?

Når nyhederne + dato skal vises bruger jeg dette:
--
$query = mysql_query ("SELECT *, UNIX_TIMESTAMP(dato) AS dato FROM `nyheder` ORDER BY dato DESC") or die(mysql_error());

while($row = mysql_fetch_array($query))
{

$text = ($row['tekst']);
$emne = ($row['emne']);
$dato = ($row['dato']);

print date("d/m/Y", $dato);
...

---

Men der hvor datoen skal stå står der bare 01/01/1970 ?
Og i PHPMyadmin kan se det som 0000-00-00 00:00:00.



12 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Hvis du sætter dato feltet i din db, op til at være varchar med en længde på 50, og så bruger funktionen time() , time funktionen retunere antallet af sek. siden 1/1-1970

$tid = time();
mysql_query("INSERT INTO `nyheder` (id, emne, tekst, dato)

VALUES ('','".$_POST['select']."','".$_POST['FCKeditor1']."','".$tid."');") or die(mysql_error());

når du så skal vise nyhederne

$text = ($row['tekst']);
$emne = ($row['emne']);
$dato = (date('d/m/Y',$row['dato']));






php's date funktion går ikke længere tilbage end til 01-01-1970 så mit bud er at du har indtastet en dato tidligere end denne



Hej,

strtotime(x) returnerer antallet af sekunder siden 1/1-70 og indtil 'x'
Det er et-eller-andet modbydeligt stort nummer.

Så vidt jeg husker, vil MySql have at man sætter en DATETIME/TIMESTAMP med et nummer som "ligner" en dato
20060928173000
(Skulle være 28/9-06 klokken halv seks)





Det er jeg 99.9% sikker på jeg ikke har.

Kan du give et eksmpel på hvordan man skal indtaste datoen i feltet "datofelt" ?



Ja, okay tak Christian Hejlesen ;)

Nu har jeg fået dette til at virke:

echo "Nyheden er skrevet.";
$datofelt = $_POST['datofelt'];

if(!empty($_POST['datofelt'])) {
$tid=date("U", $datofelt);
mysql_query("INSERT INTO `nyheder` (id, emne, tekst, dato)

VALUES ('','".$_POST['select']."','".$_POST['FCKeditor1']."','".$tid."');") or die(mysql_error());
}

else {
$tid=time();
mysql_query("INSERT INTO `nyheder` (id, emne, tekst, dato)

VALUES ('','".$_POST['select']."','".$_POST['FCKeditor1']."','".$tid."');") or die(mysql_error());
}

---------------------------------------

Men alligevel ikke helt..for det er meningen at hvis man IKKE skriver noget i "datofelt"-feltet skal den bare skrive dags dato..men det gør den ikke ?




Hvorfor skal man selv kunne skrive en dato? kan du ikke bare sætte en dato?



hmm sad lige og kiggede lidt på din kode, hvilket dato format bruger du? hvis du bruger dansk dato format 'dag/måned-år' så duer '$tid=date("U", $datofelt);' det ikke date funktionen, bruger UNIX stil 'år-måned-dag' så du bliver nødt til at lave det lidt om, prøv at lave en ny fil med det her:

<?php
$dato = "28/07-1974";
list($dag, $maaned, $aar) = split('[/.-]', $dato);
$tid = mktime('00', '00', '00', $maaned, $dag, $aar);
echo $tid . '<br>';
echo date('d/m-Y', $tid);
?>

der kan du se hvorledes du kommer fra det ene dato format til det andet, så er du sikker på at det ALTID er en time du smider i din db

Og så lav din kode lidt kortere

<?php
if(!empty($_POST['datofelt'])) {
list($dag, $maaned, $aar) = split('[/.-]', $_POST['datofelt']);
$tid = mktime('00', '00', '00', $maaned, $dag, $aar);
}
else {
$tid=time();
}
mysql_query("INSERT INTO `nyheder` (id, emne, tekst, dato)

VALUES ('','".$_POST['select']."','".$_POST['FCKeditor1']."','".$tid."');") or die(mysql_error());
?>



Okay. Men hvilken type skal dato i SQL-tabellen så være ?



den skal du bare sætte til at være en varchar, jeg bruger altid længden 50



Okay. Jeg siger bare tusind tak.
Men jeg har lige 1 spørgsmål til...

Hvordan får jeg så vist alle nyhederne fra den aktuelle måned ?
eller en anden måned ?



<< < 12 > >>
t