chris: dynamische tabelle [???]

Hallo!

Erstmal möchte ich meinen Erläuterungen vorausschicken, dass ich in Sachen php bzw. SQL ein Neuling bin, und daher bitte etwas Rücksicht zu nehmen. Natürlich weiß ich, dass man um wenigstens ein bisschen kreative Freiheit im Webdesign erhalten zu können- sprachen wie php unumgänglich sind. Nur und so habe ich es stets gehalten- ist learning by doing die effektivste methode um sich derartige sprachen anzueignen. Jetzt ist wiedermal so ein Punkt gekommen, an dem ich eben soweit bin, wie ein analphabet, wenn er versucht mit Z anzufangen um lesen zu lernen.

Meinen Fragen vorweg: ich arbeite mit dreamweaver mx, auf dem server ist php 4 installiert und ich benutze mysql datenbanken.

Frage 1.: Ich will in einer Tabelle dynamische Daten auslesen lassen. das ist ja an sich kein problem, nur der php befehl einen bereich zu wiederholen macht dabei Schwierigkeiten.

Dreamweaver erstellt folgenden Befehl zum wiederholen eines bereichs:

<?php do { ?> [zu wiederholender Bereich] <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?> ....was in der regel auch richtig ausgeführt wird. Nur ergibt sich jetzt bei einer tabelle mit zwei spalten, wobei jede einzelne zelle einen anderen datensatz enthalten soll ein problem:

<table>

<tr>

<td> datensatz 1:[<?php echo $row_Recordset1['data']; ?></td>
<td> nächster datensatz: [<?php echo $row_Recordset1['data']; ?>] </td>

</tr>

</tabel>

wo soll ich jetzt den php befehl zum wiederholen eines elements einsetzen, damit folgendes shema generiert wird (oder muss ich im echo befehl in der zweiten spalte etwas ändern?):

data1 data2
data3 data4
data5 data6
usw. usw.

bye, bei gelegenheit werde ich mal die zweite frage posten...

chris

  1. Moin!

    Erstmal möchte ich meinen Erläuterungen vorausschicken [...]

    Hier scheint mir weniger ein Problem mit PHP oder MySQL vorzuliegen, als eines mit algorithmischer Kreativlosigkeit im Allgemeinen...

    <?php do { ?> [zu wiederholender Bereich] <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?> ....was in der regel auch richtig ausgeführt wird.

    Falls Du mit "in der Regel" meinst, daß es immer dann richtig ausgeführt wird, wenn der SELECT eine nicht leere Ergebnismenge zurückliefert, dann trifft das zu. Warum verwendest Du eine nicht-abweisende Schleife?

    Nur ergibt sich jetzt bei einer tabelle mit zwei spalten, wobei jede einzelne zelle einen anderen datensatz enthalten soll ein problem:

    Wenn ich das Problem richtig verstehe, dann versuch mal, in diese Richtung zu denken:

    Innerhalb der die Datensätze ausgebenden Schleife (natürlich eine abweisende Schleife) gibst Du die Inhalte in einem td-Element aus - eins nach dem anderen, bis alle durch sind. Dann überlegst Du, daß nach jeder zweiten Ausgabe etwas passieren muß (tr-Element wird geschlossen, neues tr-Element wird geöffnet); dazu entwickelst Du Dir eine entsprechende Technik, etwa einen Zähler, der bei dieser "Sonderausgabe" wieder zurückgesetzt wird. Schlußendlich fällt Dir noch ein, wie Du die Sonderfälle vor dem ersten und nach dem letzten td-Element behandelst. Voilà - learning by doing, wie von Dir gewünscht!

    hth Robert

    1. guten morgen!

      danke erstmal für die antwort! nur kenn ich mich (learning by doing in allen ehren ;) leider noch weniger aus.

      was ist eine abweisende schleife? eine "while" oder eine "for" schleife?

      ein zähler? wie?

      "...Hier scheint mir weniger ein Problem mit PHP oder MySQL vorzuliegen, als eines mit algorithmischer Kreativlosigkeit im Allgemeinen..." -> mag sein...nur muss man vermutlich auch im kreativen bereich zuerst buchstabieren können.

      danke trotzdem

      chris

      1. Moin!

        was ist eine abweisende schleife?

        Mit diesem Schleifenkonstrukt http://de.php.net/manual/en/control-structures.do.while.php prüfst Du _nach_ der Ausführung der Anweisungen innerhalb der Schleife, ob die Schleifenbedingung erfüllt ist. Ich werde im Programmablauf also von der Schleife zumindest beim ersten Mal _nie_ abgewiesen, durchlaufe sie immer mindestens einmal -> nicht abweisend. In Deinem Fall bekommst Du also bei leerer Ergebnismenge Deines SELECTS einen Fehler, wenn Du auf den nicht existenten Recordset zuzugreifen versuchst (es sei denn, Du hättest mit einer Extrazuweisung vor der Schleife geprüft, ob Du einlaufen darfst). Sinnvoller ist dieses Schleifenkonstrukt http://de.php.net/manual/en/control-structures.while.php, welches _vor_ dem Durchlauf des Schleifenblocks prüft, ob ausgeführt werden soll. Ich werde im Programmauflauf also von der Schleife unter Umständen gar nicht eingelassen -> abweisend. Klar?

        ein zähler? wie?

        Mein Lösungsfindungshinweis wollte andeuten:

        1. Vorstellung, daß die Datentabelle als Einzeiler ausgegeben wird:
        <tr><td>data1</td><td>data2</td><td>data3</td><td>data4</td><td>data5</td></tr> (wirst Du wohl hinbekommen)

        2. Erkenntnis, das 1. bereits Deine fertige Lösung darstellt - bis auf eine kleine Abweichung: nach jedem zweiten td-Element muß ein </tr><tr> eingeschoben werden. Ergo: Dein Algorithmus muß feststellen, wann habe ich zwei Datenfelder ausgegeben -> </tr><tr> -> wann habe ich wieder zwei Datenfelder ausgegeben -> </tr><tr> -> wann habe ich wieder [...]

        mag sein...nur muss man vermutlich auch im kreativen bereich zuerst buchstabieren können.

        Tut mir leid, wenn ich mich beim ersten Mal unklar ausdrückte. Sollte es jetzt immer noch unklar sein, dann gehe ich davon aus, daß es nicht an mir liegt; dann solltest Du tatsächlich erst einmal Buchstabieren lernen (und ganz bestimmt würde das Ausliefern einer fertigen Lösung an Dich keinen Fortschritt bedeuten).

        Viel Erfolg!

        hth Robert

  2. hi,

    Meinen Fragen vorweg: ich arbeite mit dreamweaver mx, auf dem server ist php 4 installiert und ich benutze mysql datenbanken.

    Dreamweaver erstellt folgenden Befehl zum wiederholen eines bereichs: [...]

    ich dachte, du wolltest PHP lernen?

    dann weg mit dem dreamweaver, und PHP-code in einem texteditor per hand schreiben.

    gruss,
    wahsaga