Avatar billede overgaard1605 Nybegynder
06. november 2003 - 17:57 Der er 7 kommentarer og
1 løsning

Kalender i PHP & MySQL

Hejsa..

Jeg sidder og er ved at lave en hjemmeside, hvor jeg skal have lavet en kalender/program funktion.. Jeg har et menu punkt der hedder program. hvor jeg skal have de næste 3 mdr. program liggende.. også skal jeg have lavet et script der tager det næste punkt i programmet ud på forsiden, altså bare datoen og så en overskrift der kan linke videre til program siden..

Jeg er ny i php & mysql. og kan ikke selv lave det, men jeg kan læse og forstå kode..

håber der er nogle der kan hjælpe, der er gode point..:)
Avatar billede Slettet bruger
06. november 2003 - 21:39 #1
Lidt ligesom dette ? http://cypermann.dk/new/
Avatar billede overgaard1605 Nybegynder
06. november 2003 - 22:29 #2
ikke helt på samme måde... på forsiden siden af hjemmesiden skal der bare være en lille boks hvor der står "Næste arrangement" "Mandag d. dd/mm/åå" "Gå tur i skoven"... så skal sætningen "Gå tur i skoven" være et link der linker ind til program siden, hvor der så er en bedre beskrivelse af arrangementet... plus kalenderen for de næste 3 mdr. ligger derinde... noget ligesom det her http://simu.users.whitehat.dk/
Avatar billede rackbox Nybegynder
07. november 2003 - 00:50 #3
Her er i hvert fald en kalenderfunktion, der viser en måned ad gangen og samtidig viser valgt dag samt fremhæver dage med aftaler + dagen idag:

function nowdate2timestamp(){
        $now = explode(":", date("H:i:s:m:d:Y"));
        return mktime(0, 0, 0, $now[3], $now[4], $now[5]);
}

function appointments_on_date($ts){
        //$ts needs to be converted into MySQL format
        $mysql_ts = date("YmdHis",$ts);
        $query = "select * from cal where dato = '".$mysql_ts."'";
        $result = mysql_query($query);
        if (mysql_fetch_array($result)){
                return true;
        }else{
                return false;
        }
}

function number_of_days_in_month($month, $year){
        return date("t", mktime(0, 0, 0, $month, 1, $year));
}

function first_day_of_month($month, $year){
        return date("w", mktime(0, 0, 0, $month, 1, $year));
}

function calendar($month, $year, $day){
        $mth[1] = "Januar";
        $mth[2] = "Februar";
        $mth[3] = "Marts";
        $mth[4] = "April";
        $mth[5] = "Maj";
        $mth[6] = "Juni";
        $mth[7] = "Juli";
        $mth[8] = "August";
        $mth[9] = "September";
        $mth[10]= "Oktober";
        $mth[11]= "November";
        $mth[12]= "December";

        $result = "<center>".$mth[$month]." ".$year."</center>\n";
        $result.= "<table id=cal><tr><td>\n";
        $result.= "Søn<td>Man<td>Tir<td>Ons<td>Tor<td>Fre<td>Lør<tr>\n";

        //Check for app. on 1. day of month
        $first_day = mktime(0, 0, 0, $month, 1, $year);

        $tabs = first_day_of_month($month, $year);
        for ($i = 0; $i<=$tabs; $i++){
                $result.= "<td style='";
                if (appointments_on_date($first_day))
                        $result.="font-weight: bold;";
                if ($nowdate==mktime(0, 0, 0, $month, 1, $year))
                        $result.="background-color: #aaaaaa;";
                if (mktime(0, 0, 0, $month, $day, $year)==mktime(0, 0, 0, $month, 1, $year))
                        $result.="border: solid 1px black;";

                $result.= "'>\n";
        }


        $num_of_days = number_of_days_in_month($month, $year);
        $tabsleft = 6-$tabs;
        $nowdate = nowdate2timestamp();

        //Run through month
        for ($i = 1; $i<=$num_of_days; $i++){
                $result.= "<a href='java script:parent.location.href=\"index.php?page=tid&year=".$year."&month=".$month."&day=".$i."\"'>";
                $result.= $i;
                $result.="</a>";
                //check for new line
                if ($tabsleft == 0){
                        $result.= "<tr>\n";
                        $tabsleft = 7;
                }
                $result.="<td style='";
                if (appointments_on_date(mktime(0, 0, 0, $month, $i+1, $year)))
                        $result.="font-weight: bold;";
                if ($nowdate==mktime(0, 0, 0, $month, $i+1, $year))
                        $result.="background-color: #aaaaaa;";
                if (mktime(0, 0, 0, $month, $day, $year)==mktime(0, 0, 0, $month, $i+1, $year))
                        $result.="border: solid 1px black;";
                $result.="'>\n";
                $tabsleft--;
        }
        $result.="</table>";
        return $result;
}


Databasen ser sådan ud:

id  int(11 )auto_increment
dato  timestamp(14)
start  timestamp(14)
slut
oprettet_af  int(11)
modtager  int(11)
prioritet  int(11)
accepteret  text
tekst  text


Håber, at det kan bruges...
Avatar billede rackbox Nybegynder
07. november 2003 - 00:51 #4
Slut skal også være timestamp..
Avatar billede overgaard1605 Nybegynder
07. november 2003 - 11:44 #5
rackbox -> Vil du bare sætte det ind i én fil. hvad med informationer om hvor databasen findes? jeg kan ikke helt gennemskue den
Avatar billede rackbox Nybegynder
07. november 2003 - 16:54 #6
Hehe.. Du sagde, at du godt kunne læse PHP ;-)

Anyway - du skal bruge funktionen således. Hav eventuelt koden i en separat fil, der hedder funktioner.php

<?php
include "funktioner.php";
echo calender($month, $year, $day); //parametrene fortæller funktionen hvilken dag, der er valgt.

og det var det. Din tabel skal oprettes i MySQL og for hvert felt indtaster du relevante værdier. Det kan simpelt laves med en HTML-form.

Databasen hedder cal:

id  int(11 )auto_increment //blot en id
dato  timestamp(14) //Hvornår foregår aftalen?
start  timestamp(14) //Hvornår starter aftalen?
slut timestamp(14) //Hvornår slutter aftalen?
oprettet_af  int(11) //Hvem har oprettet aftalen?
modtager  int(11) //Hvem gælder aftalen for?
prioritet  int(11) //Hvor vigtig er aftalen?
accepteret  text //Har modtageren accepteret aftalen?
tekst  text //Aftalens ordlyd


Du skal selvfølgelig lave en linie, hvor du connecter til din database. Du kan vel kalde den kalender:

$db = mysql_connect('www.dinurl.dk eller localhost', 'username', 'password')
  or die ("Could not connect to database engine.");
mysql_select_db ("kalender")
  or die ("Could not select database.");
}
Avatar billede overgaard1605 Nybegynder
09. november 2003 - 13:21 #7
jeg har selv fundet ud af at lave det nu, men du får point alligevel, da der var noget inspiration i det du havde skrevet....:)
lukker spørgsmålet
Avatar billede rackbox Nybegynder
09. november 2003 - 13:37 #8
Jeg vil da gerne vide, hvad du så selv har fundet ud af ;-) Men tak for points!
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