Wochentag in FOR Schleife

  • Moin,

    kann sein das ichheute morgen Blind bin aber ich seh den Fehler nicht. Ich möchte WochenTage angeben weil ich eine Tabelle habe die von Mo bis So sortiert werden soll und order by sortiert ja nach dem ABC. Aber ich glaube ich habe ein Problem in der Schleife. Kann man das evtl noch viel einfacher machen ?
    [php:1:fea30ba08d]<?php

    $conn = @mysql_connect($server, $user, $pass);
    @mysql_select_db($datenbank, $conn);

    if ($conn!=TRUE)
    {
    echo "Verbindungsfehler: ".mysql_error()." !! Versuchen Sie es zu einem sp&auml;teren Zeitpunkt nochmals. Danke.";
    die;
    }

    $wotag = array ('So','Mo','Di','Mi','Do','Fr','Sa');
    for ($w=0; $w<7; $w++) // Wochentage hochzählen
    echo "$wotag"; // TESTAUSGABE

    $sql = "select * from TFG_Kurse where wochentag=$wotag order by von,bis desc";
    $result = mysql_query($sql);
    echo mysql_error();
    while ($daten = mysql_fetch_array($result))

    {
    ?>
    <table border="0" cellspacing="2" cellpadding="0">
    <tr height="15">
    <td width="31" height="15"><?php echo "$daten[wochentag]"?></td>
    <td width="31" height="15"><?php echo "$daten[von]"?></td>
    <td width="8" height="15">
    <div align="center">
    - </div>
    </td>
    <td width="83" height="15"><?php echo "$daten[bis]"?> Uhr</td>
    <td width="200" height="15"><?php echo "$daten[kurs]"?></td>
    <td width="100" height="15"><?php echo "$daten[trainer]"?></td>
    </tr>
    </table>
    <?php }


    ?>
    ?>[/php:1:fea30ba08d]

  • Naja, du hast auf jeden einen schlechten schreibstyle wie ich finde.

    Versuch es mal so:

    Kopiere es ganz und nicht nur Teile, ich habe viel verändert.

  • Hallo und Danke vorab ! :)

    Also ich bin noch beginner und bin dabei mich zu verbessern, an meinem Schreibstil werde ich arbeiten

    Die Ausgabe des oben stehenden Codes ist "SoMoDiMiDoFrSa" Also die Zeile der Testausgabe. Er Setzt die Wochentage alle in einen String und nimmt die nicht auseinander das nur "So" da steht. Wie kommt das ?

    Achja ...<?=$daten['wochentag']?>.... Kann man das hier ohne Echo schreiben, ich dachte dies muss für die Ausgabe angegeben werden?

    Gruss

  • Ich kenne den aufbau der DB nicht und habe ka was du da drinne hast.

    und das was du meisnt, wird udrch
    echo $wotag; // TESTAUSGABE

    erzeugt.

    und wenn du im htmlcode nur fix ne ausgaben machen willst, kann man auch <?= verwenden, das ich gleich wertig wie <?PHP echo

  • Der Aufbau ist so in etwa.

    Das Problem ist das er nicht erst alle MO und dann alle DI etc ausgibt weil $wotag halt nicht beim ersten Durchlauf SO, beim zweiten MO ausgibt sondern immer SOMODI ... usw. Das was ich versuche ist ja das er erst einmal Sonntag benutzt, dann Montag, Dienstag, ...

  • dann mache es doch einfach so:

    $sql = "SELECT * FROM `TFG_Kurse` GROUP BY `wochentag` ORDER BY `von`ASC, `bis` DESC";
    $result = mysql_query($sql) or die(mysql_error());

    while ($daten = mysql_fetch_assoc($result))
    {
    ?>
    <table border="0" cellspacing="2" cellpadding="0">
    <tr height="15">
    <td width="31" height="15"><?=$daten['wochentag']?></td>
    <td width="31" height="15"><?=$daten['von']?></td>
    <td width="8" height="15" align="center"> - </td>
    <td width="83" height="15"><?=$daten['bis']?> Uhr</td>
    <td width="200" height="15"><?=$daten['kurs']?></td>
    <td width="100" height="15"><?=$daten['trainer']?></td>
    </tr>
    </table>
    <?php } ?>

  • wenn ich so

    Code
    $sql = "SELECT * FROM `TFG_Kurse` ORDER BY `wochentag` and `von`ASC";

    sortiere sortiert er nicht richtig. ein MO für Montag steht nach Freitag und 07.45 Uhr kommt nach 08.15 Uhr ..

    Wenn ich

    Code
    $sql = "SELECT * FROM `TFG_Kurse` GROUP BY `wochentag` ORDER BY `von`ASC, `bis` DESC";

    sortiere kommt denke ich wegen group jeder wochentag nur einmal vor. ich hab aber angenommen mal

    4x Mo
    2xDi
    9xMi
    1xDo
    3xFr

    und jeweils verschiedene Uhrzeiten nach denen ebenfalls sortiert werden soll. wie funzt das am besten ?

  • ja, ist ne übergangslösung. ich habe es leider nicht hinbekommen das er In der Reihenfolge der Wochentage sortiert. So Musste ich mir so behelfen :( Geht es denn anders ?

  • Man kann es noch so machen:

    ORDER BY `Wochentag` ASC, `von`ASC, `bis` DESC"

    Aber kommt dann halt drauf an, was du gneau vor hast, ansonsten ist die jetzige lösung schon gebrauchbar.

  • Zitat von GreenRover

    Man kann es noch so machen:

    ORDER BY `Wochentag` ASC, `von`ASC, `bis` DESC"

    Aber kommt dann halt drauf an, was du gneau vor hast, ansonsten ist die jetzige lösung schon gebrauchbar.

    joa ich glaub ich lasse es bei der seite bei den 5 abfragen.

    das order by was du hier gerade aufgeführt hast würde das http://www.tsv-ellerbek.de/ftg/kurstest1.php ergeben. also die wochentage sind nicht in der reihenfolge... aber danke nochmal für das ganze feedback.