[PHP] Bilder in Reihen darstellen

realmoney

Gesperrt
23 März 2008
900
104
ok komische beschreibung.hab folgendes problem.ich hab n script das bis zu 10 bilder anzeigen lassen soll die aus einem ordner geladen werden.klappt auch wunderbar jedoch stehen alle 10 bilder nebeneinander.
ich kriegs nicht hin das die bilder so aufgeteilt werden 4/4/2 (die letzten beiden zentriert)

so sieht das stück aus

Code:
	        $pics = explode('|',$art->pictures);
	        $dir = 'pictures/'.$art->name.'/';
	        for ($i=0;$i <= count($pics);$i++) {
	                 $file_name = $pics[$i];
	                 if ($file_name != '') {
	                 	echo '<img src="thumb.php?dir='.$dir.$file_name.'" alt=" Bild " />';
	                 }

wenn ich aus ($i=0;$i ne ($i=5;$i oder so mache oder anstatt der 5 ne andre zahl eintrage krieg ich ne andere anzahl bilder angezeigt.bei 6 zum beispiel krieg ich 4 bilder angezeigt.aber die andren 6 nicht.

wie krieg ich es hin das mir 3 reihen mit 4/4/2 bildern angezeigt wird wobei die unteren beiden zentriert sein sollten.?

achso.ich krieg auch nen kleinen abstand zwischen den bildern nicht hin.da reichen 2 pixel jeweils.

und ich muss noch rauskriegen wie ich die bilder anklickbar mache.krieg dann immer n parseerror wenn ich die anweisung dazu gebe :(
 
Dein Problem hat doch nix mit PHP zu tun, sondern CSS: margin legt die Außenabstände fest, text-align die Ausrichtung. Infos bei SelfHTML, das schreib ich jetzt nicht ab.

Du musst mit PHP nur dafür sorgen, dass nach 4 bzw. nach 8 Bildern der Absatz beendet wird, quasi
PHP:
if($i % 4 == 3) // nach dem 4. und dem 8. Bild
  echo "...";
 
Dein Problem hat doch nix mit PHP zu tun, sondern CSS: margin legt die Außenabstände fest, text-align die Ausrichtung. Infos bei SelfHTML, das schreib ich jetzt nicht ab.

Du musst mit PHP nur dafür sorgen, dass nach 4 bzw. nach 8 Bildern der Absatz beendet wird, quasi
PHP:
if($i % 4 == 3) // nach dem 4. und dem 8. Bild
  echo "...";

hääää?css lassen wir jetzt mal aussen vor.mir gehts erstmal darum das ich die aufteilung hinbekomme.
seh jetzt nicht so ganz durch wo ich if($i % 4 == 3) hinschreiben soll^^:roll:
 
hääää?css lassen wir jetzt mal aussen vor.
Gut, dann lassen wir zentriert und Abstand mal weg erstmal.
mir gehts erstmal darum das ich die aufteilung hinbekomme.
Am besten alles in einen Absatz stecken und nach dem 4. und dem 8. Bild umbrechen. Wenn dir das nicht passt, kannst du es im Nachhinein noch anpassen. Also
HTML:
<p>
1, 2, 3, 4<br />
5, 6, 7, 8<br />
9, 10
</p>
Du siehst, nach 4 und 8 is der Umbruch drin. Diesen machst du mit der Modulo-Operation rein.
seh jetzt nicht so ganz durch wo ich if($i % 4 == 3) hinschreiben soll^^:roll:
Hirn einschalten: Wo hast du denn ein gültiges $i im Code? Gibt nur eine Stelle, wo es Sinn macht und das ist in der Schleife.
 
ok seitweit konnte ich folgen.habs auch da geändert aber jetzt kommen nur noch 2 bilder.der restliche code ist wie gehabt.8O
wieso auf einmal nur noch 2 bilder?10 stück sind vorhanden :(
 
Code:
 $pics = explode('|',$art->pictures);
         $dir = 'pictures/'.$art->name.'/';
         for ($i=0;$i <= count($pics);$i++) {
                     	 if ($i/3 == '1' || $i/3 == '2'|| $i/3 == '3') {
                          	echo '<br />';
                          }
	                 $file_name = $pics[$i];
	                 if ($file_name != '') {
	                 	echo '<a href="'.$dir.$file_name.'" target="_blank"><img src="thumb.php?dir='.$dir.$file_name.'" alt=" Bild " style="border:0px" /></a>
 
PHP:
if ($i/3 == '1' || $i/3 == '2'|| $i/3 == '3')
Was'n das fürn Müll? :roll:

Eine Zahl mit einem String vergleichen? Abgesehen davon ist eine $i geteilt 3 wohl meistens keine Ganzzahl.
Du generierst damit 0.333333..., 0.666667..., 1, 1.333333..., ... und was bringt das?

Ich hatte dir doch schon den Code gepostet: Nutze Modulo, um herauszufinden, wann das 4. und das 8. Bild an der Reihe ist.
 
PHP:
if ($i/3 == '1' || $i/3 == '2'|| $i/3 == '3')
Was'n das fürn Müll? :roll:

Eine Zahl mit einem String vergleichen? Abgesehen davon ist eine $i geteilt 3 wohl meistens keine Ganzzahl.
Du generierst damit 0.333333..., 0.666667..., 1, 1.333333..., ... und was bringt das?

Ich hatte dir doch schon den Code gepostet: Nutze Modulo, um herauszufinden, wann das 4. und das 8. Bild an der Reihe ist.

mir wurst.es funktioniert so.
 
naja, es funktioniert halt so lange, wie du nur 12 Bilder hast. Wenn es auf einmal mehr Bilder sind, musst du wieder die PHP-Datei bearbeiten.
Außerdem, wenn schon auf diese Weise, warum so umständlich "$i/3 == 1, $i/3? == 2 usw."?
"$i/3 == 2" ist doch das gleiche wie "$i == 6"?
 
Hi,

naja, es funktioniert halt so lange, wie du nur 12 Bilder hast. Wenn es auf einmal mehr Bilder sind, musst du wieder die PHP-Datei bearbeiten.
Außerdem, wenn schon auf diese Weise, warum so umständlich "$i/3 == 1, $i/3? == 2 usw."?
"$i/3 == 2" ist doch das gleiche wie "$i == 6"?


Das gleiche ist es bestimmt nicht, wenn $i = 8 ist, dann hast du

8/3 = 2,6666666666666666666666666666667, also nicht 2 und somit auch keinen wirklich vergleichswert außer man würde noch ceil oder round oder ähnlich nutzen wollen, was aber mehr als doof wäre...

Daher ist es schon richtig, wie es theHacker geschrieben hatte.
 
jo, ich habe ja auch geschrieben, dass er bei seiner Methode die php-Datei immer wieder bearbeiten muss, wenn es mehr Bilder gibt. Damit meinte ich eigentlich, dass die Methode von theHacker richtig ist.
Aber wenn er es schon so blödsinnig macht, dann ist es unnötig, "$i/3==2" zu schreiben, da "x/3=2" das Gleiche ist, wie "x=6". Vom Ergebnis kommt ja das Gleiche raus "8/3 == 2" => false und "8 == 6" => false.
Aber wie gesagt, es sollte auch kein Vorschlag sein, dass er das so machen soll, weil eben die Lösung von theHacker die Richtige ist, sondern ich wunderte mich nur, warum er seine Lösung so umständlich macht.
Aber da es dem Threadstarter wurscht ist, was die richtige Lösung ist, wenns auch anders funktioniert, ist es ja eh egal.