Avatar billede -zonic- Nybegynder
15. september 2009 - 01:44 Der er 1 kommentar og
1 løsning

PHP oop Kalender med aftale objekter i et array?

hejsa,


jeg har prøvet at udvikle en kalender, som vi kender den fra diverse reklamerende virksomheder der sender deres papkalendere ud til folk med posten... dette er mit første forsøg på at lave noget med objektorienteret php, da jeg ville lege lidt med det...

se kalenderen her:

http://www.pixel8.dk/pages/skb/

jeg har nu det problem at jeg skal have aftaler i min kalender...

Dette må jo så være aftale objekter...?

jeg kan ikke rigtigt greje hvordan jeg skal lave en liste af aftaler som så kan findes frem ved at der søges på den dato man er på, så jeg savner lidt hjælp til hvordan jeg griber det an...

I får lige min kalender kode her.:

[code]

require_once($_SERVER['DOCUMENT_ROOT']. "/pages/skb/classes/appointment.php");

class Calendar extends Appointment {
    var $months;
    var $month;
    var $year;
    function Calendar() {
    }
    function dayConvert($day) {
        if($day == "7") { $day = "Sø"; }
        if($day == "1") { $day = "Ma"; }
        if($day == "2") { $day = "Ti"; }
        if($day == "3") { $day = "On"; }
        if($day == "4") { $day = "To"; }
        if($day == "5") { $day = "Fr"; }
        if($day == "6") { $day = "Lø"; }
        return $day;
    }
   
    function getStart() {
        return $this->month;
    }
   
    function daysOfMonth() {
        $mo = $this->month;
        $ye = $this->year;
        return cal_days_in_month( CAL_GREGORIAN, $mo, $ye );
    }
   
    function thisDay() {
        $mo = $this->month;
        $t = mktime(0, 0, 0, $mo,  $this->day,  $this->year);
        return $this->dayConvert(date("N",$t));
    }
    function isWeekend() {
        $t = mktime(0, 0, 0, $this->month,  $this->day,  $this->year);
        $r = date("N",$t);
        if($r == 6) {
            return 'sa';
        } elseif($r == 7) {
            return 'su';
        }
    }
   
    function thisMonth() {
        $mo = $this->month;
        $ye = $this->year;
        $t = mktime(0, 0, 0, $mo, date("d"), $ye);
        return date("F",$t);
    }
   
    function thisYear() {
        $mo = $this->month;
        $ye = $this->year;
        $t = mktime(0, 0, 0, $mo,  date("d"),  $ye);
        return date("Y",$t);
    }   

    function showCalendar() {
        for($co= 0; $co < $this->months ; $co++) {
            if($this->month >12) { $this->month = 1; $this->year++; }
            echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"float:left;\" class=\"calendar\">\n";
            echo "<tr>\n";
            echo "<td class=\"month\" colspan=\"3\">".$this->thisMonth()." ". $this->thisYear()."</td>\n</tr>\n";
            $this->day = 1;
            for ($y= 1; $y <= $this->daysOfMonth(); $y++) {
                echo "<tr>\n";
                echo "<td class=\"day1".$this->isWeekend()."\" align=\"left\">".$this->thisDay()."</td>\n";
                echo "<td class=\"day".$this->isWeekend()."\" align=\"right\">".$y."</td>\n";
                echo "<td class=\"event".$this->isWeekend()."\" align=\"left\"></td>\n";
                echo "</tr>\n";
                $this->day++;
            }
            for($z= $this->daysOfMonth(); $z < 31; $z++) {
                echo "<tr>\n<td colspan=\"3\" class=\"none\"> </td>\n</tr>\n";
            }
            echo "</table>\n";
            $this->month++;
        }
    }
}

[/code]

når den opretter en td, skal den så søge efter om der er nogle aftaler på den dato..
Jeg regner med at køre det fra en mysql når jeg er færdig, men skal jeg så bare helt droppe at bruge aftale objekter og så bare lave en funktion der søger på dato og udskriver aftale på td'en... så er det vel ikke rigtigt oop længere? og så skal der også ske et mysql kald for hver dag jeg har i min kalender, istedet for at gøre det hele af én gang?

eller skal jeg lade db'en køre alle aftaler igennem af én gang, gemme objekterne i et array og så på én eller anden måde søge i dette array af objekter og udskrive aftalen til en given dato..? og i så fald - hvordan griber jeg det an?


på forhånd tak!


min kalender bliver nu oprettet således.:

[code]

$ap1 = new Appointment("13-1-2009","Test");
$ar1 = new ArrayList();
$ar1->add($ap1);
// det virker ikke så godt :-)


$cal = new Calendar();
$cal->months = 6;
$cal->month = date("m");
$cal->year = 2009;
$cal->showCalendar();

[/code]



håber nogle kan hjælpe mig da jeg er helt ny i oop...

på forhånd tak!
Avatar billede nissen2630 Novice
15. september 2009 - 06:56 #1
Avatar billede -zonic- Nybegynder
15. september 2009 - 09:58 #2
det ærger mig lidt at du ikke læser mit spørgsmål igennem før du svarer....den kalender du henviser til har intet at gøre med det jeg har lavet, da det ikke er lavet med oop, og ikke beskriver noget af det jeg efterspørger.. men jeg kan godt se at min kode ser mærkelig ud, så må hellere prøve at oprette spørgsmålet forfra :-(
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