Ausgabe in Spalten geht nicht

low-group

Erfahrenes Mitglied
hi,

irgendwie klappt meine Ausgabe in 2 Spalten nicht und weiß nicht wieso.

hier mal mein Code:

PHP:
$r=0;
foreach ($items as $i)
{
blabla...
eval ("\blabla");

$r++;
if (!($r % 2)) echo "</tr><tr>";
}

mit diesem Code wird mir alles in einer Zeile ausgegeben und das <tr> ignoriert, woran liegt das ? Müßte doch eigentlich gehen, nur wieso nicht?
 
PHP:
print "<table><tr>";
$c=0;//Count Wert
$p=3;//Nach 3 Spalten Neue Zeile
foreach($tp as $tr){
 print "<td>" . $tr . "</td>";
 $c++;
 if($c==$p-1)
  {
   print "</tr><tr>";
  $c=0;  
}
}
print "</tr></table>"
 
Also ich weis zwar nicht, was du für eine Tabelle hast aber bei mir gibt er sie mir mit neuer Zeile aus:

Hier nochmal ein ähnliches Beispiel:

PHP:
<?php
$c_spalte=0;//wird hoch gezählt
$c_spalten_wechsel=4;//Nach 4 Durchläufen wird neue Zeile generiert
print "<table width=500><tr>";
$tf=array("Test1", "Test2","Test3","Test4", "Test5","Test6","Test7","Test8","Test9","Test10");
foreach($tf as $tp)
	{
		$c_spalte++;
		print "<td>" . $tp . "</td>";
		if($c_spalte==$c_spalten_wechsel)
			{
				print "</tr><tr>";
				$c_spalte=0;	
			}
	}
print "</tr></table>";

?>

//edit:PHP Tags geschlossen
 
hier mal der ganze Code dazu:

Tabelle:

PHP:
 <table cellpadding="{$style['tableincellpadding']}" cellspacing="{$style['tableincellspacing']}" border="{$style['tableinborder']}" class="tableinborder" style="width:{$style['tableinwidth']}" align="center" valign="top">
<tr class="tabletitle">
 <td colspan=1><p align="left" ><span class="smallfont"><b>Shop</b></span>
</td>
</tr><tr>
$shopbit
</tr>
<tr>
<td class="tableb" id="tableb" bgcolor="{tablecolorb}" colspan="1" align="center">
<span class="smallfont">
<a href="test1.php?page=$zur">Vorrige Seite</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Seite $page  von $pageCount Seiten &nbsp; $total &nbsp;&nbsp;&nbsp;&nbsp;

<a href="test1.php?page=$vor">Nächste Seite</a>

<br /><br />
</td></tr>
       
</table>

PHP-Code:
PHP:
$c_spalte=0;
$c_spalten_wechsel=2;

foreach ($items as $i)
{



$c_spalte++;

eval ("\$shopbit .= \"".$tpl->get("shop_bit")."\";");
if($c_spalte==$c_spalten_wechsel) 
{ 
print "</tr><tr>"; 
$c_spalte=0; 
} 

}

der code in eval fängt mit <td> an und endet mit </td>

und da wird alles in einer Zeile dargestellt. :(

Hab keinen Plan woran das liegt.
 
Das kann ja auch nichts werden.

Hier schau dir das mal an:
PHP:
eval ("\$shopbit .= \"".$tpl->get("shop_bit")."\";");

So und jetzt direkt darauf:
PHP:
print "</tr><tr>";
Verstehe mich nicht falsch aber ich glaube du hast das noch nicht ganz kapiert.
Es ist korrekt, dass nun deine Inhalte in der Variable $shopbit gespeichert werden. Doch sie werden nicht, ich wiederhole mich, nicht auf die HTML Seite "momenten" generiert. Die dazugehörigen Befehle bzw. Funktionen hast du vergessen mit einzuwirken bzw. ist so gedacht.

Doch auf der anderen Seite soll dein Programm eine neue Zeile anfangen wenn eine bestimmte Zahl erreicht ist. Das macht er auch, nur nicht im Bereich deines Contents da die Variable ganz woanders bzw. viel später ausgegeben wird. Wenn du auf deine Homepage schaust, müsstest du ganz viele "</tr><tr>" Tags hintereinander sehen.

Zu der ProblemLösung:

Versuche einmal folgendes:
Füge in die "Neue Zeilenabfrage" folgendes ein bzw. ersetze:
PHP:
eval ("\$shopbit .= "</tr><tr>");
Es könnte aber auch so heißen:
PHP:
eval ("\$shopbit .= \"</tr><tr>\");
Da ich nicht weis wie deine Funktion aussieht die dies generiert, musst du vielleicht etwas rumprobieren.

In diesem Sinne
 
ah super,

haben einfach eine neue tpl angelegt mit </tr><tr> und für die neue Ausgabe dies genommen:

PHP:
eval ("\$shopbit .= \"".$tpl->get("shop_tr")."\";");


THX nochmal for help :-)
 
Zurück