Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Schleife do, for -> alle 3 mal einen Umbruch einfügen (https://www.gegen-bilderklau.net/thread.php?threadid=114134)
Geschrieben von janinchen am 27.07.2007 um 16:09:
Schleife do, for -> alle 3 mal einen Umbruch einfügen
Tjaja, es geht ans eingemachte, schon wieder ich
Also, ich brauche eine Schleife, die Einträge aus einer Datenbank ausliest.
Diese Einträge sollen dann in Tabellenzellen ausgegeben werden.
Das würde ich generell so machen:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
|
<? $sql = "SELECT
Name, Ordner
FROM
name";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo "
$row[Name]
";}
?> |
|
Jetzt sollen aber immer zwei Zellen nebeneinander ausgegeben werden, danach eine neue Zeile (</tr><tr>).
Ich dachte, das kann ich doch mit einer Schleife lösen, die die Durchläufe zählt und alle 2 mal ein <tr> einfügt.
Nur irgendwie komm ich mit dieser doofen Schleife einfach nicht klar.
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
<?php
do {
for ($zahl=0; $zahl<=2; $zahl++) {
if ($zahl%2==0) {echo "<tr>";}
if ($zahl%2!=2) {
echo"
<td>
$row[Name]</td>
";
}
if ($z%2==1) {echo "</tr>";}
}
}?>
|
|
Weiter komm ich nicht

So werden ja nicht die Durchläufe durch die Schleife gezählt, sondern irgendwas andres ^^
Bitte helft mir
Eure -hier in der Homepagehilfe mittlerweile bestimmt bekannte- Janina
Geschrieben von Melli am 28.07.2007 um 13:37:
Also ich kenn mich mit PHP nich aus, aber meine HTML-Kenntnisse sagen mir, dass vor das <tr> erstma ein <table> muss, genauso muss die Tabelle geschlossen werden </table>
Das hilft dir jetzt zwar nicht aber egal... xDD
Geschrieben von janinchen am 28.07.2007 um 13:46:
Zitat: |
Original von Melli
Also ich kenn mich mit PHP nich aus, aber meine HTML-Kenntnisse sagen mir, dass vor das <tr> erstma ein <table> muss, genauso muss die Tabelle geschlossen werden </table>
Das hilft dir jetzt zwar nicht aber egal... xDD |
Ne, nicht wirklich x) Darüber, wie eine Tabelle aufgebaut werden muss, bin ich mir durchaus bewusst
Da ich ja alles, was aus der Datenbank kommt in diese Zellen (<td></td>) auslesen lasse würde folglich (je nachdem, wie viele Eintragungen ausgelesen werden) die Tabelle nach rechts hin immer größer werden, und deswegen möchte ich, dass alle zwei Zellen eine neue Zeile erstellt wird (<tr></tr>).
Alles klar?
PS: Ohne richtig HTML zu können, würde ich mit PHP glaub ich nix zu Stande bringen
Geschrieben von Susi am 28.07.2007 um 13:50:
Bist du sicher, dass du das einfach so mit "==1" schreiben kannst?
php: |
1:
|
if ($z%2==1) {echo "</tr>";} |
|
So kenne ich das nämlich nicht. x) Ich schreibs normalerweise einfach so (am Schluss) und dann gehts auch:
php: |
1:
|
if ($z%2==0) {echo "</tr><tr>";} |
|
lg
Geschrieben von janinchen am 28.07.2007 um 14:30:
Ja stimmt, logisch

Rest muss ja 0 sein xD
Wie machst du denn das ganze mit der Schleife?
Geschrieben von Susi am 28.07.2007 um 15:08:
Ich versteh die Frage jetzt nicht ganz, aber ich jetzt einfach mal so geändert, wie ich das meinte. ^^
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
|
<?php
do {
for ($zahl=0; $zahl<=2; $zahl++) {
$row = mysql_fetch_assoc($result);
echo"
<td>
$row[Name]</td>
";
if ($zahl%2==0) {echo "</tr><tr>";}
}
}?>
|
|
Also einfach erst ganz normal ne Tabellen-Zelle mit dem Namen drin schreiben lassen (vorher natürlich noch dieses $row-Dings auslesen lassen, ich habs jetzt provisorisch eingefügt.) Danach machst du dann ne Abfrage, ob die Nummer des Durchgangs ($zahl) durch 2 teilbar ist. Wenn das der Fall ist, wird eben ne neue Zeile angefangen. Ich hoffe das war vertständlich so. ^^
Geschrieben von janinchen am 28.07.2007 um 17:28:
Mhhh, so ganz gelöst ist das Problem jetzt noch nicht x)
Code sieht so aus:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
|
$sql = "SELECT
Name, Ordner
FROM
pferde
WHERE
Unterbringung = 'Stall 3' ";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
for ($zahl=0; $zahl<=22; $zahl++) {
$row = mysql_fetch_assoc($result);
echo"
<td class="box" height="100" width="100"><a href="../Pferde/Lerental_Steckbrief.php?name=$row[Ordner]" target="_self"><font color="#000000"><b>$row[Name]</b></font></a></td>
";
if ($zahl%2==0) {echo " <td class="paddock" height="100" width="100">Paddock</td></tr><tr><td class="paddock" height="100" width="100">Paddock</td>";}
};
}
mysql_close(); |
|
Das Problem: Er zeigt mir jetzt insgesamt 22 Boxen an, wovon eben die 5 gefüllt sind. Alle andern Boxen sind komplett leer, ohne jegliche Formatierung, ohne Rand und ohne Inhalt.
Weiß jemand ne Möglichkeit, mit der ich entweder nur soviele Boxen ausgeben kann, wie auch benötigt werden oder die übrigen mit "Reservebox" beschriften?
Wär lüüüüb <3
Geschrieben von .Maybe am 28.07.2007 um 18:02:
Hm... Also mit LIMIT = 5 (bzw wenn die Zahl sich ändert musst du erst einmal mysql_num_rows verwenden und es als Variable speichern) kannst du eben nur 5 Boxen ausgeben lassen, ist es das, was du suchst?
Wenn du die übrigen mit Resterviert beschriften willst, musst du eben ein If reinmachen [ if(Box == 'Reserviert') { echo "Reserviert"; } ]
Sorry, aber ich verstehs nicht ganz ""
Geschrieben von janinchen am 28.07.2007 um 18:21:
Hat sich erledigt
Maybe: Danke für die Hilfe, hab aber noch nen einfacheren Lösungsweg gefunden

Ich hab schon im vorigen Teil des Scripts alle Pferde mit "Stall 3" zählen lassen und die Anzahl in einer Variablen gespeichert. Die hab ich eingesetzt. Funktioniert auch jetzt super
Danke euch allen x)
Forensoftware: Burning Board, entwickelt von WoltLab GmbH