22. januar 2006 - 12:34Der er
15 kommentarer og 3 løsninger
Hjælp til kalender - hvor skal jeg starte
Jeg har ingen anelse om hvordan jeg skal lave en kalender i php, jeg fundet massere af sourcecodes, men ingen artikler som fortæller hvordan man laver det. Derfor beder jeg jer om IKKE at henvise mig til sourcecodes!
Kalenderen skal være ret simpel. Alle dagene skal være samme farve, men dags dato skal være en anden farve. Den skal også vise om det er mandag,tirsdag,onsdag, osv.
hør her.. først og fremmest skal du lave en lille plan til dig selv.. således at du på den måde ser det hele i små problemer.. det hjælper tit til at komme igennem problemer.
Du kan f.eks starte med at sige.. nu vil jeg lave noget PHP kode som viser mig hele denne måned.. det kan du bruge date() funktionen til.. ved at give den nogle værdier.. se her: date("Y-m-d",mktime(0,0,0,1,1,2006)); < sådan fanger du f.eks den første dag i denne måned.. date("Y-m-d",mktime(0,0,0,1,date("t"),2006)); < sådan får du sidste dag i måneden..
ud fra det kan du så lave en iteration: for ($dag=1;$dag<=date("t");$dag++){ print date("Y-m-d",mktime(0,0,0,1,$dag,2006)); }
mit script er så lavet meget simpelt og vil derfor kun virke for januar i år.. hvis du selv er i stand til det vil det også være en udfordring for dig at tænke dig frem til en algoritme som gør det muligt at lave et script som kan passe ind i hvilken som helst sammenhæng.
husk at dag, måned og år alle er dynamiske i en kalender. Hvis du også ønsker mulighed for skrive bestemte ting ind pr. dag, skal du også tage højde for time, min og sec
Som sagt ved jeg intet om hvordan man laver en kalender, så kan du ikke hjælpe mig lidt? Det ser fint ud, det som du har lavet, men jeg vil gerne have at den viser det sådan her:
ok. start med at lave en tabel i denne tabel laver du 7 kolonner så laver du en tællevariabel, kald den $dag. denne dag itereres igennem mit script, som kører antal gange = antal dage i måned. ud over det har du en tælle variabel som hedder $i.
inde i din for-løkke skal du så have kontrolleret hvor dagen 1,2,3 osv skal stå henne hhv i man,tirs,ons osv. dette gøres ved at sige: if ($i != 0 && $i%7 == 1){ print luk rækken, start ny række} skriv rækken ind </td><td>
$i%7 er modulus.. dvs.. man har $i som man deler med 7 og ser på resten. i tilfælde hvor resten er 1, (dvs når tallet $i = 8,15,22 osv) så skal den starte med på en ny TR og selvfølgelig.. huske at lukke den gamle række (/TR)
som sagt..del tingene op i små problemstillinger.. nu har du fået den til at vise det korrekt i en tabel..nu skal du tage stilling til hvilken dag den starter ved :) dette kan gøres i den indledende fase, dvs FØR for-løkken eller INDE i for-løkken: $diff = date("w",mktime(0,0,0,1,$dag,2006)); for ($space=0;$space<$diff;$space++) { print "<td></td>"; } for ($dag=1;$dag<=date("t");$dag++) { echo "<td>"; echo date("d",mktime(0,0,0,1,$dag,2006)); echo "</td>";
if ((($dag-$diff+7)%7) == 1) { echo "</tr><tr>"; } }
har ikke testet.. men prøver at give dig en idé om hvordan du kan gribe problemet an..
for ($dag=1;$dag<=date("t");$dag++) { echo "<td>"; echo date("d",mktime(0,0,0,1,$dag,2006)); echo "</td>";
if (($dag%7) == 1) { echo "</tr><tr>"; } }
echo "</tr>";
?> </table>
Læg et svar jakobdo, for det var den du kom med :-) Så kan dig og well_r bare dele, eller hvad ? For well_r gav mig jo en forståelse for tingene, men du kom med koden og lidt af forståelsen.
lyder godt at du fandt ud af det.. måske skulle jeg selv kopiere den kode og selv bruge den :) hvis du virkelig vil gøre dig selv en tjeneste så programmer den således at du kan bruge den i flere sammenhænge.. på den måde kan du bare inkludere den i forskellige dokumenter som et "plugin" :) det hjælper tit at have tingene klar..for så behøver ikke at lave det samme flere gange.. :)
ellers tak du! :) jeg har jo også fået noget ud af at hjælpe her! :)
Pointene betyder ikke så meget.. mere at svaret var accepteret der betyder noget.. så kan andre der søger på exp.dk hurtigt finde det de leder efter :D
Synes godt om
Ny brugerNybegynder
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.