php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem mit KW Auswahl


 
ackrite
11-09-2008, 13:08 
 
Hi Mädels und Jungs,

ich habe ein Problem und zwar habe ich einen Kalender erstellt, der immer eine Woche anzeigt. Leider funktioniert die KW auswahl für die Jahre 2008 und 2007 nicht, für alle anderen Jahre geht das könnt ihr mir helfen?
Ich poste mal das script meiner 2 Dateien

Datei Date.php

<?php
// aktuelle Zeit
$today = time();
$datum = getdate($today);

// für Wochentagsanzeige
$days = Array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag");

// aktuelles Datum
$tag = date("j");
$month = date("n");
$year = date("Y");

//aktueller Tag
$daymaker = mktime(0, 0, 0, $month, $tag, $year); //Unixzeit aktueller Tag
$day2 = date("d.m.Y", $daymaker); //heutige Datum
$today_var = getdate($daymaker);
$thisday = $today_var[wday]; //Tag der Woche
$kw = date("W"); //aktuelle KW

//echo $day2;
if($day == "Mon"){$day = "Montag";}
if($day == "Tue"){$day = "Dienstag";}
if($day == "Wed"){$day = "Mittwoch";}
if($day == "Thu"){$day = "Donnerstag";}
if($day == "Fri"){$day = "Freitag";}
if($day == "Sat"){$day = "Samstag";}
if($day == "Sun"){$day = "Sonntag";}

// Anzahl Kalenderwochen für Auswahlmenu
if($jahrwahl != "")
{
$ende_jahr = mktime(0,0,0,12,31,$jahrwahl);
$letzte_kw = date("W",$ende_jahr);
}
else
{
$ende_jahr = mktime(0,0,0,12,31,$year);
$letzte_kw = date("W",$ende_jahr);
$jahrwahl = $year;
}

// Jahre für Auswahlmenu
$year_v = $jahrwahl-1;
$year_n = $jahrwahl+1;


// falls Formular nicht abgeschickt wurde, wird aktuelle Woche und Jahr angezeigt
if($kwwahl == "")
{
$kwwahl = $kw;
}
if($jahrwahl =="")
{
$jahrwahl = $year;
}

// andere Woche / Jahr inklusive Berücksichtigung von Schaltjahren
for($a=0; $a<=6; $a++)
{
$erster = mktime(0,0,0,1,1,$jahrwahl);
$wtag = date('w',$erster);
if ($wtag <= 4) // Donnerstag oder kleiner: auf den Montag zurückrechnen.
{
$montag = mktime(0,0,0,1,1-($wtag-1),$jahrwahl);
}
else // auf den Montag nach vorne rechnen.
{
$montag = mktime(0,0,0,1,1+(7-$wtag+1),$jahrwahl);
}
$firstmonday = $montag;
$mon_monat = date('m',$firstmonday);
$mon_jahr = date('Y',$firstmonday);
$mon_tage = date('d',$firstmonday);
$tage = ($kwwahl-1)*7;
$mondaykw = mktime(0,0,0,$mon_monat,$mon_tage+$tage,$mon_jahr);

$first_day = $mondaykw + $a * 86400;

$tag_x[] = date("d.m.Y", $first_day);
}
?>


Datei oben.php


<?
include ("date.php");
?>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>

<div align="center"><font size="5"><strong> Wochenplaner<br>
</strong></font> </div>
<?
//echo $letzte_kw;
//echo $kwwahl."<br>";
//echo $jahrwahl."<br>";
?>
<form name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p align="center">Woche:
<select name="kw_select" onChange="MM_jumpMenu('self',this,0)">
<?php
// Wochen-Auswahl
if($kwwahl != "" AND $kwwahl != $kw)
{
for($i=1; $i<=$letzte_kw; $i++)
{
echo "<option value=index.php?kwwahl=".$i."&jahrwahl=".$jahrwahl."";
echo ($i == $kwwahl)?" SELECTED":"";
echo ">KW ".$i."</option>\n";
}
}
else
{
for($i=1; $i<=$letzte_kw; $i++)
{
echo "<option value=index.php?kwwahl=".$i."&jahrwahl=".$jahrwahl."";
echo ($i == $kw)?" SELECTED":"";
echo ">KW ".$i."</option>\n";
}
}
?>
</select>
&nbsp;&nbsp;Jahr:
<select name="jahr_select" onChange="MM_jumpMenu('self',this,0)">
<?php
// Jahres-Auswahl
if($jahrwahl != "" AND $jahrwahl != $year)
{

for ( $x=$year_v; $x<=$year_n; $x++ )
{
echo "\t<option value=index.php?kwwahl=".$kwwahl."&jahrwahl=".$x."";
echo ($x == $jahrwahl)?" SELECTED":"";
echo ">$x\n";
}
}
else
{
for ( $x=$year_v; $x<=$year_n; $x++ )
{
echo "\t<option value=index.php?kwwahl=".$kwwahl."&jahrwahl=".$x."";
echo ($x == $year)?" SELECTED":"";
echo ">$x\n";
}
}
?>
</select>
&nbsp;
<input type="button" name="submit2" value="Heute" onClick="self.location.href='index.php'">
&nbsp;
<input type="button" name="submit_new" value="eintragen" onClick="self.location.href='data/new.php'">
</p>
</form>


Hoffe ihr könnt etwas finden.

Gruß

Ackrite

 
unset
11-09-2008, 13:17 
 
Ich habe mir deine Problembeschreibung zugegeben nicht komplett durchgelesen, aber ich weise vorsorglich schonmal darauf hin, dass die date-Funktion mit W als erste Kalenderwoche die ausgibt, die als erstes komplett in einem Jahr ist. In Deutschland (und meines Wissens allen deutschsrachigen Ländern) ist die erste Kalenderwoche aber die, die als erstes mindestens 4 Tage in einem Jahr hat. Dadurch kann es schonmal vorkommen, dass es in einem Jahr zweimal die "erste" Kalenderwoche gibt (wie dieses): Einmal am Anfang und einmal am Ende. Mit den str?time-Funktionen solltest du mit V die korrekte Wochennummer bekommen.

 
ackrite
11-09-2008, 13:35 
 
Ich bin leider nocht nicht sooo der crack in PHP.

Was müsste ich denn jetzt ändern?

 
ackrite
11-09-2008, 14:48 
 
Wenn ich mir mit
$kw= date ("W");
echo $kw;

die Woche ausgeben lasse wird mir die korrekte KW ausgegeben. Nur kann ich im Popdownmenü keine KW auswählen dort steht beim Jahr 2008
immer nur eine 1 beim Jahr 2009 funktioniert es reibungslos.

Das kann dann ja nicht so wirklich das Problem sein......:dontknow:

 
unset
11-09-2008, 14:53 
 
Stimmt. Hab Blödsinn erzählt. Das ist schon lange nicht mehr so ;)

Trotzdem würde ich mit den str?time-Funktionen arbeiten. "+1 year" ist halt schon Praktisch ;)

 
ackrite
11-09-2008, 15:35 
 
Irgendwie ist mir nicht klar wie du das meinst :confused:

An welcher Stelle muss ich denn den Quelltext überarbeiten???

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:08 Uhr.