Avatar billede thomasfricke Juniormester
14. december 2005 - 23:44 Der er 43 kommentarer og
1 løsning

Dato i tabel

Hej Eksperter...

Mit spørgsmål lyder således...

Jeg skal have lavet en tabel, hvor i første række skal den vise datoer. Men dog ikke så simpel, for hvis dagen idag er 01-01-2006 og det er en tirsdag. Skal den starte med "mandag" i samme uge, og stoppe ved "fredag"

Altså: man, tirs, ons, tors og fre. (lør og søn skal ikke vises...)

Spørg hvis tvivl...

Fra MySQL:
http://eksperten.dk/spm/671994
Avatar billede jaw Nybegynder
14. december 2005 - 23:53 #1
Ok. Lad os sige, at $row['dato'] indeholder datoen 04-01-2006 (en onsdag)

if(date("N", $row['dato']) != 1) {
  $first_day = mktime(0, 0, 0, date("m", $row['dato']), (date("d", $row['dato'])-(date("N", $row['dato'])-1)), date("Y", $row['dato']));
}

Og så en løkke med fra $first_day og 5 dage frem. Er det sådan du mener?
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:22 #2
Det ser meget rigtigt ud, men virker ikke !
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:22 #3
Skal der mere kode til ?
Avatar billede jaw Nybegynder
15. december 2005 - 00:24 #4
Ja, det skal der. Men ville gerne se om jeg var på sporet først. Hvordan ser formatet ud når du udhenter det. Mit bygger på, at du udhenter som et "unix_timestamp", ellers vil den ikke funke. Og så mangler der jo som jeg skrev løkken.
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:32 #5
Jamen, ja du er på sporet.. Altså den finder "onsdag", og går tilbage til mandag, og 5 dage frem... Det er meget rigtigt...
Avatar billede jaw Nybegynder
15. december 2005 - 00:33 #6
Ok, så prøv følgende:

$first_day = (date("d", $row['dato'])-(date("w", $row['dato'])-1));
for($i = $first_day; $i < $first_day+5; $i++) {
    echo date("d.m.Y", mktime(0, 0, 0, date("m", $row['dato']), $i, date("Y", $row['dato'])))."<br />";
}

Og så igen er det vigtigt, at du har $row['dato'] som unix-timestamp.
Avatar billede jaw Nybegynder
15. december 2005 - 00:33 #7
Mit aller første forsøg dropper vi bare igen, det skal du ikke bruge. Opdagede at N kun blev tilføjet i 5.0, så bruger w i stedet.
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:37 #8
Okay... Der skete noget...
men ved ikke hvordan jeg skal gøre det der med unix-timestamp...

ps.
29.12.1969
30.12.1969
31.12.1969
01.01.1970
02.01.1970

Dette er datoerne den kommer med... Hehe... det er mange år siden :D
Avatar billede jaw Nybegynder
15. december 2005 - 00:38 #9
Ja, det er netop fordi den får fejl, og derfor tager tilbage til 1.1.1970 (epoch).

Men vis mig lige dit udtræk.
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:39 #10
Mit udtræk.. Nu føler jeg mig dum... Hehe... Hvad mener du ?
Avatar billede jaw Nybegynder
15. december 2005 - 00:40 #11
Jeg mener der hvor du henter datoen ud fra databasen. Altså dit databaseudtræk :)
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:42 #12
Henter ikke datoen fra en database, det skal funke således. at tabellen bliver oprettet ud fra dagens dato...
Avatar billede jaw Nybegynder
15. december 2005 - 00:47 #13
Nååå. Der kan man bare se. Men så kan en løsning jo være:

$first_day = date("d")-date("w", time())+1;
for($i = $first_day; $i < $first_day+5; $i++) {
    echo date("d.m.Y", mktime(0, 0, 0, date("m"), $i, date("Y")))."<br />";
}
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:50 #14
Okay det virker, så skal den bare over i en funktionel "<TABLE>"
Avatar billede jaw Nybegynder
15. december 2005 - 00:52 #15
Kan du ikke selv lave html? Anyhoo, så f.eks.:

echo "<table>";
$first_day = date("d")-date("w", time())+1;
for($i = $first_day; $i < $first_day+5; $i++) {
  echo "<tr>";
  echo "<td>";
  echo date("d.m.Y", mktime(0, 0, 0, date("m"), $i, date("Y")));
  echo "</td>";
  echo "</tr>";
  echo "</table>";
}
echo "</table>";
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:54 #16
Uden at afprøve det, ville jeg mene at det hele kommer til at stå i en kolone !
Avatar billede jaw Nybegynder
15. december 2005 - 00:57 #17
Korrekt, skal det stå på den anden led da? Så er det jo bare at rykke <tr> og </tr> udenfor løkken - ingen hokus pokus dér...
Avatar billede thomasfricke Juniormester
15. december 2005 - 00:59 #18
Prøv at kigge her http://www.oneeye.dk/eks.php

Forklare det nok lidt bedre...
Avatar billede jaw Nybegynder
15. december 2005 - 01:01 #19
Ja, og det er ikke som den gør hvis du hiver <tr> og </tr> udenfor løkken som jeg skrev?
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:02 #20
Dvs. <td>Dato 1</td><td>Dato 2</td><td>Dato 3</td><td>Dato 4</td><td>Dato 5</td>
Avatar billede jaw Nybegynder
15. december 2005 - 01:04 #21
Det er jeg med på - og også det jeg prøver at fortælle, men lader til at jeg ikke forklarer det godt nok :)

echo "<table>";
echo "<tr>";
$first_day = date("d")-date("w", time())+1;
for($i = $first_day; $i < $first_day+5; $i++) {
  echo "<td>";
  echo date("d.m.Y", mktime(0, 0, 0, date("m"), $i, date("Y")));
  echo "</td>";
}
echo "</tr>";
echo "</table>";

(Og der var så også lige en fail i 2 gange </table>)
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:04 #22
Hvis du vil have flere point, er det ikke noget problem... Du siger bare til...
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:05 #23
Undskylder
Avatar billede jaw Nybegynder
15. december 2005 - 01:06 #24
Behøver du skam ikke - er her jo for at hjælpe :)
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:07 #25
Hehe.. Okay, der må være en fejl et eller andet sted.. Nu vil den ikke vise siden...
Avatar billede jaw Nybegynder
15. december 2005 - 01:15 #26
Ved jeg ikke, det vil den gerne hos mig...
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:18 #27
Okay... Har løst problem... Jeg takker, og beder dig ligge et svar...

Fejlen var på min egen side...
Avatar billede jaw Nybegynder
15. december 2005 - 01:19 #28
Selv tak :)
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:23 #29
Hmm.. Du kunne ikke tænke dig at tjene nogle flere point... ? Tror du kan løse det hurtigt...
Avatar billede jaw Nybegynder
15. december 2005 - 01:24 #30
Try me.
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:28 #31
Nu da vi har lavet tabelen, kunne jeg godt tænke mig. At i stedet for at se en "uge" så kan man se 5 "uger" i alt
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:29 #32
Det er vel noget med, at når man har fundet den første "mandag" skal man + med 7 for at få næste mandag osv.... Dette er bare et gæt !
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:34 #33
Man kunne jo sige at den skal se 35 dage frem, istedet for 5 dage... Men den skal ikke vise lørdag, og søndage med :D
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:42 #34
Hmm... Okay... Har selv løst det... Hehe... Newer mind... Men tak for hjælpen..
Avatar billede jaw Nybegynder
15. december 2005 - 01:42 #35
Ok, så gider jeg ikke prøve mere.

Selv tak.
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:44 #36
Hehe... Men så er der jo det med hvilken uge man er i ? :-)
Avatar billede jaw Nybegynder
15. december 2005 - 01:45 #37
Ikke forstået...?!
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:46 #38
Du ved, der er ca. 52 uger på et år...
Avatar billede jaw Nybegynder
15. december 2005 - 01:48 #39
Yes, det er jeg godt klar over, men vil du have det udskrevet? Det har du da ikke snakket om før? Men ugenummeret er W i forbindelse med date()-funktionen.
Avatar billede thomasfricke Juniormester
15. december 2005 - 01:51 #40
Nej, har ikke snakket om det før nu... Vil gerne give flere point... :-)

Kan du ikke skrive, lige som før ?
Avatar billede jaw Nybegynder
15. december 2005 - 01:55 #41
Jeg ved jo ikke længere hvordan din kode ser ud, og ej heller ved jeg hvor du vil have det stående.

Men i forhold til min kode:

echo "<table>";
echo "<tr>";
$first_day = date("d")-date("w", time())+1;
echo "<td>";
echo "Ugenummer: ".date("W", mktime(0, 0, 0, date("m"), $first_day, date("Y")));
echo "</td>";
for($i = $first_day; $i < $first_day+5; $i++) {
  echo "<td>";
  echo date("d.m.Y", mktime(0, 0, 0, date("m"), $i, date("Y")));
  echo "</td>";
}
echo "</tr>";
echo "</table>";
Avatar billede thomasfricke Juniormester
15. december 2005 - 02:01 #42
Prøver lige at se om jeg kan bikse lidt med den kode du har sendt mig...
Avatar billede thomasfricke Juniormester
15. december 2005 - 02:13 #43
Så... Lykkedes det... Tak for hjælpen igen... Det må være nok for idag  !

Vil du have nogle flere point for dette... ?
Avatar billede jaw Nybegynder
15. december 2005 - 02:14 #44
Nej, nej, det er helt fint. Sov godt !
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