Oprettet man. d. 17. september 2012 kl. 11:47:13

Yaxxe
Yaxxe (7.560 point. Point ude: 30)

Gem data til database med dato med ét script

Hej alle.

Jeg har ligget med et problem her de foreløbende dage som jeg ikke har kunnet få til at fungere ordenligt.

Hvordan gemmer man data til en database hvori datoen for oprettelsen af dataen også bliver gemt?


Jeg er nemlig igang med at lave en side, hvor man skal kunne indtaste informationer i 2 tekstfelter (titel, besked), hvor man derefter trykker på submit knappen. (Ligesom når man opretter en post på et forum fx.)

Fik det til at virke førhen (dog på nær dato funktion), men her skulle den gå ind på et eksternt php dokument for at gemme i databasen, da formen var således:

<form action="insert.php" method="post">



Mit spørgsmål er så hvordan man laver ét script, som tillader en at gemme informationer til sin database og også tilføjer datoen og tidslettet for oprettelsen af disse informationer?

Min tabel i MySQL ser således ud:
-------------------------------------------
Navn:      Datatype:    Ekstra:
id        int          Auto_Increment
header    text
message    mediemtext
date      int
-------------------------------------------

Håber nogle kunne tænke sig at hjælpe mig :)

Skrevet man. d. 17. september 2012 kl. 11:51:52| #1

KHHP
KHHP (8.886 point)
For det første skal dit date-felt være datatype=DATE og ikke INT.
Dernæst skal du blot lave en variabel der ser således ud:
$dato = date(Y/m/d);

Den henter dags dato og gemmer i en variabel. Så skal du jo bare sørge for at den gemmer værdien af $dato i feltet date, når du udfører din query.

Skrevet man. d. 17. september 2012 kl. 12:20:45| #2

mireigi
mireigi (20.122 point)
Hvorfor ikke bare angive default værdi for date til dagsdato og undlade at udfylde det?

Skrevet man. d. 17. september 2012 kl. 13:29:38| #3

konnerup
konnerup (8.485 point)
Jeg har selv lavet en gæstebog, hvor jeg har brugt dato. Jeg har som KHHP siger, skrevet det ind som en variabel.
Jeg har så bare sat min dato i MySQL til at være TEXT.

//Husk databaseforbindelse

$header = $_POST["header"];
$message = $_POST["message"];
$dato = date(Y/m/d);

$query = "INSERT INTO tabelnavn (header, message, date) VALUES ('$header', '$message', '$dato');";
mysql_query($query);

Skrevet man. d. 17. september 2012 kl. 13:48:09| #4

olebole
olebole (216.728 point)
<ole>

#1 og #3 er en skidt løsning. Brug løsning #2 i stedet. Så bruger du databasen, som den er tænkt  =)

Hvad enten man vælger den ene eller anden løsning, er en endnu vigtigere ting at bruge MySQLI i stedet for det forlængst forældede MySQL-API

/mvh
</bole>

Skrevet man. d. 17. september 2012 kl. 13:56:42| #5

olebole
olebole (216.728 point)
PS: Formatet for et felt med typen date er: yyyy-mm-dd - ikke med / som delimiter.

Dags dato findes med MySQL-funktionen CURDATE  =)

Skrevet man. d. 17. september 2012 kl. 15:11:40| #6

Yaxxe
Yaxxe (7.560 point)
#2
Hvordan er det nu man gør det?

Længe siden at jeg har siddet med PHP og MySQL :)

Skrevet man. d. 17. september 2012 kl. 15:21:28| #7

olebole
olebole (216.728 point)
#6: Som sagt med CURDATE() som værdi, når du indsætter i feltet  =)

Skrevet man. d. 17. september 2012 kl. 15:27:27| #8

Yaxxe
Yaxxe (7.560 point)
$header = $_POST["header"];
$message = $_POST["message"];
$dato = CURDATE();

$query = "INSERT INTO tabelnavn (header, message, date) VALUES ('$header', '$message', '$dato');";
mysql_query($query);


Sådan ikke?

Skrevet man. d. 17. september 2012 kl. 15:37:02| #9

Yaxxe
Yaxxe (7.560 point)
Hidtil har mit script set sådan ud:

$sql="INSERT INTO news (header, message, date)
VALUES
('".$_POST[header]."','".$_POST[message]."',NOW())";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "<script type='text/javascript'>
alert('Nyhed Tilføjet');
</script>";

mysql_close($con);

Skrevet man. d. 17. september 2012 kl. 16:09:17| #10

Yaxxe
Yaxxe (7.560 point)
Kan se i databasen at den gemmer som 0000-00-00

Men jeg kan ikke få den til at skrive 17-09-2012

Skrevet man. d. 17. september 2012 kl. 18:42:26| #11

olebole
olebole (216.728 point)
Jo, hvis du gør som foreslået: Brug DATE som datatype på feltet. Og igen som foreslået: Brug CURDATE() - ikke NOW()

Skrevet tir. d. 09. oktober 2012 kl. 15:55:05| #12

KimK1703
KimK1703 (5.750 point)
kan af jer forklare hvorfor det er en dårlig idé at gemme time() i databasen?

Jeg har aldrig selv brugt mysql's default dato felt, men med time() kan jeg om formatere, bruge sekunder osv. som det passer mig.

Kan man også det med løsning #2 ? Spørger af ren nysgerrighed :)

Skrevet tir. d. 09. oktober 2012 kl. 16:09:39| #13

olebole
olebole (216.728 point)
Der er vist ingen i denne tråd, der har påstået, at time() er en decideret dårlig idé  =)

Det sagt, så er det som oftetst en fordel at bruge MySQL's egne funktioner, når det kan lade sig gøre. Når du bruger et felt med en eller anden dato/tid type, kan MySQL udregne en masse tidsrelaterede opgaver. Det kan den ikke, når du bruger et INT-felt

Skrevet fre. d. 12. oktober 2012 kl. 01:49:19| #14

Yaxxe
Yaxxe (7.560 point)
Er klaret.

Delen med hvor jeg kun ville have ét script, løste jeg ved at efterlade action med action="" og i php delen tilføjede jeg et if(isset($_POST['submit']))

Delen med tid bruge jeg time() som olebole også snakkede om, hvor den så bliver gemt i databasen som varchar.

For at printe tiden ud tilføjede jeg denne kode i php-delen før jeg henter daten fra databasen:
date_default_timezone_set('Europe/Copenhagen');

dette laver tiden om til dansk tid.

For at vise tiden i DD-MM-ÅÅÅÅ, T:M skrev jeg simpelt bare denne kode:

date("d-m-Y, H:i",$result["date"])

Skrevet fre. d. 12. oktober 2012 kl. 01:49:51| #15

Yaxxe
Yaxxe (7.560 point)
...og tak til alle dem der brugte tid på at hjælpe :)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

DB-baseret dropdown viser selected post to gange...

Oprettet den 21. maj 2013 kl. 15.52
allandk giver 30 point for svar | Giv et svar »

Hente alle poster og gemme i variabel til senere echo

Oprettet den 20. maj 2013 kl. 21.49
allandk giver 30 point for svar | Giv et svar »

if med flere SELECT i Mysql

Oprettet den 19. maj 2013 kl. 15.08
artico giver 100 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

De 21 værste it-vaner - og hvordan du bryder dem

Du har helt sikkert en af disse dårlige it-vaner. Se her hvad du kan gøre.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger