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 smile

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 smile So werden ja nicht die Durchläufe durch die Schleife gezählt, sondern irgendwas andres ^^
Bitte helft mir unglücklich


Eure -hier in der Homepagehilfe mittlerweile bestimmt bekannte- Janina großes Grinsen



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 großes Grinsen
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? großes Grinsen

PS: Ohne richtig HTML zu können, würde ich mit PHP glaub ich nix zu Stande bringen Augenzwinkern



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 smile 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 smile

Maybe: Danke für die Hilfe, hab aber noch nen einfacheren Lösungsweg gefunden smile 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 Augenzwinkern

Danke euch allen x)


Forensoftware: Burning Board, entwickelt von WoltLab GmbH