nach 4 bildern automatischer zeilenumbruch
Patrick
- php
Hallo,
Ich habe eine Galerie die die daten für das foto und die texte aus einer datenbank (mysql) holt. jetzt würde ich es gerne in der galerie so anordnen das immer 4 fotos nebeneinander kommen und dann einen zeilenumbruch und dann wieder 4 nebeneinander.
wie mach ich das?
Mit freundlichen Grüssen,
Patrick
Hallo ihr da draußen,
wie mach ich das?
Du könntest in einer For-Schleife eine Zahl hochzählen lassen. Und immer wenn die Zahl Modulo 4 4 entspricht (if(x%4 == 4))), kannst du einen Zeilenumbruch hinschreiben lassen.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish
Hallo
danke für die schnelle antwort!
Du könntest in einer For-Schleife eine Zahl hochzählen lassen. Und immer wenn die Zahl Modulo 4 4 entspricht (if(x%4 == 4))), kannst du einen Zeilenumbruch hinschreiben lassen.
Also ich kann noch nicht so viel mit php und mit for-schleifen kenn ich mich noch nicht aus. könntest du mir das ein bisschen erklären?
Mit freundlichen Grüssen,
Patrick
Hallo ihr da draußen,
Du könntest in einer For-Schleife eine Zahl hochzählen lassen. Und immer wenn die Zahl Modulo 4 4 entspricht (if(x%4 == 4))), kannst du einen Zeilenumbruch hinschreiben lassen.
Also ich kann noch nicht so viel mit php und mit for-schleifen kenn ich mich noch nicht aus. könntest du mir das ein bisschen erklären?
Nehmen wir einmal an, du hättest deine Bildernamen in einem Array (ich hoffe, du weißt was das ist) namens $bilder_array. Dann fängst du eine For-Schleife an:
for($n = 0; $n < count($bilder_array); $n++)
{
Du fängst quasi mit der Variable $n und dem Wert 0 an zu zählen ($n = 0), und zwar solange, wie $n kleiner ist als die Anzahl Werte im Array (count($bilder_array)). Bei jedem Durchlauf zählst du die Variable $n um eins hoch ($n++).
echo "<img src="".$bilder_array[$n]."" alt="Bild" />";
if($n%4 == 4)
echo "<br />\n";
}
Nun schreibst du den HTML-Quellcode des Bildes, wobei $bilder_array[$n] dem Wert im Array, also dem Pfad des Bildes entspricht. Als Alternativtext habe ich jetzt einfach "Bild" genommen.
Nun wird überprüft, ob $n Modulo 4 4 ist. Modulo ist eine mathematische Funktion, die dem Rest bei einer Teilung mit einer natürlichen Zahl als Ergebnis entspricht. Also, alle 4 Durchläufe wird ein Zeilenumbruch hingeschrieben, da nur dann $n Modulo 4 4 ist.
Und das war's dann schon.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish
Hallo
danke für die gute erklärung.
also ich habe eine model seite und in der galerie werden nur bilder angezeigt bei denen auch die daten voll´ständig sind.
der code sieht so aus:
<?php
while ( $data = mysql_fetch_array($resultID) ) {
if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
//Daten unvollständig
} elseif (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) { ?>
<td>
<table border="0" cellpadding="0" cellspacing="2">
<tr height="100">
<td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
</tr>
<tr>
<td width="150"><?php print $data[name]; ?></td>
</tr>
<tr>
<td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
</tr>
</table>
</td>
<?php }
}
?>
wie bekomme ich die for-anweisung da rein?
Mit freundlichen Grüssen,
Patrick
Hallo ihr da draußen,
<?php
for ($n=0; $data = mysql_fetch_array($resultID); $n++) {
if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
//Daten unvollständig
} elseif (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) { ?>
<td>
<table border="0" cellpadding="0" cellspacing="2">
<tr height="100">
<td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
</tr>
<tr>
<td width="150"><?php print $data[name]; ?></td>
</tr>
<tr>
<td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
</tr>
</table>
</td>
<?php
if($n%4 == 3) // Siehe [pref:t=52271&m=288301]
{
?>
</tr>
<tr>
<?php } }
}
?>
Änderungen sind überall da, wo kein > davor ist.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish
Hallo
vielen danke! es klappt. aber es werden auch die bilder mitgezählt die garnicht angezeigt werden. die sollen ja nicht mitgezählt werden!
Mit freundlichen Grüssen,
Patrick
Hallo Patrick,
aber es werden auch die bilder mitgezählt die garnicht angezeigt werden. die sollen ja nicht mitgezählt werden!
dann mach eine while-Schleife:
$n=0
while(...mysql_fetch_...){
if(datevollständig){
echo daten;
$n++
}
else { irgendwasanderes }
if($n%4==3) echo...
}
btw: ein deinem Code sind etwa 30 Fehler drin ->http://de.php.net/language.types.array#language.types.array.foo-bar
Grüße aus Nürnberg
Tobias
Hallo ihr da draußen,
dann mach eine while-Schleife:
Man könnte natürlich auch in die FOR-Schleife noch so etwas einbauen:
if(daten_unvollständig)
{ ...
$i--;
}
was aber nicht so elegant wäre.
Die while-Schleife ist doch irgendwie besser.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish
Hallo
habs jetzt so gemacht:
<?php
$n=0
while ( $data = mysql_fetch_array($resultID) ) {
if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
//Daten unvollständig
} else if (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) {
$n++ ?>
<td>
<table border="0" cellpadding="0" cellspacing="2">
<tr height="100">
<td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
</tr>
<tr>
<td width="150"><?php print $data[name]; ?></td>
</tr>
<tr>
<td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
</tr>
</table>
</td>
<?php
if($n%4 == 3) {
?>
</tr>
<tr>
<?php
}
}
}
?>
parse error on line 89. line 89 ist die zeile wo die while schleife anfängt.
was mache ich falsch?
Mit freundlichen Grüssen,
Patrick
Hallo ihr da draußen,
<?php
$n=0
Hier fehlt das Semikolon (;).
while ( $data = mysql_fetch_array($resultID) ) {
if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
//Daten unvollständig
} else if (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) {
$n++ ?>
Das $n++ würde ich ans Ende des IF-Konstrukts bauen.
<td>
<table border="0" cellpadding="0" cellspacing="2">
<tr height="100">
<td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
</tr>
<tr>
<td width="150"><?php print $data[name]; ?></td>
</tr>
<tr>
<td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
</tr>
</table>
</td>
<?php
if($n%4 == 3) {
?>
</tr>
<tr>
<?php
}
Hier würde ich das $n++ hinbauen.
}
}
?>
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish
Hallo
$n=0
Hier fehlt das Semikolon (;).
misst, wie peinlich
<?php
}
Hier würde ich das $n++ hinbauen.
ja stimmt ist besser
}
}
?>
nochmal vielen dank, es klappt jetzt alles.
Mit freundlichen Grüssen,
Patrick
Hallo Patrick,
<?php
$n=0
das hat dir Dogfish ja schon gesagt
if ($data[user]=="" OR $data[name]=="" OR [...]) {
aber $data[user] ist immernoch falsch - es heißt $data['user'] (oder mit "), außerdem gibt es auch eine Funktion empty() die sich dafür anbietet.
parse error on line 89. line 89 ist die zeile wo die while schleife anfängt.
bei solchen Fehlern _immer_ auch die Zeile vorher anschauen.
Grüße aus Nürnberg
Tobias
Hallo miteinander.
.. Modulo 4 4 entspricht (if(x%4 == 4)))...
Ich foffe ich vertue mich nicht, aber ich glaube hier liegt ein kleiner Fehler vor.
Der Modulo-Operator gibt den ganzzahligen Rest der Division aus.
Der ganzzahlige Rest einer Division durch 4 kann demnach niemals 4 sein.
Man müsste folglich nicht auf 4 sondern auf 0 abfragen (if(x % 4 == 0)).
Gruß,
Holger
Hallo ihr da draußen,
Der Modulo-Operator gibt den ganzzahligen Rest der Division aus.
Der ganzzahlige Rest einer Division durch 4 kann demnach niemals 4 sein.
Man müsste folglich nicht auf 4 sondern auf 0 abfragen (if(x % 4 == 0)).
Oh, Entschuldigung. Jetzt wo du es sagst... Es muss natürlich 3 sein...
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish