if = wahr, obwohl X != Y ist ???
DEAD-THC
- perl
Hallo,
ich hätte da mal nen problem *lol*
also wie man in der angegebenen URL sieht, ist das ganze so etwas wie ein 14tägier kalender, der vom heutigen datum 7 tage zurück zählt und dann anfängt 14tage zu zählen - das geht soweit gut wie man am datum erkennen kann passt das auch...
während diesen 14tagen wird gecheckt ob jmd., aus einer liste geburtstag hat. Die test liste sieht so aus:
# NAME|GEBURTSTAG
blablabla|01/09/76
hmpf|31/08/92
rababer|02/09/01
ziggi|04/09/23
coffee|28/08/86
...|28/10/84
???|02/11/96
wie man an der liste sieht sind geburtstage für September definiert, werden aber nicht angezeigt, weil anscheind die if-anweisung nicht wahr ist...
#########################
$stamp = time-(86400*7); # heute - 7 tage / unix-timestamp
$xxz=1; # counter day-colors
for($i=1; $i<=14; $i++){
foreach $line (@gebtag) { #start foreach @gebtag
chomp $line;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($stamp);
$mon++;
($geburtstagskind, $geburtstag) = split(/|/,$line);
($bday,$bmonth,$byear) = split(///, $geburtstag);
@time=localtime($stamp);
$bmon=$bmonth-1; # debug
$yza=@time[4]; # debug
if ($bday eq @time[3] && $bmonth-1 eq @time[4]) {
$birthdays .= qq~$geburtstagskind<br>~;
}
} # end foreach (@gebtag)
$date = &bdaylistdate($stamp);
if($xxz eq 1){
$color = $miscbackone; $xxz++;
}
else {
$color = $miscbacktwo; $xxz=1;
}
if(time == $stamp){
$color = "#FF8833";
}
$output .= qq~
<td width="94px" valign=top bgcolor="$color" height=100>
<font face="$font" size="$dfontsize2"><b>$date</b></font><br>debug: $bmon = $yza<br>
<font face="$font" size="$dfontsize1">$birthdays</font>
</td>~;
if($i == 7){
$output .= qq~</tr><tr>~;
}
$stamp = $stamp+86400; # + 1 tag
$birthdays = ""; # clear for next day
}
###################
wie man erkennt ist das was bei der seite bei debug steht nix anderes als das was als was als 2. da -> "if ($bday eq @time[3] && $bmonth-1 eq @time[4])" abgefragt wird...
wie kann etwas wahr sein wenn es wie man auf der seite sieht 10=7 ist? wahr ist es weil ja der geburtstag angezeigt wird...
und warum ist $bmonth immer 10 obwohl er den wert aus der liste holt (die foreach für die liste hab ich außerhalb der schleife und nicht hier geposted)
hier holt er sich $bmonth:
($geburtstagskind, $geburtstag) = split(/|/,$line); #zeile aus der liste
($bday,$bmonth,$byear) = split(///, $geburtstag); # spliten des $geburtstag in tag, monat, jahr (jahr brauche ich später)
ich hab absolut keine ahnung was der da macht?
vielleicht kann mir jmd helfen...
vielen dank - THC
PS: ich weiß das der code noch nicht ganz optimiert ist *g*
anderes als das was als was als 2. da -> "if ($bday eq @time[3] && $bmonth-1 eq @time[4])" abgefragt wird...
Du weisst, das 'eq' nicht dasselbe ist wie '==' ?
'eq' gilt fuer Strings... '==' fuer Zahlen.
Und Elemente aus einem Arry spricht man eigentlich so an $array[num].
Versuchs mal so:
if (($bday == $time[3]) && (($bmonth-1)== $time[4])) { }
Ciao,
Wolfgang
Versuchs mal so:
if (($bday == $time[3]) && (($bmonth-1)== $time[4])) { }
*mitderhandaufmkopfschlägt* ja so funzt es...
VIELEN DANK xwolf