• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 23 december 2025 om 16:43
  • Developer Gezocht

    tcbhome 21 december 2025 om 15:07
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05
  • 302 Nieuwe Domeinnamen November 2025

    shiga 1 december 2025 om 13:07

Agenda afspraken

  • L.Kok
  • 26 april 2017 om 11:26
  • L.Kok
    Elite members
    Ontvangen Reacties
    35
    Berichten
    1.117
    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>
    Toon Meer

    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
    YoungVision

  • Guest, wil je besparen op je domeinnamen? (ad)
  • L.Kok
    Elite members
    Ontvangen Reacties
    35
    Berichten
    1.117
    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
    YoungVision

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    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>';
    ?>
    Toon Meer

    The law is what I write down on paper

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

  • P.Yntema
    Intermediate
    Ontvangen Reacties
    7
    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
    Ontvangen Reacties
    35
    Berichten
    1.117
    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
    YoungVision

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    Jeffrey.Hoekman 26 december 2024 om 10:26
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

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

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