/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hente enkelt post i database...
Fra : Dennis Munding


Dato : 05-08-05 17:48

Hej NG!

Så er PHP-Newbien over dem alle tilbage igen!

Jeg har en data-base i forb. med en kalender. Nu har jeg så fået til opgave
at hente den førstkommende "event" ud af databasen og sætte den ind på en
side...

Men hvordan er det nu lige, at man gør det?!?
Jeg læste det i bogen af Julie C. Meloni (Introduktion til PHP, MySQL og
Apache), men den havde jeg lånt på bibioteket, så jeg kan ikke lige slå det
op igen...
Har forgæves surfet efter det på de danske sider, jeg kender med
PHP-tutorials....

På forhånd tak for hjælpen!

Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



 
 
Martin Ploug (05-08-2005)
Kommentar
Fra : Martin Ploug


Dato : 05-08-05 18:13

> Jeg har en data-base i forb. med en kalender. Nu har jeg så fået til
opgave
> at hente den førstkommende "event" ud af databasen og sætte den ind på en
> side...
>
> Men hvordan er det nu lige, at man gør det?!?
> Jeg læste det i bogen af Julie C. Meloni (Introduktion til PHP, MySQL og
> Apache), men den havde jeg lånt på bibioteket, så jeg kan ikke lige slå
det
> op igen...
> Har forgæves surfet efter det på de danske sider, jeg kender med
> PHP-tutorials....


Hej

Hmm, jeg er ikke sikker på syntaksen, men måske noget med "select. where
date = || > $date.....sort by date"

- Martin



Benny Nissen (05-08-2005)
Kommentar
Fra : Benny Nissen


Dato : 05-08-05 18:13

Dennis Munding wrote:
> Hej NG!
>
> Så er PHP-Newbien over dem alle tilbage igen!
>
> Jeg har en data-base i forb. med en kalender. Nu har jeg så fået til opgave
> at hente den førstkommende "event" ud af databasen og sætte den ind på en
> side...

SQL'en ser ca. sådan ud:

"SELECT * FROM calender WHERE date >= NOW() ORDER BY date ASC LIMIT 1"

Hvor calender er navnet på tabellen, og date er navnet på den kolonne,
der indeholder dato'en.


--
Benny Nissen

Martin (05-08-2005)
Kommentar
Fra : Martin


Dato : 05-08-05 18:20

Dennis Munding wrote:
> Hej NG!
>
> Så er PHP-Newbien over dem alle tilbage igen!
>
> Jeg har en data-base i forb. med en kalender. Nu har jeg så fået til opgave
> at hente den førstkommende "event" ud af databasen og sætte den ind på en
> side...
>
> Men hvordan er det nu lige, at man gør det?!?


Ret simpelt -

<?php

$sql = mysql_query("
SELECT
eventNavn
FROM
tabel
ORDER BY
dato
LIMT
1
");

list($eventNavn) = mysql_fetch_row($sql);
print $eventNavn;
?>



> Jeg læste det i bogen af Julie C. Meloni (Introduktion til PHP, MySQL og
> Apache), men den havde jeg lånt på bibioteket, så jeg kan ikke lige slå det
> op igen...
> Har forgæves surfet efter det på de danske sider, jeg kender med
> PHP-tutorials....
>
> På forhånd tak for hjælpen!
>
> Med venlig hilsen

Dennis Munding (05-08-2005)
Kommentar
Fra : Dennis Munding


Dato : 05-08-05 19:57

Hej Benny og Martin!
"Martin" <news@natten-i.dk> skrev i en meddelelse
news:42f39fb0$0$75422$edfadb0f@dread16.news.tele.dk...
> Ret simpelt -
>
> <?php
>
> $sql = mysql_query("
> SELECT
> eventNavn
> FROM
> tabel
> ORDER BY
> dato
> LIMT
> 1
> ");
>
> list($eventNavn) = mysql_fetch_row($sql);
> print $eventNavn;
> ?>

Det er åbenbart ikke helt så simpelt endda...
Hvis jeg skriver ovenstående kode, returnerer den ingen indhold i "event" og
datoen ser således ud: /08-2005!??

Nu har jeg prøvet at kombinere jeres forslag lidt:

<?php
$conn = mysql_connect("localhost", "****", "****");
mysql_select_db("****", $conn);
$sql = "select * from TABEL where
(EventYear&&EventMonth&&EventDay&&EventTime>='now()') order by EventTime ASC
LIMIT 1";
$result = mysql_query ($sql, $conn) or die(mysql_error());

while ($newArray = mysql_fetch_array($result)) {
$day = $newArray['EventDay'];
$month = $newArray['EventMonth'];
$year = $newArray['EventYear'];
$time = $newArray['EventTime'];
$event = $newArray['Event'];


echo "<p
style=\"text-indent:0%;font-size:120%;font-weight:bold;\">N&aelig;ste
aktivitet:</p>";
echo "<p style=\"text-indent:0%;\"><b>Hvornår:</b> " . $day ."/" . $month
.. "-" . $year . " kl. " . $time . ".<br /><b>Hvad:</b> " . $event . "</p>";
}
mysql_close();
?>

Men det giver heller ikke det ønskede resultat som er, at den skal udskrive
den event, som ligger tættest på det aktuelle tidspunkt, som siden loades!

Hvis jeg ikke er helt galt på den, så må det være i denne linje, der skal
rettes:
$sql = "select * from TABEL where
(EventYear&&EventMonth&&EventDay&&EventTime>='now()') order by EventTime ASC
LIMIT 1";

Men lige hvordan det skal gøres, aner jeg ikke....??

(Håber der sidder "et lyst hoved" derude med "guldkornet", som vil hjælpe
mig...??)

På forhånd tusind tak for hjælpen!

Også stor tak til Benny og Martin for jeres indsats indtil nu!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



Martin Ploug (06-08-2005)
Kommentar
Fra : Martin Ploug


Dato : 06-08-05 09:00

>Men det giver heller ikke det ønskede resultat som er, at den skal udskrive
>den event, som ligger tættest på det aktuelle tidspunkt, som siden loades!

>Hvis jeg ikke er helt galt på den, så må det være i denne linje, der skal
>rettes:
>$sql = "select * from TABEL where
>(EventYear&&EventMonth&&EventDay&&EventTime>='now()') order by EventTime
ASC
>LIMIT 1";

Har du fået løst problemet?

Hvad er det den udskriver?
Jeg tænker på, om man kan i sql'en i stedet for >='now()' bare kan skrive
='now()'
- altså udelade >

Hilsen Martin



Peter Brodersen (06-08-2005)
Kommentar
Fra : Peter Brodersen


Dato : 06-08-05 09:03

On Sat, 6 Aug 2005 09:59:46 +0200, "Martin Ploug"
<mploug@mail.tele.dk> wrote:

>Hvad er det den udskriver?
>Jeg tænker på, om man kan i sql'en i stedet for >='now()' bare kan skrive
>='now()'
>- altså udelade >

For det første skal du ikke skrive 'now()', men now(). Det er en
funktion, men sætter du det i '...', bliver det betragtet som en
string.

now() returnerer den aktuelle dato og tid ned til sekund, så med = vil
du få indlæg, der kun lige præcis er aktuelle i dette sekund.

--
- Peter Brodersen

Dennis Munding (06-08-2005)
Kommentar
Fra : Dennis Munding


Dato : 06-08-05 14:01

Hej Peter!
"Peter Brodersen" <usenet2005@ter.dk> skrev i en meddelelse
news:dd1qsr$646$1@news.klen.dk...
> For det første skal du ikke skrive 'now()', men now(). Det er en
> funktion, men sætter du det i '...', bliver det betragtet som en
> string.

Det vil jeg straks rette!
Som nævnt i mit første indlæg, så er jeg absolut newbie udi PHP...

> now() returnerer den aktuelle dato og tid ned til sekund, så med = vil
> du få indlæg, der kun lige præcis er aktuelle i dette sekund.

Hvilket ikke er hensigten.
Som jeg har skrevet til Martin, så er jeg overbevist om, at '>' skal med...

Mange tak for hjælpen!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



Dennis Munding (06-08-2005)
Kommentar
Fra : Dennis Munding


Dato : 06-08-05 13:58

Hej Martin!
"Martin Ploug" <mploug@mail.tele.dk> skrev i en meddelelse
news:42f46cf9$0$65474$edfadb0f@dread14.news.tele.dk...
> Har du fået løst problemet?

Nej! Jeg er lige kommet hjem fra arbejde...

> Hvad er det den udskriver?

Som koden er nu, udskriver den en event i februar i år...

> Jeg tænker på, om man kan i sql'en i stedet for >='now()' bare kan skrive
> ='now()'
> - altså udelade >

Det ville ikke være smart, da det ikke vil udskrive noget, såfremt der ikke
er en event på det nøjagtige tidspunkt, som siden loades...
Jeg er overbevist om, at '>' skal med.

Men tak for dit svar!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



Tomasz Otap (06-08-2005)
Kommentar
Fra : Tomasz Otap


Dato : 06-08-05 09:52

Dennis Munding proclaimed as follows:
> Hvis jeg ikke er helt galt på den, så må det være i denne linje, der skal
> rettes:
> $sql = "select * from TABEL where
> (EventYear&&EventMonth&&EventDay&&EventTime>='now()') order by EventTime ASC
> LIMIT 1";

Hmm - der lader til at være en fejl i logikken i din SQL (ud over at
now() skal ikke angives i anførelsestegn, som nævnt i tidligere indlæg):
feltet EventTime indeholder vel udelukkende tidspunktet på dagen? Men du
sorterer resultater udelukkende på EventTime.

Dvs, hvis du har dato A: 12 aug 2005 kl. 9.15 og dato B: 24 aug 2005 kl.
7.20, vil din forespørgsel returnere dato B som den førstkommende
event - da kl. 7.20 er mindre end kl. 9.15. Du bør sortere på den fulde
dato og tid.

Nu vi taler om datoerne... er der en grund til, at du har fire felter
til datoangivelse? Kan du ikke blot nøjes med en datetime felt med fuld
tidsangivelse (f.eks. EventStart)?

t

--
Aequitas sequitur funera

Dennis Munding (06-08-2005)
Kommentar
Fra : Dennis Munding


Dato : 06-08-05 14:08

Hej tomasz!
"Tomasz Otap" <tomasz@otap.justRemoveThis.dk> skrev i en meddelelse
news:42f47a27$0$78284$157c6196@dreader1.cybercity.dk...
> Hmm - der lader til at være en fejl i logikken i din SQL (ud over at now()
> skal ikke angives i anførelsestegn, som nævnt i tidligere indlæg): feltet
> EventTime indeholder vel udelukkende tidspunktet på dagen? Men du sorterer
> resultater udelukkende på EventTime.
>
> Dvs, hvis du har dato A: 12 aug 2005 kl. 9.15 og dato B: 24 aug 2005 kl.
> 7.20, vil din forespørgsel returnere dato B som den førstkommende event -
> da kl. 7.20 er mindre end kl. 9.15. Du bør sortere på den fulde dato og
> tid.

Du siger noget der! Jeg tænker på sorteringen...

> Nu vi taler om datoerne... er der en grund til, at du har fire felter til
> datoangivelse? Kan du ikke blot nøjes med en datetime felt med fuld
> tidsangivelse (f.eks. EventStart)?

Det kan måske lade sig gøre for en øvet PHP-koder...
Jeg har lavet det på denne måde, fordi tilføjelser/rettelser foregår via en
form med drop-down, hvor man vælger år, måned, dato & tidspunkt hver for
sig...
Havde jeg været mere rutineret havde jeg måske lavet det på en anden måde -
hovedsagen for mig (og dem jeg har lavet siden for) er, at det virker.
Senere - når jeg er blevet klogere på PHP - vil jeg forbedre og optimere
koderne. Lige nu skal det bare virke!

Men jeg vil da lige prøve dit forslag med at sortere efter alle
tids-faktorerne...

Mange tak for hjælpen!
Jeg skal nok give en tilmelding om, om det virker eller ej...


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



Dennis Munding (06-08-2005)
Kommentar
Fra : Dennis Munding


Dato : 06-08-05 14:22

Hej igen Tomasz!
"Tomasz Otap" <tomasz@otap.justRemoveThis.dk> skrev i en meddelelse
news:42f47a27$0$78284$157c6196@dreader1.cybercity.dk...
Nu har jeg så testet det sidste nye - sortering på alle tids-faktorerne -
det gav et andet resultat, men ikke det rigtige: Nu udskriver den en event
fra den 3/6-2005 kl. 16:00:00- nøjagtig!?

Her er koden, som den ser ud nu:

<?php
$conn = mysql_connect("localhost", "****", "****");
mysql_select_db("****", $conn);
$sql = "select * from boerne_events where (EventYear && EventMonth &&
EventDay && EventTime>=now()) order by EventYear && EventMonth && EventDay
&& EventTime ASC LIMIT 1";
$result = mysql_query ($sql, $conn) or die(mysql_error());

while ($newArray = mysql_fetch_array($result)) {
$day = $newArray['EventDay'];
$month = $newArray['EventMonth'];
$year = $newArray['EventYear'];
$time = $newArray['EventTime'];
$event = $newArray['Event'];


echo "<p
style=\"text-indent:0%;font-size:120%;font-weight:bold;\">N&aelig;ste
aktivitet:</p>";
echo "<p style=\"text-indent:0%;\"><b>Hvornår:</b> " . $day ."/" . $month
.. "-" . $year . " kl. " . $time . ".<br /><b>Hvad:</b> " . $event . "</p>";
}
mysql_close();
?>

Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



Tomasz Otap (07-08-2005)
Kommentar
Fra : Tomasz Otap


Dato : 07-08-05 17:34

&& er blot en anden måde at skrive AND på. Jeg tror, fejlen ligger i din
måde at sammensætte din endelige Event-dato på:

> select * from boerne_events where (EventYear && EventMonth &&
> EventDay && EventTime>=now())

Din forespørgsel siger, oversat til alm. sprog:

vælg alt fra boerne_events hvor feltet EventYear findes og feltet
EventMonth findes og feltet EventDay findes og feltet EventTime er lig
eller større end now()

Prøv at bruge concat-funktionen til at sammensætte disse værdier til en
fælles streng:

.... where concat(EventYear, EventMonth, EventDay, EventTime) >= now()

Du skal vel også være opmærksom på, at den endelige timestamp er korrekt
opbygget... jeg kender ikke meget til den del af mysql, men den endelige
format af strengen skal vel være noget i retning af '2005-08-07 19:30:50'.

t

--
Aequitas sequitur funera

Dennis Munding (09-08-2005)
Kommentar
Fra : Dennis Munding


Dato : 09-08-05 12:52

Hej Tomasz!
"Tomasz Otap" <tomasz@otap.justRemoveThis.dk> skrev i en meddelelse
news:42f63809$0$67257$157c6196@dreader2.cybercity.dk...
> Din forespørgsel siger, oversat til alm. sprog:
>
> vælg alt fra boerne_events hvor feltet EventYear findes og feltet
> EventMonth findes og feltet EventDay findes og feltet EventTime er lig
> eller større end now()

Ok! Så blev jeg lidt klogere - troede det gav "vælg alt fra boerne_events
hvor felterne EventY. & -M. & -D. & .T findes og som er større end eller lig
med"...

> Prøv at bruge concat-funktionen til at sammensætte disse værdier til en
> fælles streng:
>
> ... where concat(EventYear, EventMonth, EventDay, EventTime) >= now()

Den funktion kendte jeg (som så mange andre!) ikke...
Men nu har jeg afprøvet det - jeg får udskrevet en event fra den 15/2-2005
kl. 00:00:00!?

> Du skal vel også være opmærksom på, at den endelige timestamp er korrekt
> opbygget... jeg kender ikke meget til den del af mysql, men den endelige
> format af strengen skal vel være noget i retning af '2005-08-07 19:30:50'.

Sådan ser dato-strengen ud i kalenderen:

$date_string = mktime(0,0,0,$month,7,$year);

Ved ikke om det siger dig noget og er til nogen hjælp...?

Mange tak for hjælpen indtil nu...
(Må have fat i nogle bøger om PHP!)


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www-mundings-memorial.dk/
http://www.cantica.dk/



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste