Kleine Frage zu Schleife in Template

funnyzocker

Erfahrenes Mitglied
Hallo.
Für mein Bilder-Hosting Service möchte ich den Usern nun anbieten das sie sich Alben anlegen können die im Design voll auf Ihre vorstellungen angepasst werden können.
Dafür habe ich mir gedacht ich mache ein kleines "Template". Eine HTML Seite und eine PHP Seite . In der PHP werden alle Daten die erforderlich sind abgefragt und dann in der HTML ausgegeben.

Die HTML ist reines HTML. Nur die Platzhalter ($name) werden übernommen.
Nun habe ich das Problem das User viele Bilder gespeichert haben und in der HTML Seite alle Bilder angezeigt werden sollen. je 3 nebeneinander und dann nächste Zeile in der Tabelle,

Bekomme es leider nicht hin.
Hier ist die HTML
HTML:
<html>
<head>
<title>$name</title>
</head>

<body bgcolor="$sitebackground">
<table width="$tablewidth" border="1" height="365" align="center">
  <tr>
    <td valign="top"><font face="$font" color="$fontcol">$name</font></td>
  </tr>
  <tr>
    <td valign="top">$pic<br></td>
  </tr>
  <tr>
    <td valign="top">$name</td>
  </tr>

</table>
</body>
</html>

Und die PHP
PHP:
include("connect2db.inc.php");
function gettemplate($template,$endung="html")
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

$show = "SELECT picverz, pvorn, pend FROM picupload WHERE userid = '".mysql_real_escape_string($_GET['userid'])."'";
$aus = mysql_query($show);
while($bilder = mysql_fetch_array($aus))
{
$x = 0;
while($line = $bilder){
      $pic = "<tr><td><img src=/".$bilder['picverz']."/".$bilder['pvorn'].".thumb.".$bilder['pend']."></td>";
      $x++;
      if($x == 5){
           echo"ende";
      }
      
}
}
eval("dooutput(\"".gettemplate("layout")."\");");
Leider wir immer nur 1 Bild in der HTML gezeigt.

Hintergrund des ganzen ist das User sich eine Seite erstellen können wo alle Angaben zum Bild (URL) schon eingefügt sind. Diese Seite soll dann heruntergeladen werden können und die User können Sie sich in Ihrer Homepage einsetzten.
 
Du überschreibst die Variable $pic doch in jedem Durchlauf der Schleife, dann kann doch nur ein Bild angezeigt werden.
 
Das selbe .
Der Code ist nun so.
PHP:
$show = "SELECT picverz, pvorn, pend FROM picupload WHERE userid = '".$_GET['userid']."'";
$aus = mysql_query($show);
while($bilder = mysql_fetch_array($aus))
{
$x = 0;
while($x < 5){
      $pic = "<tr><td><img src=/".$bilder['picverz']."/".$bilder['pvorn'].".thumb.".$bilder['pend']."></td>";
      $x++;
      if($x == 5){
           "</tr>";
      }
      
}
}
 
Dir sollte der Modulo-Operator weiterhelfen. Außerdem musst du den Inhalt immer an die Variable $pic anhängen und diese nicht überschreiben. Außerdem solltest du aufgrund der Sicherheit vom User übergebene Daten immer evaluieren, siehe z.B. SQL-Injection.
PHP:
<?php
$show = 'SELECT picverz, pvorn, pend FROM picupload WHERE userid = ' . intval(abs($_GET['userid']));
$aus = mysql_query($show);
$pic = '<tr>';
$x = 0; $proZeile = 3;
while($bilder = mysql_fetch_array($aus))
{
	if($x % $proZeile == 0 && $x > 0)
	{
		$pic .= '</tr><tr>';
	}
	$pic .= '<td><img src="' . $bilder['picverz'] . '/' . $bilder['pvorn'] . '.thumb.' . $bilder['pend'] . '" alt="" /></td>';	
	$x++;
}  
$pic .= '</tr>';
?>
 
Zuletzt bearbeitet:
Sowas hab ich schonmal gemacht. Funktiniert hier bestens (sogar für den User zum auswählen wieviel Bilder er haben will): http://bruegae.br.ohost.de/BruegaeV2/?content=Ressourcen&category=200608Urlaub06
Code:
Code:
<table>
  <tr>
<?php
    $WannNeueZeile = 0;
	
	while(/*Du weißt ja nicht wieviele Bilder der User in seinem Album hat*/)
	  {
		$WannNeueZeile = $WannNeueZeile + 1;

                echo("<td>\n");
		echo("<img src=\"\" alt=\"\">"); //Bild blabla
		echo("</td>\n");
		
		if($WannNeueZeile == 4) //Die Zahl bestimmt die Anzahl der Bilder in einer Reihe
		  {
		    echo("</tr>\n");
			echo("<tr>\n");
			$WannNeueZeile = 0;
		  }
	  }
?>
  </tr>
</table>
Ich hoffe dir ist damit geholfen.
 
Zuletzt bearbeitet:
@mAu
Dein Code klappt soweit wie ich das wollte.
Allerdings wird es so angezeigt wie im Anhang.
Habe schon die <tr> und </tr> durchprobiert aber kommt immer 2 Bilder und der rest immer 3 in Reihe. Habe mit absicht 8 Bilder gespeichert.
 

Anhänge

  • demo.png
    demo.png
    142,7 KB · Aufrufe: 10
Probier den Code nochmal. Man muss die Variable erst nach der if-Abfrage erhöhen. Ich hab meinen Code oben entsprechend abgeändert.
 
Zurück