Inloggen
Username:
Password:



Password vergeten?
Menu
Home
Forums
Wiki
Script Library
Forum tracker
RSS Feed
Sponsoren
Vacature plaatsen

Aanmelden
Huisregels
Vereniging

Adverteren
Disclaimer
Zoeken

In:
Aantal leden
PHPFreakz kent momenteel 50394 geregistreerde leden.
Opties
Printversie
Navigatie
Vorige 30  |  Volgende 30 Kies een ander forum:
kalender maken
Gepost door: Berry Langerak (Moderator)
Gepost op: 01-02-2006 21:31

Sorry voor de vage titel, kon niets beters bedenken. Een klant vroeg mij vandaag een agenda voor hem te maken en nu is dat niet zo'n probleem, alleen heb ik echt geen idee hoe ik PHP automatisch zoiets kan laten genereren:

M  D  W  D  V  Z  Z
   1  2  3  4  5  6
7  8  9 10 11 12 13
14 15 16              Enfin, je snapt het idee :P

Nu heb ik in de bron gekeken van verschillende agenda's, maar dat is helaas zo erg spagettiscripting, dat ik er echt niet uit kom. Ook op de rest van het internet zijn er of alleen maar volledige scripts te vinden, waarin dit verweeft (?! wellicht verwoven?) zit, maar nergens kan ik vinden hoe ik dit weer kan geven.

Enlighten me, if you will.

Berry


Re: kalender maken
Gepost door: Laurens @scriptlord.net
Gepost op: 01-02-2006 21:37

Hmmm... Beetje scripter moet logisch nadenken voor z'n job, dus werk het eens op papier uit:

Allereerst gewoon een tabel, de eerste rij is M D W D V Z Z. Vervolgens haal je met date() het aantal dagen van de maand op (http://php.net/date) en de dag van de eerste van de week (0 (maandag) tot 6 (zondag)). Als dat hoger ligt dan 0 zul je eerst een aantal lege cellen moeten maken. Tel daarbij hoeveel en maak de rest af, sluit vervolgens je <tr>.
Ga op die manier door met de rijen...


Re: kalender maken
Gepost door: Berry Langerak (Moderator)
Gepost op: 01-02-2006 21:42

"Beetje scripter"
Au. Ik zal het even uitleggen: ik ben niet erg thuis is de date en time functies in de schone taal die men PHP noemt. Dus voor mij was het gewoon handig geweest als iemand nog iets van een klasse had liggen. Snapt u?


Re: kalender maken
Gepost door: Laurens @scriptlord.net
Gepost op: 01-02-2006 21:48

Hehe, is goed, 'k zal even kijken in m'n 'archief', volgens mij heb ik ergens een kalender-class.


Re: kalender maken
Gepost door: Laurens @scriptlord.net
Gepost op: 01-02-2006 21:57

Paar loze functies gestript. 't Is nogal oud, maar het werkt goed. Om het te bekijken moet je even inloggen met demo:demo op http://planyourwedding.nl en via Checklist in het menu doornavigeren naar 'kalender bekijken' (http://planyourwedding.nl/index.php?p=plannen&kalender).


<?php
/*
 * klasse datum
 ***
 * Maak een datum en vergelijk die met andere data
 *
 */

class datum
{
    var
$datum_array, $maand_tabel;
    var
$kalender;
    var
$data;
    var
$van, $tot, $verschil, $nieuwe_datum;
    var
$dagen, $maanden, $jaren;
    var
$dag, $maand, $jaar;
   
    function
datum ( $dag = 0, $maand = 0, $jaar = 0 )
    {
        if (
checkdate ( $maand, $dag, $jaar ) == false )
            return
false;
        else
        {
           
$this -> dag = $dag;
           
$this -> maand = $maand;
           
$this -> jaar = $jaar;
        }
    }
   
    function
kalender ( $van_jaar, $tot_jaar )
    {
        if (
$tot_jaar < $van_jaar )
            return
false;
       
$this -> jaren = $tot_jaar - $van_jaar;
       
$this -> maanden = 0;
       
$this -> dagen = 0;
        for (
$i = 0; $i <= $this -> jaren; $i++ )
        {
            for (
$j = 1; $j <= 12; $j++ )
            {
                for (
$k = 1; $k <= date ( "t", mktime ( 0, 0, 0, $j, 1, $van_jaar ) ); $k++ )
                {
                   
$this -> kalender[$i][$j][$k] = 1;        // of bijvoorbeeld sprintf ( "%02d-%02d-%d", $k, $j, $van_jaar );
                   
$this -> dagen++;
                }
               
$this -> maanden++;
            }
        }
    }
   
    function
maand ( $maand, $jaar, $returnFormat, $data_array = null )
    {
       
$dag = 1;
       
$kolommen = 0;
       
$maand_tijd = mktime ( 0, 0, 0, $maand, 1, $jaar );
       
$dagen_per_maand = date ( "t", $maand_tijd );
       
$return = "<table>
        <tr><td width=20>Ma</td>
        <td width=20>Di</td>
        <td width=20>Wo</td>
        <td width=20>Do</td>
        <td width=20>Vr</td>
        <td width=20>Za</td>
        <td width=20>Zo</td></tr>"
;
       
       
$startrij = date ( "w", $maand_tijd ) - 1;
        if (
$startrij < 0 )
           
$startrij = 6;
        while (
$dag <= $dagen_per_maand )
        {
            if (
$kolommen == 0 )
               
$return .= "<tr>";
            if (
$startrij == 0 )
            {
               
$return .= "<td";
               
// Format maken
               
$format = sprintf ( "%04d-%02d-%02d", $jaar, $maand, $dag );
                if (
is_array ( $data_array ) && in_array ( $format, $data_array ) )
                   
$return .= " style='font-weight: bold'";
               
$return .= ">" . sprintf ( $returnFormat, $dag, $maand, $jaar ) . "</td>\n";
               
$dag++;
            }
            else
            {
               
$startrij--;
               
$return .= "<td>&nbsp;</td>\n";
            }
           
           
$kolommen++;
            if (
$kolommen > 6 )
            {
               
$return .= "</tr>\n\n";
               
$kolommen = 0;
            }
        }
       
$return .= "</table>";
       
$this -> maand_tabel = $return;
        return
$return;
    }
}
?>


Re: kalender maken
Gepost door: Berry Langerak (Moderator)
Gepost op: 01-02-2006 22:02

Dat ja! :D

Thnx a billion!


Re: kalender maken
Gepost door: Laurens @scriptlord.net
Gepost op: 01-02-2006 22:19

Geen probleem, werkt 't een beetje lekker?


Re: kalender maken
Gepost door: K Lasen
Gepost op: 14-10-2006 12:21
Laatste wijziging:14-10-2006 12:22

Ik heb deze code eens bekeken en die staat mij wel aan. Echter als ik de code gebruik geeft deze een lege pagina weer.
Zelf heb ik een waarde gegeven aan:
$van_jaar=2006;
$tot_jaar=2007;
Ook dit geeft niet weer.

Moet ik de functie/class op een of andere manier aanroepen???


Re: kalender maken
Gepost door: Laurens @scriptlord.net
Gepost op: 17-10-2006 18:30

Ik denk dat je even een artikeltje over het gebruik van klassen (classes) moet lezen, want deze class moet ook nog worden aangeroepen ;)

Zie het menu rechts voor info over classes/OOP.


Recente topics
Website layout hu...
selecteer tekst t...
Weergaven form in...
Website Hulp gezocht
Refresh na invoeren.
Weeknummers selec...
jquery table sort...
Meerdere menu's i...
jQuery slide content
HTML SELECT met 2...
TCPDF geeft é nie...
session_id(); > b...
Nieuwe regel
Variabele analyseren
heleboel foutmeld...
Recente Wiki's
JavaScript: High Performance
MagicQuotes
Escapen
Datamanipulatie
RabbitVCS
Continuous integration
Apache Veilig Maken
Charactersets
Het Wiel Uitgevonden:Formulieren
XSD

Meer wiki ...
Recente Scripts
Unieke `random` n...
twitterPHP 0.1 (a...
CSS minifier
PINI - PHP >>INI<...
Sudoku [StateSolver]
base64 file encoder
Session class

Meer scripts ...
Gehost door
RedKnot Hosting