• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31

Marktplaats

  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22
  • TK: Kraai.eu

    frio 25 oktober 2026 om 11:39

Agenda afspraken

  • L.Kok
  • 26 april 2017 om 11:26
  • L.Kok
    Elite members
    Berichten
    1.120
    Filebase Entries
    1
    • 26 april 2017 om 11:26
    • #1

    Hallo Iedereen

    Voor een nieuw project ben ik bezig met een agenda overzicht waarin afspraken komen te staan.
    De agenda is opgebouwd alsvolgt:

    Nu wil ik graag via PHP de afspraken er online in plaatsen zoals je kan zien van 9 uur tot 9 uur 30.

    Hoe krijg ik dit het beste voor elkaar?

    De agenda structuur is zo opgebouwd:

    PHP
    <table class="agenda">
        <tr>
            <th></th>
            <?php
            do {
                echo "<th>" . getWeekday($dt->format('l')) . " " . $dt->format('d-m') . "</th>\n";
                $dt->modify('+1 day');
            } while ($week == $dt->format('W'));
            ?>
            </th>
        </tr>
        <?php
        for ($i = $settings["begin_werkdag"]; $i <= $settings["einde_werkdag"]; $i++){
            for ($j = 0; $j <= 45 && $i < $settings["einde_werkdag"]; $j+=$settings["tijd_stappen"]){
                if($j == 0){
                    $j = "00";
                }
                ?>
                <tr>
                    <td><?= $i.":".$j?></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
        <?php
            }
            if($i == $settings["einde_werkdag"]){
                ?>
                <tr>
                    <td><?= $i.":00"?></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
        <?php
            }
        }
        ?>
    </table>
    Meer tonen

    Ik zal dus gaan moeten kijken naar $i en $j en dan vervolgens rowspan gaan gebruiken.

    Maar dit wordt me echter iets te complex. Iemand enig idee of betere manier?

    Met vriendelijke groet,

    L.Kok

  • Gast, wil je besparen op je domeinnamen? (ad)
  • L.Kok
    Elite members
    Berichten
    1.120
    Filebase Entries
    1
    • 26 april 2017 om 12:09
    • #2

    Enkele voorbeeldjes zijn trouwens:

    Afspraak 1
    9:00 - 9:30

    Afspraak 2
    9:15 - 11:30

    Afspraak 3
    9:30 - 10:30

    Met vriendelijke groet,

    L.Kok

  • MOnkNL
    Leerling
    Berichten
    69
    • 27 april 2017 om 16:52
    • #3

    Je moet je tabel anders / dynamischer laten opbouwen. En je afspraken zo formatteren zodat je makkelijk kan zien wanneer er een afspraak begint en hoelang hij dan duurd in rowspans.

    --oude code weg gehaald--

    Als je dit doet zou je op de volgende code terug kunnen komen:

    Edit code iets opgeschoond en duidelijker gemaakt:

    PHP
    <style type="text/css">
    .agenda{
    	color:#73879c;	
    }
    .agenda caption{
    	font-size: 20px;
        font-weight: 900;	
    }
    .agenda td{
    	border-bottom: 1px solid #999;
        border-right: 1px solid #999;
        color: #000;
        cursor: pointer;
        padding: 10px 15px;
        transition: all 0.5s ease 0s;	
    }
    .agenda td.bezet{
    	background: #eaeaea;	
    }
    .agenda th{
    	 border-bottom: 1px solid #999;
        border-right: 1px solid #999;
        font-weight: bolder;
        padding: 20px 15px 0 15px;
    }
    
    
    </style>
    <?php
    $settings["begin_werkdag"] 	= '08:00'; // Begin van werkdag 
    $settings["einde_werkdag"] 	= '17:00'; // Eind tijd van werkdag
    $settings["tijd_stappen"] 	= '+30 minutes'; //cell span grote 
    $settings["start_year"] 	= "2017"; // Jaar van de week die je wil laten zien
    $settings["start_week"] 	= "16"; 	// Weeknr die je wil laten zien. 
    
    
    define('stapgrote',strtotime($settings["tijd_stappen"]) - time()); // Grote van de stappen berekenen
    define('start_timestamp',strtotime($settings["start_year"] .'W'.$settings["start_week"].' '.$settings["begin_werkdag"])); // begin datum omzetten naar timestamp
    define('einde_timestamp',strtotime($settings["start_year"] .'W'.$settings["start_week"].' '.$settings["einde_werkdag"]));
    /* Het volgende is ter illustratie hoe ik aan welke waarde kom. Dit kan je natuurlijk versimpelen */
    $afspraken['oud'] = array(
    				array('start'=>'2017-04-17 9:00','end'=>'2017-04-17 9:14','titel'=>'test'),
    				array('start'=>'2017-04-20 10:30','end'=>'2017-04-20 15:00','titel'=>'Aap')
    			);
    			
    			/* Afspraken omzetten zodat we rowspan weten en de +- begin tijd hebben als array key */ 
    	foreach($afspraken['oud'] as $afspraak){
    		$round_start = (round(strtotime($afspraak['start']) / stapgrote) * stapgrote);  // Rond start tijd af naar dichtbijzijnde stap.
    		$rowspan = round((strtotime($afspraak['end']) - strtotime($afspraak['start'])) / stapgrote); // Bijkijk hoeveel rijen de afsprak inneemt
    		$rowspan 									 = $rowspan<=0?1:$rowspan;  	// Rowspan moet minimaal 1 zijn;
    		$afspraken['nieuw'][$round_start] 			 = $afspraak; 					//oude info gewoon overnemen
    		$afspraken['nieuw'][$round_start]['rowspan'] = $rowspan;					// rowspan toevoegen aan array
    		for($i = ($round_start+stapgrote);
    			$i <= ($round_start+(stapgrote*($rowspan - 1)));
    			$i=($i+stapgrote)){
    			$afspraken['bezet'][$i] = true;  // Aangeven welke tijden bezet zijn en dus geen cell hoven te krijgen. 
    		}
    	}
    
    
    echo '<table class="agenda">
    <caption>Afsprakenoverzicht Week '.$settings["start_week"].'</caption>
    <thead><tr><th></th>';
    	for($i = start_timestamp; $i <= strtotime('+6 day',start_timestamp); $i = strtotime('+1 day',$i)){
    		echo '<th>'.date('d-m',$i).'</th>';	//Datums boven aan tabel zetten//
    	}
    echo	'</tr></thead>'; 
    	for($h = start_timestamp;$h <= einde_timestamp; $h = $h + stapgrote){// Tijden door lopen
    		echo '<tr><th>'.date('H:i',$h).'</th>';	
    			for($i = $h; $i <= strtotime('+6 day',$h); $i = strtotime('+1 day',$i)){ // Dagen doorlopen. 
    				if(isset($afspraken['nieuw'][$i])){//er is een afpsraak die begind op  +- deze tijd. 
    				echo '<td class="bezet" data-timestamp="'.$i.'" data-datetime="'.date('Y-m-d H:i',$i).'" rowspan="'.$afspraken['nieuw'][$i]['rowspan'].'">';
    					echo $afspraken['nieuw'][$i]['titel'];
    				echo '</td>';
    				}elseif(empty($afspraken['bezet'][$i])){ // doe niks gezien rowspan
    					echo '<td class="vrij" data-timestamp="'.$i.'" data-datetime="'.date('Y-m-d H:i',$i).'"></td>';
    				}
    			}
    		echo '</tr>';
    	}
    echo'</table>';
    ?>
    Meer tonen

    The law is what I write down on paper

    Bewerkt één keer, laatst door MOnkNL (29 april 2017 om 14:14).

  • P.Yntema
    Gevorderd
    Berichten
    185
    • 1 mei 2017 om 16:35
    • #4

    Waarom gebruik je niet de Fullcalendar plugin?

    Bezig met een nieuw project: overhoorprogramma. Laat weten wat je ervan denkt. :)

  • L.Kok
    Elite members
    Berichten
    1.120
    Filebase Entries
    1
    • 2 mei 2017 om 08:40
    • #5

    Het is me ondertussen gelukt!
    Oplossing die ik gebruik:
    1 table waarin de dagen en uren instaan.
    Vervolgens een table erover leggen waarin de afspraken aan de hand van position absolute en top positie gepositioneerd worden.

    Reden waarom geen plugin te gebruiken:
    Ik verkies alles zelf te maken met eigen code omwille van onderhoudbaarheid en flexibiliteit.

    Tevens blijft het ook altijd een leerproces als je nieuwe manieren moet zoeken om je eigen niveau omhoog te krikken.

    Met vriendelijke groet,

    L.Kok

Registratie

Nog geen account? Registreer je nu en word deel van onze community!

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 3 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design