schleifen problem (for mit if)
herbert
- php
hi leute!
ich hab ein mir völlig unverständliches problem.
ich habe 3 if-abfragen innerhalb einer for-schleife.
sobald ein bestimmtes element einer if-schleife true ist, bleibt
der code irgendwie hängen.
hier der quell-source:
<?php
$bh = 8;
$bm = 1;
$eh = 10;
$em = 1;
$akth = 8;
$aktbgnext = 0;
for($g=1; $g<=14; $g++)
{
if ($akth == $bh){if ($bm == "0"){$hh1 = "symbol_s"; $hh2 = "symbol_s";} if ($bm == "1"){$hh1 = ""; $hh2 = "symbol_s";}}
if ($akth == $eh){if ($em == "0"){$hh1 = ""; $hh2 = "";} if ($em == "1"){$hh1 = "symbol_e"; $hh2 = "";}}
if (($akth >= $bh && $akth <= $eh) && ($akth != $bh && $akth != $eh)){$hh1 = "symbol_f"; $hh2 = "symbol_f";}
print" <tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle'>
$hh1
</td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' background='../../bilder/bilder/dotted.gif' bgcolor='#BACAD7'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'>
</td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle'>
$hh2
</td>
</tr>";
$akth = $akth+1;
}
?>
hier das gekürzte ergebnis (zeilen wiederholen sich bis zum ende derfor-schleife):
<table width='114' border='0' cellpadding='0' cellspacing='0'>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#DDE6EC'> </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' background='../../bilder/bilder/dotted.gif' bgcolor='#BACAD7'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#DDE6EC'>
symbol_s </td>
</tr><tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' bgcolor='#333333'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr> <tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#C9D6E0'>
symbol_f </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' background='../../bilder/bilder/dotted.gif' bgcolor='#BACAD7'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#C9D6E0'>
symbol_f </td>
</tr><tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' bgcolor='#333333'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr> <tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#DDE6EC'>
symbol_e </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' background='../../bilder/bilder/dotted.gif' bgcolor='#BACAD7'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#DDE6EC'> </td>
</tr><tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' bgcolor='#333333'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr> <tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#C9D6E0'>
symbol_e </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' background='../../bilder/bilder/dotted.gif' bgcolor='#BACAD7'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr>
<tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td height='18' align='center' valign='middle' bgcolor='#C9D6E0'> </td>
</tr><tr align='left' valign='top' bgcolor='#BACAD7' class='text_s'>
<td align='center' valign='middle' bgcolor='#333333'>
<img src='../../bilder/bilder/transparent.gif' width='1' height='1'> </td>
</tr></table>
habe das problem schon gelöst, hatte das unset am ende der schleife vergessen...
Moin Herbert,
for($g=1; $g<=14; $g++){
if($akth == $bh){
$hh1 =($bm) ? "" : "symbol_s";
$hh2 = "symbol_s";
}
if($akth == $eh){
$hh1 =($em) ? "symbol_e" : "";
$hh2 = "";
}
if($akth > $bh && $akth < $eh)
$hh1 = "symbol_f";
$hh2 = "symbol_f";
}
print $html_out;
$akth++;
}
leider geht aus Deiner Problembeschreibug nicht hervor, wo Dein Code "irgendwie hängen bleibt". Vermutlich meist Du, weil nach dem dritten Durchlauf keine der angegebenen Bedingungen mehr eintreten kann, da $akth dann den Wert 11 hat, das Ausleibende umdefinieren der Variablen $hh1 und $hh2. Da hilft nur eine problemorientiertere Herangehensweise, bei der man Dir ohne weitere Informationen nicht zur Hand gehen kann.
Gruß aus Berlin!
eddi