foreach Ausgabe aufteilen in drei Bereiche
Chris1996
- php
Hallo und guten Abend,
hab ein kleines Problem, ich möchte meine mySQL Ausgabe in drei Bereiche aufteilen:
<?php
foreach($_user_bilder as $bilder):
?>
<div id="links">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<div id="mitte">
<!--Hier kommt Bild 2, 5, 8, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<div id="rechts">
<!--Hier kommt Bild 3, 6, 9, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<?php
endforeach;
?>
wie bekomme ich dieses hin? Hab es mal im Code aufgeschrieben, wie die Ausgabe aussehen soll. Hab leider keine Idee.
Hello,
trenne Datenbeschaffung und -ausgabe sauber voneinander.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
trenne Datenbeschaffung und -ausgabe sauber voneinander.
Was soll ich denn hier bitte trennen? Und ganz ehlrich was hat diese Aussage mit meinem Problem zu tun?
hi,
trenne Datenbeschaffung und -ausgabe sauber voneinander.
Was soll ich denn hier bitte trennen? Und ganz ehlrich was hat diese Aussage mit meinem Problem zu tun?
Ist doch egal, auch wenn Du es nicht kapierst. In Deinem Fall würde ich sagen, @Tom, dass die Datenbeschaffung getrennt ist [ich habe den Kommentar unseres Stammposters Tom auch nicht ganz kapiert]. Aber @Chris1996: Sei froh, dass sich jemand bemüht und kritisiere nicht gleich, dass dir die Antwort nicht gefällt. Du willst doch Dein Problem lösen, nicht diskutieren ;-).
mfg
tami
Hello,
@Tom, dass die Datenbeschaffung getrennt ist
Das war leider missverständlich oder zu kurz formuliert.
Es sollen drei Ausgabebereiche belegt werden.
Also benötigen wir auch drei Datenpakete.
Und die gilt es dann aus den Gesamtdaten abzutrennen oder auszufiltern, wie auch immer.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
hi,
Hello,
@Tom, dass die Datenbeschaffung getrennt ist
Das war leider missverständlich oder zu kurz formuliert.
Es sollen drei Ausgabebereiche belegt werden.
Also benötigen wir auch drei Datenpakete.Und die gilt es dann aus den Gesamtdaten abzutrennen oder auszufiltern, wie auch immer.
mfg
tami
Hello,
trenne Datenbeschaffung und -ausgabe sauber voneinander.
Was soll ich denn hier bitte trennen? Und ganz ehlrich was hat diese Aussage mit meinem Problem zu tun?
Dein eines Problem ist, welche Daten wohin gehören
Dein anderes Problem ist, wie Du die den Datenbereichen Ausgaben hinzufügst.
Daraus könntest Du zwei Funktionen machen, die Du dann schachtelst.
Oder Du definierst zumindest erst einmal drei Ausgabe-Variablen, in denen Du den HTML-Code dann jeweils anreihst.
Nur so als Anregung:
$div1 = "<div>"\r\n";
$div1 .= get_image_tag(1) ."\r\n";
$div1 .= get_image_tag(4) ."\r\n";
$div1 .= get_image_tag(7) ."\r\n";
$div1 .= </div>\r\n";
Und wenn Du nun noch die Idee von 1UnitedPower dazu nimmst, dann kannst Du das auch mittlels einer Schleife lösen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Meine Herren!
Hallo und guten Abend,
hab ein kleines Problem, ich möchte meine mySQL Ausgabe in drei Bereiche aufteilen:
<?php
foreach($_user_bilder as $bilder):
?>
<div id="links">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<div id="mitte">
<!--Hier kommt Bild 2, 5, 8, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<div id="rechts">
<!--Hier kommt Bild 3, 6, 9, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<?php
endforeach;
?>
>
> wie bekomme ich dieses hin? Hab es mal im Code aufgeschrieben, wie die Ausgabe aussehen soll. Hab leider keine Idee.
Du könntest einen Ringzähler benutzen:
Eine normale Zählvariable ist dir sicher bekannt. Die intialisiert man vor dem ersten Durchlauf üblicherweise mit 0 und zählt sie dann in jedem Schleifendurchlauf um einen Schritt hoch:
~~~php
$i = 0;
foreach( $bilder as $bild ){
$i++;
// Mehr Code
}
Bei einem Ringzähler sieht das so ähnlich aus, aber man berechnet direkt den Rest der Division durch eine andere Zahl. So kannst du dir zum Beispiel einen Zähler schaffen, der immer nur bis 2 zählt und dann vor vorne beginnt:
foreach( $bilder as $bild ){
$i = ($i + 1) % 3;
// Mehr Code
}
Innerhalb der Schleife kannst du dann zum Beispiel mit einer if-Abfrage auf den aktuellen Wert von i reagieren:
if ( $i == 0 ){
// Mehr Code
} elseif ( $i == 1 ){
// Mehr Code
} elseif ( $i == 2 ){
// Mehr Code
}
Oder mit einem switch-Konstrukt:
switch( $i ){
case 0:
// Mehr Code
break;
case 1:
// Mehr Code
break;
case 2:
// Mehr Code
break;
}
hi,
Hallo und guten Abend,
hab ein kleines Problem, ich möchte meine mySQL Ausgabe in drei Bereiche aufteilen:
<?php
foreach($_user_bilder as $bilder):
?>
<div id="links">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<div id="mitte">
<!--Hier kommt Bild 2, 5, 8, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<div id="rechts">
<!--Hier kommt Bild 3, 6, 9, usw... rein-->
<img src="media/klein/<?php echo $bilder->bild; ?>">
</div>
<?php
endforeach;
?>
>
> wie bekomme ich dieses hin? Hab es mal im Code aufgeschrieben, wie die Ausgabe aussehen soll. Hab leider keine Idee.
Naja, du musst das Array wohl erst in die drei Teile zerlegen
$links
$mitte
$rechts
~~~php
<?php
$_user_bilder[] = "bild1";
$_user_bilder[] = "bild2";
$_user_bilder[] = "bild3";
$_user_bilder[] = "bild4";
$_user_bilder[] = "bild5";
$_user_bilder[] = "bild6";
$_user_bilder[] = "bild7";
$_user_bilder[] = "bild8";
$_user_bilder[] = "bild9";
$counter = 1;
foreach($_user_bilder as $bild) {
if ($counter%3 === 1) {
$links[] = $bild;
}
if ($counter%3 === 2) {
$mitte[] = $bild;
}
if ($counter%3 === 0) {
$rechts[] = $bild;
}
$counter += 1;
}
?>
<div id="links">
<?php foreach($links as $bild):?>
<img src="media/klein/<?php echo $bild; ?>">
<?php endforeach;?>
</div>
<div id="mitte">
<?php foreach($mitte as $bild):?>
<img src="media/klein/<?php echo $bild; ?>">
<?php endforeach;?>
</div>
<div id="rechts">
<?php foreach($rechts as $bild):?>
<img src="media/klein/<?php echo $bild; ?>">
<?php endforeach;?>
</div>
bringt:
<div id="links">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild1">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild4">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild7">
</div>
<div id="mitte">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild2">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild5">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild8">
<!--Hier kommt Bild 2, 5, 8, usw... rein-->
</div>
<div id="rechts">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild3">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild6">
<!--Hier kommt Bild 1, 4, 7, usw... rein-->
<img src="media/klein/bild9">
</div>
mfg
tami
Hallo,
vielen vielen Dank für deine Hilfe!
Wenn ich mir das so ansehe glaube ich du könntest die gewünschte ausgabe leichter mit css erreichen...
http://t3n.de/news/css3-abwechselnd-gestaltete-spalten-zeilen-nth-child-344292/
ansonsten bliebe dir noch die möglichkeit jedes 3te element in ein neuen array zu speichern usw.
und dann in jeden div eine foreach schleife mit den jeweiligen array ausgeben
Hallo,
hab ich mir auch schon überlegt nur die Frage ist, wie sieht dieses mit älteren Browser zu tun? Meine Bilder schauen sich eher Senioren an und die haben oft noch alte System :o ich denke mit einem alten IE bekomme ich da große Probleme oder?
hi,
Hallo,
hab ich mir auch schon überlegt nur die Frage ist, wie sieht dieses mit älteren Browser zu tun? Meine Bilder schauen sich eher Senioren an und die haben oft noch alte System :o ich denke mit einem alten IE bekomme ich da große Probleme oder?
https://forum.selfhtml.org/?t=217322&m=1492439
mfg
tami
Hi Chris,
warum arbeitest du nicht mit den mySQL-Querys?
Wenn du das machst, kannst du ja für jeden Bereich, einen Query gestalten.
Grüße,
House