Avatar billede s0mmer Nybegynder
11. marts 2009 - 18:32 Der er 4 kommentarer og
1 løsning

Kalender med timefordeling

Hej eksperter,

Jeg har lidt problemer med en kalender.
Jeg kan fint lave en over måneder, men jeg ønsker en ugevisning. Hvor der for hver uge er time inddeling. Ligeså gmail kalenderen.

En der kan vise et loop som kører en uge igennem og loop time inddelingen igennem?


En god forklaring om hvordan det skal laves kan også få points..
Avatar billede jakobdo Ekspert
11. marts 2009 - 21:00 #1
Noget i stil med:

<?php
//http://www.eksperten.dk/spm/867674

$days = array('Man','Tirs','Ons','Tors','Fre','L&oslash;r','S&oslash;n');
echo '<table><tr>';
for($d = 0; $d < count($days); $d++){
    echo '<th abbr="'.$days[$d].'day">' . $days[$d] . '</th>';
}
echo '</tr>';

for($i = 0; $i < 24; $i++){
    echo '<tr>';
    for($d = 0; $d < count($days); $d++){
        echo '<td>' . sprintf('%02d:00',$i) . '</td>';
    }
    echo '</tr>';
}
echo '</table>';

?>
Avatar billede s0mmer Nybegynder
13. marts 2009 - 18:44 #2
jakobdo > Det er jo ikke helt nok :(

jeg har prøvet noget lign, men det virker ikke helt:

<?

if ($_GET["day"] == "" || $_GET["month"] == "" || $_GET["year"] == "")
{
    $date     = time();
    $day     = date('d', $date);
    $month     = date('m', $date);
    $year     = date('Y', $date);
}
else
{
    $day     = $_GET["day"];
    $month     = $_GET["month"];
    $year     = $_GET["year"];
}

$days_in_month = cal_days_in_month(0,$month,$year);

if (($day + 6) > $days_in_month)
{
        $endDay = $days_in_month;
        $daysLeft = ($day + 6) - $days_in_month;
        echo $daysLeft;
}
else
{
    $endDay = $day + 6;
}

$interval = 5;
$interval = $interval * 7; // 7 søjler
$interval = $interval + $day;

$nextWeek = mktime(0,0,0,$month,$day+7,$year);
$nextWeekDay = date('d',$nextWeek);
$nextWeekMonth = date('m',$nextWeek);
$nextWeekYear = date('Y',$nextWeek);

$first_day = mktime(0,0,0,$month,1,$year);

$title = date('F',$first_day);

$day_of_week = date('D', $first_day);

switch($day_of_week)
{
    case "Sun": $blank = 0; break;
    case "Mon": $blank = 1; break;
    case "Tue": $blank = 2; break;
    case "Wed": $blank = 3; break;
    case "Thu": $blank = 4; break;
    case "Fri": $blank = 5; break;
    case "Sat": $blank = 6; break;
}



?>

<?
echo "<table border='6' width='394'>";
echo "<tr><th colspan='60'> $title $year </th>";
echo "<tr><td></td><td>Man</td><td>Tir</td><td>Ons</td><td>Tor</td><td>Fre</td><td>Lør</td><td>Søn</td>";

$day_count = $day; // 11

echo "<tr>";

// Hvis første dag ikke er en søndag.
while ($blank > 0)
{
    echo "<td></td>";
    $blank = $blank-1;
    $day_count++;
}

$day_num = $day; // 11


while ($day_num < $interval)
{
    if ($day_count == $day) {
        echo "<td>Tiden</td>";
    }
   
    echo "<td> $day_count </td>";
    $day_num++;
    $day_count++;
   
    if ($day_count > $endDay)
    {
        echo "</tr><tr>";
        $day_count = $day;
    }
}


echo "</tr></table><br><br>";

echo "<a href='new.php?day=".$nextWeekDay."&month=".$nextWeekMonth."&year=".$nextWeekYear."'>Næste uge</a>";
?>
Avatar billede jakobdo Ekspert
14. marts 2009 - 20:24 #3
Hvad er det som ikke virker ?
Og hvad mener du med mit ikke helt er nok.
Mit svar, er jo et svar på det du spørger om.
At jeg så fra en anden tråd ved du også vil koble den sammen med db, og have en opret event knap, det nævnet jo ingen steder. :o)
Avatar billede s0mmer Nybegynder
14. marts 2009 - 20:28 #4
jakobdo > Ikke nok: Hvor ses time-intervallet i venstre side (som på gmail) og ikke mindst hvordan hænger de timer sammen med datoer?

Men jeg har fået min egen til at virke(dog med lidt ekstra funktioner. men for en god ordens skyld får i svaret):

<table width='580' border='0' cellspacing='2' cellpadding='2'>
    <tr><th colspan='60'><span class='month'><? getMonth(date('F',$first_day)); ?> <? echo $year; ?> | Uge <? echo $week; ?>: d. <? echo $day; ?> -
    <?
    if ($daysLeft == 0) {
        echo $endDay;
    }
    else {
        echo $daysLeft;
    }
    ?></span></th>
    <tr>
        <td></td>
        <td><span class='day'>Mandag</span></td>
        <td><span class='day'>Tirsdag</span></td>
        <td><span class='day'>Onsdag</span></td>
        <td><span class='day'>Torsdag</span></td>
        <td><span class='day'>Fredag</span></td>
        <td><span class='day'>Lørdag</span></td>
        <td><span class='day'>Søndag</span></td>
<?
$day_count = $day;

echo "<tr>";


$day_num = 0;
$numLeft = 0;
$i = 0;

while ($day_num < $numInterval)
{
   
    //echo $day_count;
    if ($day_count <= $days_in_month) {
        $day_count2 = 1;
        //The time
        if ($day_count == $day) {
            echo "<td><span class='time'>",$startTime + ($i * $washLength)," - ",$startTime + ($i * $washLength) + $washLength,"</span></td>";
        }
       
        //The date
        if ($todayDay == $day_count && $todayMonth == $month && $todayYear == $year) {
                echo "<td class='todayopen'><span class='normal'><a href='booktime.php?day=".$day_count."&month=".$month."&year=".$year."&startTime=",$startTime + ($i * $washLength),"'         class='schemelinks'>FRI</a></span></td>";   
        }
        else {
            echo "<td class='open'><span class='normal'><a href='booktime.php?day=".$day_count."&month=".$month."&year=".$year."&startTime=",$startTime + ($i * $washLength),"'         class='schemelinks'>FRI</a></span></td>";
        }
        $day_num++;
        $day_count++;
       
        //Restart count
        if ($day_count > $endDay && $daysLeft == 0)
        {
            echo "</tr><tr>";
            $day_count = $day;
            $i++;
        }
    }
    else {
        $endDay = $daysLeft;
       
        //The date
        echo "<td class='open'><span class='normal'><a href='booktime.php?day=".$day_count2."&month=".$month."&year=".$year."' class='schemelinks'>FRI</a></span></td>";
        $day_count2++;
        $day_num++;
        if ($day_count2 > $daysLeft) {
            echo "</tr><tr>";
            $day_count = $day;
            $endDay = $days_in_month;
            $i++;
        }

    }
}
echo "</tr></table><br><br>";
Avatar billede s0mmer Nybegynder
14. marts 2009 - 21:07 #5
Og svar..
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