bei 4 spalten neue zeile

  • geschlossen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • bei 4 spalten neue zeile

    kann mir jmd bitte kurz helfen,ich steh grad voll aufm schlauch...
    ich möchte dass ich z.b. bei 19 ergebnissen, die kategorie in <td>`s aufgeteilt wird, dass die seite aber nicht platzt, jeweils nach 4 <td`s> ein <tr> gemacht wird.. ich hab schonmal was gescriptet, aber ich check grad absolut nich was ich falsch mache ^^

    Quellcode

    1. $conn = @mysql_connect($dbserver, $dbuser, $dbpass);
    2. if ($conn)
    3. {
    4. $overview = mysql_db_query("$dbname", "select categoryname from Category");
    5. $num = mysql_num_rows($overview);
    6. echo "<table width=\"600\" border=\"0\">";
    7. for ($i=0; $i<$num; $i++)
    8. {
    9. $catname = mysql_result($overview, $i, "categoryname" );
    10. if ($i%4 == 0)
    11. {
    12. echo " <tr>";
    13. }
    14. echo " <td width=50><img src=\"gfx/c_folder.jpg\"></td>";
    15. echo " <td width=150>$catname</td>";
    16. if ($i%4 == 0)
    17. {
    18. echo " </tr>";
    19. }
    20. }
    21. echo "</table>";
    22. }
    23. else { echo "MySQL Connection konnte nicht hergestellt werden"; }
    Alles anzeigen


    bitte jetzt keine mysql_fetch_array geschichten, ich code meine abfragen meistens so und komme damit auch gut zurecht ;)

    danke für hilfe im vorraus

    edit: achso ja, das Problem ist kein Parse Error o.ä. sondern dass er nach 3 ergebnissen eine neue Zeile macht, in die dann ein Ergebnis reinschreit, wieder 3 ergebnisse, wieder nur 1, dann wieder 3, dann wieder 1, etc

    gz neroringer
    [SIZE=1]Live is a bitch... so... fuck it[/SIZE]
  • Hallo,

    ich bin zwar nicht der PHP-Crack - genaugenommen habe ich keinen Plan von, aber so müsste es gehen (nicht erprobt!):

    Quellcode

    1. $conn = @mysql_connect($dbserver, $dbuser, $dbpass);
    2. if ($conn)
    3. {
    4. $overview = mysql_db_query("$dbname", "select categoryname from Category");
    5. $num = mysql_num_rows($overview);
    6. echo "<table width=\"600\" border=\"0\">";
    7. for ($i=0; $i<$num; $i++)
    8. {
    9. $vierer = $vierer + 1
    10. $catname = mysql_result($overview, $i, "categoryname" );
    11. if ($vierer == 0 || $vierer == 4)
    12. {
    13. echo " <tr>";
    14. }
    15. echo " <td width=50><img src=\"gfx/c_folder.jpg\"></td>";
    16. echo " <td width=150>$catname</td>";
    17. if ($vierer == 4 || $i == $num)
    18. {
    19. echo " </tr>";
    20. $vierer = 0;
    21. }
    22. }
    23. echo "</table>";
    24. }
    25. else
    26. {
    27. echo "MySQL Connection konnte nicht hergestellt werden";
    28. }
    Alles anzeigen


    So, was habe ich jetzt gemacht? Ich habe einfach in die Schleife eine Variable eingebaut, die sich immer beim Aufruf um eins erhöht. Ist es bei vier angekommen, wird der <tr>-Tag geschlossen und oben wieder neu aufgerufen.
    Außerdem habe ich noch am Ende eingebaut, dass der <tr>-Tag geschlossen werden soll, wenn die Anzahl der Inhalte erreicht ist - sonst könnte es Probleme mit der HTML-Struktur geben, wenn du mit einer weiteren Tabelle um dieses Script arbeitest. ;)

    Ich hoffe es ist so funktionstüchtig. Wenn nicht, selber rangehen. Lösungsweg hab ich ja notiert. ;)

    ew_h2002
  • danke erstmal für deine antwort.

    So, was habe ich jetzt gemacht? Ich habe einfach in die Schleife eine Variable eingebaut, die sich immer beim Aufruf um eins erhöht.


    aber ich habe eigentlich genau das selbe gemacht wie du.. nur bischen sauberer im Code.
    Dein Code macht genau das selbe wie meiner


    achso ja, das Problem ist kein Parse Error o.ä. sondern dass er nach 3 ergebnissen eine neue Zeile macht, in die dann ein Ergebnis reinschreit, wieder 3 ergebnisse, wieder nur 1, dann wieder 3, dann wieder 1, etc
    [SIZE=1]Live is a bitch... so... fuck it[/SIZE]
  • Hallo,

    du hast was anderes gemacht als ich! Du hast $i überprüft. $i beginnt bei null. Bis $i=4 sind das fünf Spalten. Außerdem stellst du den Zähler nicht wieder auf null, nachdem er den <tr>-Tag beendet hat. Deswegen sind da durchaus in unseren Programmen Unterschiede - oder hab ich mich da verguckt?
    Probier meins mal!

    ew_h2002
  • jo stimmt natürlich, im endeffekt kommt aber das gleiche raus.
    ich habe dein coding getestet, und wie gesagt, das ergebnis is das selbe!

    <table>
    3 Ergebnise</tr>
    1 Ergebnis </tr>
    3 Ergebnise</tr>
    1 Ergebnis </tr>
    3 Ergebnise</tr>
    1 Ergebnis </tr>
    </table>

    so ungefähr^^
    [SIZE=1]Live is a bitch... so... fuck it[/SIZE]
  • Hallo,

    FEHLER GEFUNDEN! Ich bin ja auch doof. Nimm in der ersten IF-Schleife ("if ($vierer == 0 || $vierer == 4)") das "|| $vierer == 4" weg und alles ist gut.

    ew_h2002

    <EDIT name="MeX">

    ew_h2002 schrieb:

    Also so:

    Quellcode

    1. $conn = @mysql_connect($dbserver, $dbuser, $dbpass);
    2. if ($conn)
    3. {
    4. $overview = mysql_db_query("$dbname", "select categoryname from Category");
    5. $num = mysql_num_rows($overview);
    6. echo "<table width=\"600\" border=\"0\">";
    7. for ($i=0; $i<$num; $i++)
    8. {
    9. $vierer = $vierer + 1
    10. $catname = mysql_result($overview, $i, "categoryname" );
    11. if ($vierer == 0)
    12. {
    13. echo " <tr>";
    14. }
    15. echo " <td width=50><img src=\"gfx/c_folder.jpg\"></td>";
    16. echo " <td width=150>$catname</td>";
    17. if ($vierer == 4 || $i == $num)
    18. {
    19. echo " </tr>";
    20. $vierer = 0;
    21. }
    22. }
    23. echo "</table>";
    24. }
    25. else
    26. {
    27. echo "MySQL Connection konnte nicht hergestellt werden";
    28. }
    Alles anzeigen


    ... So ein schusseliger Fehler von mir! Arrgh!

    ew_h2002


    keine doppelposts!!
    verwende die AENDERN-funktion!!

    ceeyaa.mex

    </EDIT>