Sortieren von Anwesenheitsliste

  • #1
E

edgar113

Neues Mitglied
Themenersteller
Dabei seit
20.11.2005
Beiträge
4
Reaktionspunkte
0
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.



Hier der Skript

Code:
<?php
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>

<?php
//------------------------------------------------------------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>


<?php
$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>


<?php
$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)
?>

* Code-Tags eingefügt *
 
  • #2
Hi

Müsste in etwa so aussehen deine neue SQL Abfrage:
Code:
SELECT name, id, count(*) AS anzahl FROM mgv_anwesenheit LEFT JOIN mgv_index ON mgv_anwesenheit.id = mgv_index.user_id WHERE mgv_index.jahr =->$year_today' GROUP BY mgv_anwesenheit.id ORDER BY anzahl DESC

Gruß, Michael
 
  • #3
Als ich muß echt sagen Spitze.
Hier wird einem prima geholfen.
Es Hat funktioniert.
Danke an alle.
Gruß
 
  • #4
Oh hab da noch was.
Wenn ich jetzt ein Jahr oder eine Kategorie auswähle ist die sortierung nicht richtig. Was müsste ich im code ändern.
Beim Seite aufrufen
$read_user = mysql_query (SELECT name, id, count(*) AS anzahl FROM mgv_anwesenheit LEFT JOIN mgv_index ON mgv_anwesenheit.id = mgv_index.user_id WHERE mgv_index.jahr =->$year_today' GROUP BY mgv_anwesenheit.id ORDER BY anzahl DESC);

Nach auswahl der Kategorie ?????????????????????????
$read_user = mysql_query (SELECT name, id, count(*) AS anzahl FROM mgv_anwesenheit LEFT JOIN mgv_index ON mgv_anwesenheit.id = mgv_index.user_id WHERE mgv_index.jahr =->$year_today' GROUP BY mgv_anwesenheit.id ORDER BY anzahl DESC);

??????????????????
 
  • #5
Hi

Code:
$read_user = mysql_query (SELECT name, id, count(*) AS anzahl FROM mgv_anwesenheit LEFT JOIN mgv_index ON mgv_anwesenheit.id = mgv_index.user_id LEFT JOIN koc1_appointments ON mgv_index.appointmentid=koc1_appointments.appointmentid WHERE mgv_index.jahr =->$year_today' AND category ='$usi_cat' GROUP BY mgv_anwesenheit.id ORDER BY anzahl DESC);

Gruß, Michael
 
  • #6
Geht Prima aber:
Wenn ich die Statistik aufrufe werden die Daten alle direkt angzeigt.
Wähle ich Proben geht es auch.
Wähle ich alle fehlen die Daten.



Danke für die Gute Arbeit
 
  • #7
Hi

Das liegt am komischen Aufbau von deinem PHP Skript :)
Das letztgenannte SQL Statement darf natürlich nur ausgeführt werden wenn eine kategorie != alle gewählt ist, ansonsten muss das von darüber ausgeführt werden.

Gruß, Michael
 
Thema:

Sortieren von Anwesenheitsliste

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben