Avatar billede ferstin Nybegynder
28. februar 2003 - 09:12 Der er 11 kommentarer og
3 løsninger

Dato fra form til MySql

Jeg henter en førselsdagsdato (dag og måned) ind fra en formular og vil have det lagt ind i MySql, men det skal kun være dag og måned.

Jeg har 2 spørgsmål:

1) Dette script lægger kun datoen ind som 0000-00-00. Hvad er der galt?

2) Hvordan får jeg lagt datoen ind uden angivelse af år? - Skal have tilpasset det med "standartværdi" i databasen.

Her er mit script:

<?php
$conn = mysql_connect("localhost", "roof");
mysql_select_db("hiphiphurra");


$navn = $_REQUEST["navn"];
$noter = $_REQUEST["noter"];
$beror = $_REQUEST["beror"];
$dag = $_REQUEST["dag"];
$mdr = $_REQUEST["mdr"];
$dato = "2003-$dag-$mdr";

$insertSQL = "insert into personer (Navn, Date, Noter, Berorer)
        values('$navn', '$dato', '$noter', '$beror')";
mysql_query($insertSQL);
mysql_query($insertSQL) or die(mysql_error());

header("Location: main.php3");
exit;
?>
Avatar billede martinhrj Nybegynder
28. februar 2003 - 09:55 #1
Hvis du vil have datoen ind, uden angivelse af år, skal du ikke bruge MySQL's date-field! Den har nemlig, som du siger, formatet yyyy-mm-dd. Derfor skal du bare bruge et "normalt" varchar-field. Så kan du selv bestemme hvordan du vil skrive din dato!
Avatar billede sthen Nybegynder
28. februar 2003 - 09:56 #2
>> ferstin

Du må ikke opfatte følgende hverken som spam eller nedsættende - det er positivt ment.

Jeg kan se, at du på det sidste har haft RIGTIG mange Php spørgsmål. Jeg vil anbefale dig at købe hæftet "Start på Php" fra IDG forlag. Det koster kr. 69,- og du ville her kunne finde svar på de ALLERFLESTE af de spørgsmål du har stillet her på Eksperten.

http://www.idgforlag.dk/Vis_produkt.asp?ISBN=87-7843-408-4

Med andre ord - dette er ikke et "gider ikke hjælpe" men et "hjælp til selvhjælp".
Avatar billede ferstin Nybegynder
28. februar 2003 - 10:00 #3
Nu har jeg lavet det om til et almindeligt tekstfelt i databasen (varchar). Problemet ligger vidst på linjen, som definerer hvad der skal ned i databasen. Der hvor jeg henter strengen:
$dato = $dag-$mdr;
Måske skulle jeg i stedet anvende et felt til dag og et til måned. På den måde bliver det også nemmere at hive datoen ud igen... når jeg senere skal beregne på den... eller hvad?
Avatar billede ferstin Nybegynder
28. februar 2003 - 10:04 #4
sthen :D ja, jeg har også efterhånden brugt rigtigt mange points. Mit problem er såmend bare at jeg har bestilt bogen "PHP-bogen" af Henrik Hornhaver, og den er ikke kommet endnu. Men jeg vil så gerne igang :)

Jeg regner med at den er her om nogle dage, bestilte den i sidste uge hos bookworld.dk.
Avatar billede martinhrj Nybegynder
28. februar 2003 - 10:06 #5
Helt sikkert! Hvis du har et feldt til dato og et til mnd, har du større "frihed" bagefter... men jeg er ikke sikker på at du får brug for denne frihed, hvis du ikke vil bruge årstal... så kan du jo alligevel ikke bruge PHP's datofunktioner. Men der er fordel i det, hvis du vil ændre datoen senere... så er det nemmere med 2 felter!
Avatar billede ferstin Nybegynder
28. februar 2003 - 10:11 #6
Okay, jeg tror jeg vil lægger år på også. Jeg vil nemlig bygge et lille sødt system, som beregner hvornår mine venner har fødselsdag, så jeg når at få købt gaven tide. Derfor skal jeg senere lave en regel som siger, at alle dem som har fødselsdag indenfor 30 dage fra nu skal listes.

Jeg kan med årstal også se hvor gamle de bliver, det vil jo være endnu en fordel.
Avatar billede martinhrj Nybegynder
28. februar 2003 - 10:16 #7
Hvis der er den mindste mulighed for at tage årstal med også... så gør det endelig!!! Det letter dit arbejde en hel del!

Og indtil du modtager "PHP-bogen" kan jeg anbefale at du tager et kig på en PHP-maual jeg har fundet... jeg kan ikke lige pt. huske hvor jeg fandt den.. men det finder jeg lige ud af...
Avatar billede martinhrj Nybegynder
28. februar 2003 - 10:18 #8
Det tog ikke så lang tid ;)

http://www.php.net/download-docs.php

Jeg har valgt at downloade windows HTML-help - versionen... den der hedder chm. Den har kanon gode søgemuligheder osv...

Held og lykke med det !
Avatar billede jangravgaard Nybegynder
28. februar 2003 - 10:18 #9
jeg har lavet en funktion til at give mig dagsdato, som måske kan inspirere dig lidt

      function dagsdato()
      {
          return date("Y-m-d", mktime(0,0,0, date("m"),date("d"),date("Y")));   
      }

hvis du skal trække en liste fra mysql hvor der bliver selekteret på dato og de er af typen date, kan du benytte "select .... from tabel where date between yyyy-mm-dd AND yyyy-mm-dd

det kunne måske gøre det lidt nemmere :-)
Avatar billede ferstin Nybegynder
28. februar 2003 - 10:25 #10
jangravgaard > dvs. der ligger en fordel i at bruge mit dato-felt af typen date. Så jeg skal altså først have trukket dag, mdr og aar ud fra min streng og lagt ned i databasen, så det ligger som i standart formatet.

Noget lignende:
$dag = $_REQUEST["dag"];
$mdr = $_REQUEST["mdr"];
$aar = $_REQUEST["aar"];
$dato = $aar-$mdr-$dag;
Avatar billede jangravgaard Nybegynder
28. februar 2003 - 10:30 #11
ja, men man sammensætter strenge ved at skrive $dato = $aar."-".$mdr."-".$dag
altså det er punktum(.) der sætter strengene sammen.
jeg benytter følgende funktion til at lave om på strenge, så de bliver til det datoformat jeg skal bruge.

      function convertdate($string)
      {
            $aar=substr($string, 0, 4);
            $maaned=substr($string, 5, 2);
            $dag=substr($string, 8, 2);
            $dato=$dag."-".$maaned."-".$aar;
            return $dato;
      }
funktionen substr virker ved at angive din variabel, herefter angiver du såkaldt offset og sidenhen hvor mange tegn der skal tages ud af din variabel.
Avatar billede ferstin Nybegynder
28. februar 2003 - 10:40 #12
OK, læg et svar jangravgaard og martinhrj :-)
Avatar billede jangravgaard Nybegynder
28. februar 2003 - 10:43 #13
svar :-)
Avatar billede martinhrj Nybegynder
28. februar 2003 - 12:22 #14
svar svar...
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