You are not logged in.

wcf.regNote.message

Anjaka

Beginner

  • "Anjaka" started this thread

Posts: 4

  • Send private message

1

Sunday, February 20th 2011, 10:57am

Kalenderwoche wird in den kleinen KWs ohne 0 übergeben

Hallo alle miteinander,

ich versuche schon seit Tagen eine Problem zu lösen, sicherlich ein kleines Problem, aber da ich mich mit Java Script und PHP überhaupt nichjt auskenne,
komme ich natürlich auch nicht zu einer Lösung.

Mein Problem ist folgendes.
Ich habe mir vor längerer Zeit ein Script programmieren lassen das die Kalenderwoche berechnet und in einem Template ausgibt.
Dort kann man dann eine Datei aufrufen die vorher in den entsprechenden Ordner auf dem Webspace abgelegt wurde.
Die Order sind von kw01 - kw53 durchnummeriert.
Das funktionert auch, zumindest bedingt, bei allen Kalenderwochen die aus 2 Ziffern bestehen, also ab KW 10.
Bei den einzifferigen KWs funktioniert es nicht, denn es wird anstatt meineDatei.php?08 nur meineDateiphp?8 aufgerufen.
Bin völlig aufgeschmissen. Wo wird diese 0 Unterdrückt?

Würde mich sehr freuen wenn mir jemand helfen könnte.

Gruß Anjaka

Anjaka

Beginner

  • "Anjaka" started this thread

Posts: 4

  • Send private message

2

Sunday, February 20th 2011, 1:22pm

Vielleicht sollte ich auch mal den Code posten, ich Dumme. :rolleyes:


Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 var Monat = new Array("Januar", "Februar", "März", "April", "Mai", "Juni","Juli", "August", "September", "Oktober", "November", "Dezember"); 
var Tag = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); 
var DP = new Array(" ","<b>:</b>"); 
var DP_counter=0; 
var tim=null; 
function meals() 
{ 
clearTimeout(tim); 
mz=document.getElementById('mahlzeit'); 
today = new Date(); 
week= getWeekNr(today); 
document.getElementById('wt').innerHTML=Tag[today.getDay()]; 
document.getElementById('tag').innerHTML=today.getDate(); 
document.getElementById('monat').innerHTML=Monat[today.getMonth()]; 
document.getElementById('jahr').innerHTML=takeYear(today); 
document.getElementById('kw').innerHTML=week; 
msecs=today.getTime(); 
for(i=0;i<=3;i++) 
{ 
today.setTime(msecs+(i*7*24*60*60*1000)); 
document.getElementById('kw'+(i+1)).innerHTML=getWeekNr(today); 
document.getElementById('bh'+(i+1)).innerHTML="<a href='meineDatei.php?"+(getWeekNr(today))+"bh' target='_new'> Karte </a>"; 
document.getElementById('hdk'+(i+1)).innerHTML="<a href='meineDatei.php?"+(getWeekNr(today))+"hdk' target='_new'> Karte </a>"; 
} 
clock(); 
} 
function getWeekNr(today) 
{ 
Year = takeYear(today); 
Month = today.getMonth(); 
Day = today.getDate(); 
now = Date.UTC(Year,Month,Day+1,0,0,0); 
var Firstday = new Date(); 
Firstday.setYear(Year); 
Firstday.setMonth(0); 
Firstday.setDate(1); 
then = Date.UTC(Year,0,1,0,0,0); 
var Compensation = Firstday.getDay(); 
if (Compensation > 3) Compensation -= 4; 
else Compensation += 3; 
NumberOfWeek = Math.round((((now-then)/86400000)+Compensation)/7); 
return NumberOfWeek; 
} 

function takeYear(theDate) 
{ 
x = theDate.getYear(); 
var y = x % 100; 
y += (y < 38) ? 2000 : 1900; 
return y; 
} 
function clock() 
{ 
time=new Date(); 
document.getElementById('uhr').innerHTML=time.getHours()+DP[DP_counter++]+((time.getMinutes()<10) ? "0"+time.getMinutes(): time.getMinutes())+' Uhr'; 
DP_counter=DP_counter&1; 
tim=setTimeout("clock()",1000); 
}



Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<? 

include "config.inc.php"; 


function GetFile($ort,$woche) 
{ 
$path="./kw".sprintf("%02d",$woche); 
if(!stat($path)) 
{ 
?> 
<h1>Es konnte kein Speiseplan gefunden werden.</h1> 
<? 
exit(); 
} 
$date=0; 
$current_entry=""; 
$d=dir($path); 
while (false !== ($entry = $d->read())) 
{ 
if( ($entry==".") || ($entry=="..")) 
{ 
continue; 
} 
if((substr(strtolower($entry),0,1)=="h")&&($ort=="hdk")) 
{ 
$xx=stat($path."/".$entry); 
if($xx['ctime']>$date) 
{ 
$date=$xx['ctime']; 
$current_entry=$path."/".$entry; 
} 
} 
if((substr(strtolower($entry),0,1)=="b")&&($ort=="bh")) 
{ 
$xx=stat($path."/".$entry); 
if($xx['ctime']>$date) 
{ 
$date=$xx['ctime']; 
$current_entry=$path."/".$entry; 
} 
} 
} 
if($current_entry!="") 
{ 
header("Location: ".$current_entry); 
exit; 
} 
?> 
<h1>Es konnte kein Speiseplan gefunden werden.</h1> 
<? 
} 
// 
// main 

$woche=substr($_SERVER["QUERY_STRING"],0,2); 
$ort=substr($_SERVER["QUERY_STRING"],2,3); 

GetFile($ort,$woche); 
?>


Gruß Anjaka

This post has been edited 1 times, last edit by "Anjaka" (Feb 20th 2011, 1:54pm)


Prometheus

Administrator

Posts: 3,278

  • Send private message

3

Monday, February 21st 2011, 9:10am

Ohne mir den Quellcode genauer anzuschauen vermute ich liegt es an der Behandlung der KW. Das heißt wenn die KW als Integer übergeben wird kann sie keine führende 0 haben. Integer sind ganzzahlige Werte. Die KW muss somit als String übergeben werden damit die 0 am Anfang erhalten bleibt. Du musst schauen wo der Link erzeugt wird und dann den Weg verfolgen wo die KW her kommt und optimalerweise am Anfang dann eingreifen und die Variable zwingen die KW als String zu übergeben.

$var = 1; <--- Integer
$var = "1"; <--- String
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

Anjaka

Beginner

  • "Anjaka" started this thread

Posts: 4

  • Send private message

4

Monday, February 21st 2011, 10:09am

Hallo und danke erst einmal.
Ich denke auch das es irgendwo nur an etwas winzigem liegt, aber ich arbeite im grafischen Bereich
und programmieren ist leider nicht meine Welt, deshalb habe ich mir damals das Script auch programmieren lassen.
Erreiche den Programmierer aber leider nicht mehr.

Ich probiere schon seit Tagen völlig willenlos Kleinigkeiten zu ändern, aber ohne Erfolg.

Überbrücken könnte ich die einziffrigen KWs indem ich gleich im Link die 0 einsetze, aber das hilft nur bis zur 9 KW
und danach müßte ich es wieder rückgängig machen.


Aus diesem Link

Source code

1
document.getElementById('bh'+(i+1)).innerHTML="<a href='meineDatei.php?"+(getWeekNr(today))+"bh' target='_new'> Karte </a>";


würde dieser werden

Source code

1
document.getElementById('bh'+(i+1)).innerHTML="<a href='meineDatei.php?"+"0"+(getWeekNr(today))+"bh' target='_new'> Karte </a>";

Im nächsten Jahr stehe ich halt wieder vor diesem Problem.



Gruß Anjaka

Prometheus

Administrator

Posts: 3,278

  • Send private message

5

Monday, February 21st 2011, 2:56pm

Dann setz mal an der Stelle wo die Zeile steht folgendes ein.

Source code

1
2
3
4
5
if (getWeekNr(today) < 10) {
document.getElementById('bh'+(i+1)).innerHTML="<a href='meineDatei.php?"+"0"+(getWeekNr(today))+"bh' target='_new'> Karte </a>";
} else {
document.getElementById('bh'+(i+1)).innerHTML="<a href='meineDatei.php?"+(getWeekNr(today))+"bh' target='_new'> Karte </a>";
}


das sollte das Problem umgehen. Wobei es dennoch besser wäre das Problem an der richtigen Stelle zu packen.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

Anjaka

Beginner

  • "Anjaka" started this thread

Posts: 4

  • Send private message

6

Tuesday, February 22nd 2011, 10:40am

Ich danke dir, das paßt so.
Hatte gar nicht mehr damit gerechnet eine hier Lösung zu finden.
Wie kann ich das jetzt gutmachen?

Gruß Anjaka :cbcool:

Prometheus

Administrator

Posts: 3,278

  • Send private message

7

Thursday, February 24th 2011, 11:48am

Komm einfach wieder und schreib weiter Fragen oder auch mal Antworten das reicht ;)
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

bauser

Intermediate

Posts: 384

Occupation: Senior Software Engineer

  • Send private message

8

Monday, February 28th 2011, 12:24pm

ich will ja nicht nörgeln, aber man kann auch einfach eine variable machen, in die der wert von getWeekNr(today) geschrieben wird und kann dann mit der variable arbeiten. so würde nur einmal diese funktion ausgeführt.

in dem aktuellen fall wird die funktion immer 2 mal ausgeführt, was im zeifelsfalle sogar (auch wenns eher unrealistich ist) zu fehlern führen kann
I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!