PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sortieren von Anwesenheitsliste


edgar113
19.11.2005, 21:11:23
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")
?>

vt1816
20.11.2005, 10:49:04
...
<?
$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>";
}
}
...

Tausche die Reihenfolgen der Abfragen: 1.) die sortierte Anzahl der Anwesenheiten ermitteln (auch bei weiteren einschränkenden Kriterien [Proben, etc.]) und dann 2.) die dazugehörigen Namen ermitteln. Zum Schluss alles ausgeben.
Zweite Möglichkeit: beide Tabellen bei der Abfrage mit "JOIN" verbinden und ausgeben.

edgar113
20.11.2005, 13:49:51
Hy danke.
Es will aber nicht klappen.
Könntest du die änderung mal angeben.
Ich klaube ich hab noch zu wenig erfahrung.
Danke

vt1816
20.11.2005, 14:03:40
Wie sieht Deine Abfrage jetzt aus?

edgar113
20.11.2005, 14:32:42
<?
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_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>";
$read_user = mysql_query ("SELECT name, id FROM mgv_anwesenheit");
while ($data = mysql_fetch_array($read_user))
{
echo "
<tr>
<td>
<font face='Tahoma,Helvetica' size='2'>$data[name]
</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")
?>

xabbuh
20.11.2005, 14:35:49
Benutze bitte die php-Tags des Forums und kommentiere dein Script sinnvoll. Damit machst du es jedem, der dir helfen will, wesentlich einfacher.

edgar113
20.11.2005, 15:10:36
Hab die Abfrage entwas verkürzt.
Bitte habt ein wenig rücksicht.
Ich habe von PHP kaum ahnung.
Diese sache habe ich in Stundenlagen versuchen zusammengestellt.
Ich möchte lediglich nur nach anzahl sortieren.
Hier die verkürzte Abfrage

<?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='stats1.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---------------------------------------



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

xabbuh
20.11.2005, 15:37:06
Ich habe von PHP kaum ahnung.
Diese sache habe ich in Stundenlagen versuchen zusammengestellt.
Ich möchte lediglich nur nach anzahl sortieren.
Das ist aber auch kein Grund, meine beiden Hinweise völlig zu ignorieren.

Opendix
20.11.2005, 15:39:14
und vielleicht wäre es noch sinnvoll wenn du die Struktur deiner Tabellen mal posten würdest, man kann das ja nicht einfach so wissen :P

edgar113
20.11.2005, 18:15:02
Hier die Tabellenstruktur.
mgv_index : appointmentid int(10)
user_id int(10)
jahr int(4)
mgv_anwesenheit :id int(50)
name varchar(25)
stimme varchar(15)
edit int(1)
koc1_appointments : appointmentid bigint(20) bearbeitet int(1)
mgv_index

appointmentid user_id jahr
105 18 2005
105 19 2005
105 21 2005

mgv_anwesenheit (ist die Mitgliederliste)
id name stimme edit
18 Rödder J. 2. Tenor 1
19 Blumberg B. 2. Tenor 1
21 Kück W. 1. Tenor 1

koc1_appointments

appointmentid bearbeitet
105 1


Ich hoffe es hilft.
Welche daten müsste ich noch bringen .
Gruß

xabbuh
20.11.2005, 18:25:48
Und wie soll die Ausgabe jetzt aussehen?

vt1816
21.11.2005, 11:43:45
Hier die Tabellenstruktur.
mgv_index : appointmentid int(10)
user_id int(10)
jahr int(4)
mgv_anwesenheit :id int(50)
name varchar(25)
stimme varchar(15)
edit int(1)
koc1_appointments : appointmentid bigint(20) bearbeitet int(1)
mgv_index

appointmentid user_id jahr
105 18 2005
105 19 2005
105 21 2005

mgv_anwesenheit (ist die Mitgliederliste)
id name stimme edit
18 Rödder J. 2. Tenor 1
19 Blumberg B. 2. Tenor 1
21 Kück W. 1. Tenor 1

koc1_appointments

appointmentid bearbeitet
105 1


Ich hoffe es hilft.
Welche daten müsste ich noch bringen .
GrußWie sind mgv_index und mgv_anwesenheit verknüpft ?


Bitte habt ein wenig rücksicht.
Ich habe von PHP kaum ahnung.
Es sollten aber die Hinweise beachtet werden, denn die haben nichts mit wenig Ahnung zu tun. Der Quelltext läßt sich nur sehr schwer lesen. Bitte benutze den entsprechenden Tag. ... Siehe auch meine erste Antwort. Dann wirds auch mit der Unterstützung besser klappen! ;-)