Seite 1 von 1
While-Schleife - Daten vergleichen
Verfasst: 02.01.2007 14:33
von SKYSURFER2002
Hallo,
ich habe ein kleines Problem mit einer while-Schleife. Ich möchte eine Variable mit einer aus dem letzten durchlauf vergleichen. Mein Problem ist nicht das vergleichen, sondern wie ich die Variable vom letzten Durchlauf beim jetzigen Durchlauf zur Verfügung habe. Ist das überhaupt möglich???
SKYSURFER
Verfasst: 02.01.2007 14:46
von Olli Oberhausen
Übergeb die aktuelle variable doch einfach an eine andere.
$letzte = $aktuelle;
Die hast du beim nächsten durchlauf immernoch mit den alten werten.
Olli
Verfasst: 02.01.2007 14:47
von gn#36
Wo ist das Problem?
Eine while Schleife ändert von sich aus ja keine Variablen. Außerdem kannst du die Variable doch einfach kurz zwischenspeichern.
Beispiel:
Code: Alles auswählen
$var = 0;
while($var < 40)
{
$var_alt = $var;
$var++;
if($var_alt % 2 == $var % 3)
{
echo "\n<br>x = $var<br>x-1 = $var_alt <br><br> Es gilt: Der Rest der Division (x-1)/2 ist gleich dem Rest der Division x/3";
}
}
Verfasst: 02.01.2007 15:44
von SKYSURFER2002
das ist ne idee. hätte nicht gedacht, dass das so einfach ist.
Werde es gleich mal testen.
Danke
SKYSURFER
Verfasst: 02.01.2007 16:49
von SKYSURFER2002
Hallo,
leider klappt das noch nicht so wie ich mir das vorgestellt hatte. Hier mal mein quellcode:
Code: Alles auswählen
...
$abfrage = "SELECT * FROM $tabelle_kat ORDER BY sortierung ASC";
$ergebnis = mysql_query($abfrage);
$datumjetzt = time();
$jahralt = strftime("Y",$datumjetzt);
$num = 1;
while($row = mysql_fetch_object($ergebnis))
{
$id = $row->id;
$titel = $row->titel;
$datum = $row->datum;
$datum_format = "%d.%m.%Y";
$datum1 = strftime($datum_format,$datum);
$sortierung = $row->sortierung;
$link = append_sid("bilder.$phpEx?action=gal&id=$row->id");
$jahreszahl = "%Y";
$jahrneu = strftime($jahreszahl,$datum);
if( $num == 1)
{
$template->assign_block_vars('JAHR', array(
'JAHR' => $jahrneu,
));
$template->assign_block_vars('KAT', array(
'NUM' => $NUM,
'TITEL' => $titel,
'DATUM' => $datum1,
'SORTIERUNG' => $sortierung,
'U_LINK' => $link,
'monat' => $monat,
));
}
else
{
if ( $jahrneu == $jahralt)
{
$template->assign_block_vars('KAT', array(
'NUM' => $NUM,
'TITEL' => $titel,
'DATUM' => $datum1,
'SORTIERUNG' => $sortierung,
'U_LINK' => $link,
'monat' => $monat,
));
}
else
{
$template->assign_block_vars('JAHR', array(
'JAHR' => $jahrneu,
));
$template->assign_block_vars('KAT', array(
'NUM' => $NUM,
'TITEL' => $titel,
'DATUM' => $datum1,
'SORTIERUNG' => $sortierung,
'U_LINK' => $link,
'monat' => $monat,
));
}
}
$num++;
$jahralt = $jahrneu;
}//ende while
...
Template
Code: Alles auswählen
...
<table width="370" cellpadding="0" cellspacing="0" border="1">
<!-- BEGIN JAHR -->
<tr>
<td class="text" height="28" colspan="4">{JAHR.JAHR}</td>
</tr>
<!-- END JAHR -->
<!-- BEGIN KAT -->
<tr>
<td class="text" height="28">{KAT.NUM}</td>
<td class="text" height="28"><a href="{KAT.U_LINK}">{KAT.TITEL}</a></td>
<td class="text" height="28">{KAT.SORTIERUNG}</td>
<td class="text" height="28">{KAT.DATUM}</td>
</tr>
<!-- END KAT -->
</table>
...
Bei der Ausgabe bekomme ich dann ein falsches Ergebnis.
Es ist so gedacht, dass alle Kategorien unter dem Dazugehörigen Jahr angezeigt werden. Also so:
2006
1
2
3
4
2005
5
6
7
...
aber bei mir wird das Ganze so angezeigt:
2006
2005
1
2
3
4
5
...
Warum???
SKYSURFER
Verfasst: 02.01.2007 16:56
von gn#36
Um das zu machen musst du die Blöcke verschachteln.
Du kannst dir jeden Block vorstellen wie eine Schleife. Die wird dann so lange durchlaufen wie es noch Daten gibt die dazu gehören. 2005 und 2006 gehören zur Schleife "Jahr", die restlichen aber zur Schleife "kat". Da du beide Schleifen hintereinander aufführst werden erst die Daten von Jahr und dann die von Kat ausgegeben.
Eine korrekte Verschachtelung sähe so aus:
Code: Alles auswählen
Template:
<!-- BEGIN jahr -->
{jahr.JAHR}
<!-- BEGIN jahr.kat -->
{jahr.kat.ERSTE_VARIABLE}
{jahr.kat.ZWEITE_VARIABLE}
<!-- END jahr.kat -->
<!-- END jahr -->
Die Zuweisungen im PHP müssen dann so aussehen:
Code: Alles auswählen
$template->assign_block_vars('jahr',array(...));
$template->assign_block_vars('jahr.kat',array(...));
Verfasst: 02.01.2007 17:56
von SKYSURFER2002
alles klar. habs hinbekommen.
Danke
SKYSURFER