Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 1009
Har skrevet meg en liten kalender klasse som jeg har tenkt å bruker på sidene mine, og trenger litt tilbakemeldinger. Noe jeg bør endre? Noe unødvendig?

Her er koden: http://www.pastebin.no/2224

En ting jeg ikke helt får til her og nå, er at hvis måneden starter på f.eks en Onsdag, så begynner den på onsdag og ikke på mandag.

Ønsket resultat:

Kode

Man  	Tir  	Ons  	Tor  	Fre  	Lør  	Søn
1 	2 	3 	4 	5 	6 	7
8 	9 	10 	11 	12 	13 	14
15 	16 	17 	18 	19 	20 	21
22 	23 	24 	25 	26 	27 	28
29 	30 	31
Slik er det for eks nå hvis jeg går til mai:

Kode

Tir  	Ons  	Tor  	Fre  	Lør  	Søn  	Man
1 	2 	3 	4 	5 	6 	7
8 	9 	10 	11 	12 	13 	14
15 	16 	17 	18 	19 	20 	21
22 	23 	24 	25 	26 	27 	28
29 	30 	31
Klassen er ikke ferdig, dette er bare begynnelsen som jeg skrev i dag.
Sist endret av nukleuz; 29. juni 2007 kl. 14:47.
Uten å ha studert koden så veldig mye oppdaget jeg at du kan bruke array i getDay metoden i stedet for switch.

Kode

private function getDay($date,$mnd) { 
	$date = strtotime($date.".".$mnd.".".date('Y')); 
	$dateName = date('w', $date); 
	$weekdays = array(
		0 => 'Søn',
		1 => 'Man',
		2 => 'Tir',
		3 => 'Ons',
		4 => 'Tor',
		5 => 'Fre',
		6 => 'Lør',
	);
	return $weekdays[$dateName]; 
}
Du kan også lese her for å lære om forskjellen på ' og " i strenger.

Edit:
Har sett litt mer på det.

Det er normal praksis å aldri la metoder skrive ut noe, men bare returnere en string.
Scriptet fortsetter selv om datoen ikke er gyldig.
Du kan bruke arrays i stedet for w/d_x variablene

Jeg syns:

Kode

if ($i == $date) {
	$$dateNumber = "<strong>".$i."</strong>";
}
er mye lettere å lese enn:

Kode

if ($i == $date) $$dateNumber = "<strong>".$i."</strong>";
Men du får jo gjøre det sånn du syns er best

For å få ukene til å starte på mandag uansett må du sjekke om måneden starter på en annen dag enn mandag, og så legge til tomme dager helt til den første. Du kan jo f.eks gjøre om $maxDays fra å inneholde antall dager i måneden til å inneholde antall dager i måneden pluss antall tomme dager før den første i måneden.
Sist endret av andios; 30. juni 2007 kl. 18:01.
Trådstarter
Du kan også lese her for å lære om forskjellen på ' og " i strenger.
Vis hele sitatet...
Hmmm. Jeg har jo ikke noe kluss i stringene mine.

Scriptet fortsetter selv om datoen ikke er gyldig.
Vis hele sitatet...

Kode

<?php
 	    // Checks if the month is numeric and between 1 and 12
 	    // If not, we use actual month
 	    private function validateMnd($mnd) {
 	        if (!is_numeric($mnd) || $mnd < 1 || $mnd > 12) $mnd = date("m");
 	        return $mnd;
 	    }
 	    
 	    // Checks if the date is numeric and between 1 and maximum days this month.
 	    // If date is not spesified and $mnd is the same month as we are in, $date = today.
 	    // If the date is lower the 1, $date = 1.
 	    // If the date is higer then maximum days in this month, $date = last day i month.
 	    private function validateDate($date,$mnd) {
 	        $mnd = $this->validateMnd($mnd);
 	        $maxDays = $this->countDays($mnd);
 	        if (empty($date) && date("m") == $mnd) $date = date("d");
 	        if (!is_numeric($date) || $date < 1) $date = 1;
 	        if ($date > $maxDays) $date = $maxDays;
 	        return $date;
 	    }
?>
Sist endret av nukleuz; 2. juli 2007 kl. 18:41.
m0b
m0b's Avatar
DonorAdministrator
Har ikke sett noe spesielt igjennom klassen din, men vil bare spytte ut en liten heads-up; funksjonen strtotime() er meget grei å benytte seg av når det kommer til datoer og måneder.
Trådstarter
Hei!

Bruker jeg ikke den fuksjonen da?

Syns dere kan lese gjennom klassen og forstå hvordan den fungerer, så komme med tilbakemeldinger