Schleife do, for -> alle 3 mal einen Umbruch einfügen |
janinchen

It's me!
 

Dabei seit: 24.11.2005
Beiträge: 1.043
Herkunft: Baden-Württemberg
 |
|
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
__________________
Dieser Beitrag wurde 8 mal editiert, zum letzten Mal von janinchen: 27.07.2007 16:12.
|
|
27.07.2007 16:09 |
|
|
janinchen

It's me!
 

Dabei seit: 24.11.2005
Beiträge: 1.043
Herkunft: Baden-Württemberg
Themenstarter
 |
|
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
__________________
|
|
28.07.2007 13:46 |
|
|
Susi

***
 

Dabei seit: 02.04.2005
Beiträge: 497
Herkunft: Sauerland
 |
|
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
__________________
|
|
28.07.2007 13:50 |
|
|
janinchen

It's me!
 

Dabei seit: 24.11.2005
Beiträge: 1.043
Herkunft: Baden-Württemberg
Themenstarter
 |
|
Ja stimmt, logisch
Rest muss ja 0 sein xD
Wie machst du denn das ganze mit der Schleife?
__________________
|
|
28.07.2007 14:30 |
|
|
Susi

***
 

Dabei seit: 02.04.2005
Beiträge: 497
Herkunft: Sauerland
 |
|
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. ^^
__________________
|
|
28.07.2007 15:08 |
|
|
janinchen

It's me!
 

Dabei seit: 24.11.2005
Beiträge: 1.043
Herkunft: Baden-Württemberg
Themenstarter
 |
|
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
__________________
|
|
28.07.2007 17:28 |
|
|
.Maybe
Mitglied
 
Dabei seit: 01.12.2005
Beiträge: 5.230
 |
|
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 ""
|
|
28.07.2007 18:02 |
|
|
janinchen

It's me!
 

Dabei seit: 24.11.2005
Beiträge: 1.043
Herkunft: Baden-Württemberg
Themenstarter
 |
|
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)
__________________
|
|
28.07.2007 18:21 |
|
|
|
Impressum
|