janinchen
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
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
janinchen
| 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
Susi
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
janinchen
Ja stimmt, logisch

Rest muss ja 0 sein xD
Wie machst du denn das ganze mit der Schleife?
Susi
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. ^^
janinchen
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
.Maybe
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 ""
janinchen
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)