Sortieren Anwesenheitsliste

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sortieren Anwesenheitsliste

    Hallo
    ich habe mir eine Mysql-Datenbank mit einer Anwesenheitsliste angelegt.
    Nun möchte ich diese Anwesenheitsliste nach der anzahl der Anwesenheiten sortieren.
    Wie kann ich dieses machen.
    Hier ein Link zur HP.
    http://www.mgv-imhausen.de/admin/stats.php


    Hier der Skript

    <?
    include("config.php");
    include("connect.php");
    $year_today = date(Y);
    $year_selected = $_POST['year'];
    $cat = $_POST['cat'];
    $anzahl = 0;
    ?>

    <html>
    <head>
    <title>- Statistik <? echo $year_selected ?> </title>
    </head>
    <body vlink="#666666" alink="#666666" link="#666666">
    <basefont face="Tahoma,Helvetica" size="2">
    <center><b>- Statistik <? echo $year_selected ?> -</b><br><br>
    <a href = "index.php"><- zurück</a><br><br>

    <form method='post' action='stats.php'>
    Jahr <select name='year'>
    <option name='year' value='<? echo $year_today; ?>' selected><? echo $year_today; ?></option>
    <option name='year' value='2004'>2004</option>
    <option name='year' value='2006'>2006</option>
    <option name='year' value='2007'>2007</option>
    </select><br>

    Kategorie <select name='cat'>
    <option name='cat' value='alle'>-alle-</option>
    <option name='cat' value='1'>Proben</option>
    <option name='cat' value='2'>Auftritte</option>
    <option name='cat' value='3'>sonstiges Termine</option>
    <option name='cat' value='4'>Vorstand Sitzungen</option>
    <option name='cat' value='5'>Termine von anderen Vereinen</option>
    </select><br>

    <input type=submit name='button' value='anzeigen' id='button'>
    </form><br>

    <?
    //------------------------------------------------------------bei seitenaufruf----------------------------------------------------------------
    if ($year_selected == 0)
    {
    $counter = 0;
    $read_appointments = mysql_query("SELECT * FROM koc1_appointments WHERE bearbeitet = '1'");

    while ($data = mysql_fetch_array($read_appointments))
    {
    $date = explode("-", $data[startdate]);
    $jahr=$date[0];

    if ($jahr == $year_today)
    {
    $counter++;
    }

    }

    echo "<b>$counter</b> Termine im Jahr <b>$year_today</b> bereits vorüber.<br>";
    ?>

    <table border=1>
    <tr>
    <td bgcolor='#F0F0F0'>
    <b><font face='Tahoma,Helvetica' size='2'><center>Name</b>
    </td>
    <td bgcolor='#F0F0F0'>
    <b><font face='Tahoma,Helvetica' size='2'><center>anwesend</b>
    </td>
    </tr>


    <?
    $read_user = mysql_query ("SELECT name, id FROM mgv_anwesenheit ORDER BY name ASC");
    while ($data = mysql_fetch_array($read_user))
    {
    echo "
    <tr>
    <td>
    <font face='Tahoma,Helvetica' size='2'>$data[name]
    </td>";

    $read_index = mysql_query ("SELECT * FROM mgv_index WHERE user_id='$data[id]' && jahr = '$year_today'");
    $anzahl = mysql_num_rows($read_index);

    if ($anzahl == 0)
    {
    echo "<td><font face='Tahoma,Helvetica' size='2' color='red'>0</td>";
    }
    else
    {
    $percent = round(100 / $counter * $anzahl, 0);
    echo "<td><font face='Tahoma,Helvetica' size='2'><b>$anzahl</b>
    <img src='.\images\balken1.jpg' width='$percent' height='5' alt='Balken'>
    <font face='Tahoma,Helvetica' size='1'>($percent%)</td>";
    }
    }
    }
    //---------------------------------------------------------------nur wenn jahr und kategorie ausgewählt---------------------------------------
    else
    {
    $counter = 0;
    if ($cat == alle)
    {
    $read_appointments = mysql_query("SELECT * FROM koc1_appointments WHERE bearbeitet = '1'");
    }
    else
    {
    $read_appointments = mysql_query("SELECT * FROM koc1_appointments WHERE bearbeitet = '1' && category = '$cat'");
    }

    while ($data = mysql_fetch_array($read_appointments))
    {
    $date = explode("-", $data[startdate]);
    $jahr=$date[0];

    if ($jahr == $year_selected)
    {
    $counter++;
    }
    }
    $usi_cat = $cat;
    if ($date[0] == 0)
    {
    echo "keine Termine";
    }
    else
    {

    if ($cat == 1)
    {
    $cat = 'Probe(n)';
    }
    if ($cat == 2)
    {
    $cat = 'Auftritt(e)';
    }
    if ($cat == 3)
    {
    $cat = 'sonstige(r) Termin(e)';
    }
    if ($cat == 4)
    {
    $cat = 'Vorstand Sitzunge(n)';
    }
    if ($cat == 5)
    {
    $cat = 'Termin(e) von anderen Vereinen';
    }
    if ($cat == alle)
    {
    $cat = 'Termine';
    }

    echo "<b>$counter</b> $cat im Jahr <b>$year_selected</b> bereits vorüber.<br>";
    ?>

    <table border=1>
    <tr>
    <td bgcolor='#F0F0F0'>
    <b><font face='Tahoma,Helvetica' size='2'><center>Name</b>
    </td>
    <td bgcolor='#F0F0F0'>
    <b><font face='Tahoma,Helvetica' size='2'><center>anwesend</b>
    </td>
    </tr>


    <?
    $read_user = mysql_query ("SELECT name, id FROM mgv_anwesenheit ORDER BY name ASC");
    while ($data = mysql_fetch_array($read_user))
    {
    echo "
    <tr>
    <td>
    <font face='Tahoma,Helvetica' size='2'>$data[name]
    </td>";
    if ($usi_cat == alle)
    {
    $read_index = mysql_query ("SELECT * FROM mgv_index,koc1_appointments WHERE mgv_index.appointmentid=koc1_appointments.appointmentid and user_id='$data[id]' && jahr = '$year_selected'");
    }
    else
    {
    $read_index = mysql_query ("SELECT * FROM mgv_index,koc1_appointments WHERE mgv_index.appointmentid=koc1_appointments.appointmentid and user_id='$data[id]' && jahr = '$year_selected' and category ='$usi_cat'");
    }
    $anzahl = mysql_num_rows($read_index);

    if ($anzahl == 0)
    {
    echo "<td><font face='Tahoma,Helvetica' size='2' color='red'>0</td>";
    }
    else
    {
    $percent = round(100 / $counter * $anzahl, 0);
    echo "<td><font face='Tahoma,Helvetica' size='2'><b>$anzahl</b>
    <img src='.\images\balken1.jpg' width='$percent' height='5' alt='Balken'>
    <font face='Tahoma,Helvetica' size='1'>($percent%)</td>";
    }
    }
    }
    }

    echo "</table>";
    include ("footer.html")
    ?>

  • #2
    und jetzt?

    Kommentar


    • #3
      also wenn du die namen sotiert ausgibts wie geht das dann wohl mit der anwesenheit?

      Kommentar


      • #4
        wie und jetzt?
        Die Frage war, wie kann ich diese liste nach den Anwesenheiten sortieren und nicht nach namen.

        Kommentar


        • #5
          Original geschrieben von edgar113
          wie und jetzt?
          Die Frage war, wie kann ich diese liste nach den Anwesenheiten sortieren und nicht nach namen.
          Indem Du asl Sortierkriterium bei Der Datenbankabfrage eben nicht den namen sondern das gewünschte Feld angibst. Zur Zeit lässt Du nach name sortieren.

          Du belastest den MySQLServer auch unnötig mit Abfragen obwohl Du bloss die Summe ermitteln möchtest.
          Schau Dir mal den MySQL-Befehl count() an.

          Kommentar


          • #6
            Aber was ist asl ?
            Wo find ich was darüber?

            Kommentar


            • #7
              Das war ein Tippfehler - das sollte "als" heißen.

              Das Sortierkriiterium ist "ORDER BY".
              Stammt der obere Code gar nicht von Dir?

              Kommentar


              • #8
                Ups Danke.
                Könnetst du mir sagen, wie meine Tabelle heist?
                Ich bin noch ziemlich neu und hab mir die Abfragen zusammengestrickt.

                Kommentar


                • #9
                  ???
                  Ich soll Dir sagen, wie Deine Tabelle heißt?
                  Hä, was?

                  Kommentar


                  • #10
                    Also momentan lasse ich nach namen sortieren.
                    $read_user = mysql_query ("SELECT name, id FROM mgv_anwesenheit ORDER BY name ASC");

                    Was müsste ich ändern wenn ich nach der Tabelle sortieren will.
                    Tu mir echt leid, aber ich hab nicht viel ahnung.
                    Danke

                    Kommentar


                    • #11
                      Woher soll ich wissen welche Spalten Du noch in der Tabelle hast nach denen man sortieren könnte?
                      Schau Dir mal "ORDER BY" an und versuche zu verstehen wofür das gut ist und wie das funktioniert. Du musst Dir schon ein paar Grundlagen aneigenen.

                      Kommentar

                      Lädt...
                      X