Avatar billede jokerper Nybegynder
04. august 2008 - 23:42 Der er 9 kommentarer og
1 løsning

Hjælp til at sætte php og db forespørgsel sammen

Hej eks.

Jeg har denne funktion/script:

echo " Der er ";
$dag = 10;      //dag som skal nedtælles til 
$maaned = 10;  //måned som skal nedtalles til 
$aar = 2008; //år som skal nedtælles til
$vigtigdag = "min fødselsdag og "; //den dag som skal nedtælles til.

Det jeg har brug for er at kunne indsætte nye data ud af min DB.
$dag = Ny dag;
$maaned = Ny måned;
$aar = Nyt år;

Jeg er ude i noget der ligner dette:

$dag = mysql_query("SELECT navn1 FROM oensker WHERE `user` = '".$bruger."'");      //dag som skal nedtælles til 
$maaned = mysql_query("SELECT navn2 FROM oensker WHERE `user` = '".$bruger."'");    //måned som skal nedtalles til 
$aar = mysql_query("SELECT navn3 FROM oensker WHERE `user` = '".$bruger."'");    //år som skal nedtælles til
$vigtigdag = "min fødselsdag og "; //den dag som skal nedtælles til.

Tabel:
navn1 varchar(10) utf8_danish_ci
navn2 varchar(10) utf8_danish_ci
navn3 varchar(10) utf8_danish_ci

Den giver mig denne fejl:

Warning: mktime() expects parameter 4 to be long, resource given in XXXXXXXXXXXXXX line 109, -14095 dage til min fødselsdag.

echo("".(int)((mktime (0,0,0,$maaned,($dag+1),$aar)-time(void))/86400)." dage til " . $vigtigdag . " ");
Avatar billede showsource Seniormester
04. august 2008 - 23:58 #1
Hey du per .....

Hvis du har en dato i db i standard format ( YY-MM-DD ) og feltet er et DATE felt, ( eller DATETIME )

$dage = "SELECT DATEDIFF(`dato`, CURDATE()) as `daysleft` FROM `oensker` WHERE `user` = '".$bruger."'";
echo mysql_result(mysql_query($dage),0);


( Og jeg prøver lige om jeg kan komme tidligt op imorgen ..... )
Avatar billede jokerper Nybegynder
05. august 2008 - 00:15 #2
Hejsa jeg tænkte også lige hvor bliver du af...

jamen det har jeg - har hårdt brug for din hjælp.
Avatar billede jakobdo Ekspert
05. august 2008 - 09:11 #3
Som showsource er inde på, fejl nummer 1, er du gemmer navn1,navn2 og navn3 som varchar.
Da der er tale om en dato, giver det bedst mening af bruge DATE eller DATETIME.
Dermed kan du også bruge de indbyggede dato-funktioner i mysql, som f.eks. DATEDIFF som han bruger herover.
Avatar billede jokerper Nybegynder
05. august 2008 - 17:07 #4
Okay ja det giver mening. Men jeg mente bare når det er et tal "$dag = 10;" så skulle jeg ikke bruge datoformatet 0000:00:00 da jeg så ikke kunne trække dagen ud.

Jeg tænkte også om jeg måske skulle lave dette om til et array og så den ændret denne linie:

echo("".(int)((mktime (0,0,0,$maaned,($dag+1),$aar)-time(void))/86400)." dage til " . $vigtigdag . " ");

-
Avatar billede jakobdo Ekspert
05. august 2008 - 17:25 #5
Hvis du f.eks. gemte dine info som date.

2008-10-10

Kan du netop med:

DAY(DATO_FELT) få 10
MONTH(DATO_FELT) få 10
YEAR(DATO_FELT) få 2008

Så date er bestemt smartest.
Hvad du mener med array, forstår jeg desværre ikke.
Avatar billede jokerper Nybegynder
05. august 2008 - 21:43 #6
Jeg mente det sådan her:

$ny dato = array($dato+$maaned+$aar);
$query = "SELECT navn1 FROM `oensker` WHERE `user` = '".$bruger."'";
$ny dato = mysql_result(mysql_query($query),0);

Hvor der så i navn1 stod: "10,10,2008"

Eller noget i den stil, jeg er jo ikke en "GURU", så jeg aner ikke om det overhovedet kunne lade sig gøre.

Men det lykkedes mig at få det til at virke sådan her:


$query = "SELECT DAY(navn1) FROM `oensker` WHERE `user` = '".$bruger."'";
$dag = mysql_result(mysql_query($query),0);

osv.
Avatar billede jokerper Nybegynder
24. august 2008 - 14:49 #7
Læg nogle svar så lukker jeg.
Avatar billede jakobdo Ekspert
24. august 2008 - 15:21 #8
Svar!
Avatar billede showsource Seniormester
14. september 2008 - 21:11 #9
Jeg hopper over
Avatar billede jakobdo Ekspert
23. oktober 2008 - 08:10 #10
Takker for point.
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