Gallery Problem

tschimo

Mitglied
Hallo leute

Ich hab mir ein kleines Gallery Script geschrieben hier der wichtige Teil:

PHP:
<?
 
$db = mysql_connect($server, $user, $pass);
$kriterien = "SELECT * FROM images WHERE status = 1";
$abfrage =mysql_db_query($database, $kriterien);
$anzahl = mysql_num_rows($abfrage);
 
for ($i=0; $i<$anzahl; $i++)
{
 $id = mysql_result($abfrage, $i, "ID");
 $name = mysql_result($abfrage, $i, "name");
 $pfad = mysql_result($abfrage, $i, "pfad");
 $status = mysql_result($abfrage, $i, "status");
 $cat = mysql_result($abfrage, $i, "cat");
 
?>
<table width="90%" cellspacing="0" cellpadding="0" border="1" bordercolor="#ffffff" bgcolor="gray">
 <tr>
  <td> <img src="../../<? echo "$pfad"; ?>/<? echo "$name"; ?>"  width="100" height="100">
  </td>
 </tr>
</table>

<?
}

  ?>


Jetzt meine Frage:

Wie kann ich machen das er nach jeder 3ten abfrage, also resp. jedes 4te bild auf einer neuen Zeile ausgibt?

Grus tschimo
 
Das Thema gab es schon ein paar Mal.
So eine Suchfunktion ist schon was nettes, wenn man sie denn auch benutzt. ;)

Zaehl einfach eine Variable hoch und lasse jedes Mal wenn "Variable Modulo x==0" einen Zeilenumbruch einfuegen.
 
Hallo tischmo,

du brauchst einfach ne Zählschleife, die dann an der gewünschten Stelle in deinem Dokument ein <br>-Tag schreibt.

mfg

schnoOps
 
Hallo und danke erstmal für eure Posts:

Nun ich habe ein wenig im Forum gestöbert und bin meinem Ziel einen Schritt näher gekommen.

Nun aber dochnoch eine Frage ( hier der veränderte Code):

PHP:
<?
 
$db = mysql_connect($server, $user, $pass);
$kriterien = "SELECT ID, name, pfad, status, cat FROM images WHERE status = 1";
$abfrage =mysql_db_query($database, $kriterien);
$row = mysql_fetch_assoc($abfrage);	 
$anzahl = mysql_num_rows($abfrage);
 
 
$id = $row['id'];
$name = $row['name'];
$pfad = $row['pfad'];
$status = $row['status'];
$cat = $row['cat'];
$image = $pfad. "/".$name;
 
echo "<table border=1>";
if($i%3) { 
 
//überprüfen ob es das erste Bild ist 
if($i == 0) { 
 
//aber natürlich nur, wenn du bei eins anfängst 
echo "<tr><td> <img src=../../$image width=150 height=150></td>"; 
 
//überprüfen ob es das letzte Bild ist 
}elseif($i == $anzahl) { 
echo "<td><img src=../../$image width=150 height=150></td></tr>"; 
}else { 
 
//es ist keines von beidem, normale "Antwort" ausgeben 
echo "<td><img src=../../$image width=150 height=150> </td>"; 
} 
}else { 
 
//es wird kein Rest zurückgegeben, neue Zeile anfangen 
echo "<td> </td><img src=../../$image width=150 height=150></tr><tr>"; 
} 
 
echo "</table>";
 
?>

jetzt ist aber mein Problem das es mir nur ein Bild anzeigt, ich weis auch woran das liegt, und zwar daran das die SQL abfrage nur 1mal gemacht wird und daher nur der erste Datensatz ausgelesen wird. ( sehe ich das richtig? )

Ich habe nun schon den ganzen Morgen + den halben Nachmittag damit verbracht diesen fehler zu beheben, schaffe es aber einfach nicht. Es wäre super wen mir jemand helfen könnte.

Gruss tschimo
 
Das Problem ist, dass Du ueberhaupt keine Schleife hast, und somit der Code-Block nur einmal ausgefuehrt werden kann.

Mal ein kleines Beispiel:
PHP:
$images=mysql_query("select * from images");
$x=1;
while ($image=mysql_fetch_assoc($images))
{
 echo '<img src="'.$image['filename'].'" alt="'.$image['filename'].'">';
 if ($x%4==0)
 {
  echo '<br>';
 }
 $x++;
}
 
Hallo nochmal

danke für deinen Hinweis , ich habs nun mal so gecodet:

PHP:
<?
$db = mysql_connect($server, $user, $pass);
$kriterien = "SELECT * FROM images WHERE status = 1";
$abfrage =mysql_db_query($database, $kriterien);

$x=1; 
while ($image=mysql_fetch_row($abfrage)) 

{ 
$x=1; 
$id = $image['0'];
$name = $image['1'];
$pfad = $image['2'];
$stat = $image['3'];
echo "$name";
 
 if ($x%4==0) 
 { 
 echo "<br>";
 } 

}  
 
?>

es gibt auch die Daten aus, aber das problem ist das ja momentan no x nicht eins hochgezält wird, nach dem durchlauf. Jetzt weis ich leider nicht genau wo ich "x++" setzten muss damit es funktioniert.

Kann mir da jemand helfen?
 
ok dass hab ich nun, aber nun ist es so das es mir die if schleife gar nicht ausgibt, egal ob ich den parameter wie oben 4 lasse oder ihn auf 2 oder so ändere.
 
Huch, hab ich doch mal mal wieder $x++; vergessen.
Ich glaub das ist der haeufigste Fehler den ich mache wenn ich hier mal fix so eine WHILE-Schleife poste. ;)

Naja, ich hab den Code oben korrigiert.
 
Zurück