Hallo zusammen,
jemand hat für mich mal ein kleines Script geschrieben, dass mir die Trainingsbeteiligung festhält und auch Statistiken ausgibt.
U.a. gibt es die Möglichkeit, die Anzahl von Trainingstagen vom 01.07. eines Jahres bis 30.06. eines Jahres anzeigen zu lassen.
Leider verschwindet dieses Ergebnis, weil ab 01.07. das Skript wieder bei Null anfängt. Die Daten sind allerdings in der DB weiterhin vorhanden.
Nun wollte ich mal fragen, ob mir jemand sagen kann, wie ich die vorhanden PHP-Datei "Statistik_Saison" so anpassen kann, dass ich die Möglichkeit habe, aus der Vorsaison mir die Anzahl an Trainingsbeteiligung anzeigen zu lassen?
Ich glaube das in der func.inc.php die Grundlage gelegt wird:
PHP-Code:
<?php
// ***********************************************************
// Liefert Kalenderwoche eines beliebigen Timestamps
// in folgenden Formaten:
// $value == 0 -> 9/2009, 23.02.09 - 01.03.09
// $value == 1 -> 9
// ***********************************************************
function getCW($ts,$value = 0) {
$y = date('Y',$ts);
$w = date('w',$ts);
$z = date('z',$ts);
$wjan4 = (367+$w-$z)%7;
$kw = (int)(1+($z-3+$wjan4)/7) - !$w + !$wjan4;
if (!$kw) {
$y--;
$kw = 52 + (int)(1==$wjan4 || (!$wjan4 && 29==date('t', mktime(0,0,0,2,1,$y))));
}
switch($value) {
case 0:
$nd = date('w');
switch($nd) {
case 0:
$first = $ts-3600*24*6;
$last = $ts;
break;
case 1:
$first = $ts;
$last = $ts+3600*24*6;
break;
case 2:
$first = $ts-3600*24*1;
$last = $ts+3600*24*5;
break;
case 3:
$first = $ts-3600*24*2;
$last = $ts+3600*24*4;
break;
case 4:
$first = $ts-3600*24*3;
$last = $ts+3600*24*3;
break;
case 5:
$first = $ts-3600*24*4;
$last = $ts+3600*24*2;
break;
case 6:
$first = $ts-3600*24*5;
$last = $ts+3600*24*1;
break;
}
$firstDayOfWeek = date('d.m.y',$first);
$lastDayOfWeek = date('d.m.y',$last);
return "$kw/$y, $firstDayOfWeek - $lastDayOfWeek";
break;
case 1:
return $kw;
break;
}
}
// ***********************************************************
// Liefert die ID der aktuellen Saison
// ***********************************************************
function getCurrentSaisonId() {
$woche = getCW(mktime(0,0,0), 1);
$jahr = date('Y');
if ($woche < 27) {
$select = "SELECT ID, Saison FROM Saison WHERE RIGHT(Saison, 4)='$jahr'";
} else {
$select = "SELECT ID, Saison FROM Saison WHERE LEFT(Saison, 4)='$jahr'";
}
$result = @mysql_query($select);
if (!$result) {
exit('<p>Fehler beim Lesen der Saisondaten: ' .
mysql_error() . '</p>');
}
$saison = mysql_fetch_array($result);
return $saison['ID'];
}
function getSaisonIdByWeek($week_time) {
$woche = date('W', $week_time);
$jahr = date('Y', $week_time);
if ($woche < 27) {
$select = "SELECT ID, Saison FROM Saison WHERE RIGHT(Saison, 4)='$jahr'";
} else {
$select = "SELECT ID, Saison FROM Saison WHERE LEFT(Saison, 4)='$jahr'";
}
$result = @mysql_query($select);
if (!$result) {
exit('<p>Fehler beim Lesen der Saisondaten: ' .
mysql_error() . '</p>');
}
$saison = mysql_fetch_array($result);
return $saison['ID'];
}
// ***********************************************************
// Prüft, ob 2 Arrays gleich sind
// Beim ersten Unterschied wird 'false' zurückgeliefert
// ***********************************************************
function getArrayEqual($array1, $array2) {
$length = count($array1);
for ($i=0; $i<$length; $i++) {
if ($array1[$i] != $array2[$i]) {
return false;
}
}
return true;
}
// ***********************************************************
// Prüft, ob für einen neu angelegten Spieler eine
// Trainingsbeteiligung gespeichert wurde
// ***********************************************************
function checkSidExistsOfCurrentWeekAndYear($sid, $aktuelleWoche, $jid) {
$result = mysql_query("SELECT SID FROM Anwesenheit WHERE SID='$sid' AND Woche='$aktuelleWoche' AND JID='$jid'") or die (mysql_error());
$resultList = mysql_fetch_array($result);
$sidAngelegt = $resultList['SID'];
//echo "$sidAngelegt :: ".$sid;
if ($sidAngelegt == $sid) {
return true;
} else {
return false;
}
}
?>
und in der statistik_saison.php die Daten dann entsprechend ausgegeben werden:
PHP-Code:
<?php
include_once 'includes/db.inc.php';
include_once 'includes/func.inc.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="basic.css">
<title>Trainingsbeteiligung: Saisonstatistik</title>
</head>
<body>
<h1>Trainingsbeteiligung: Saisonstatistik</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Verein wählen:
<select name="vid" size="1">
<option selected value="">Bitte auswählen</option>
<option value="">---------</option>
<?php
$vereine = @mysql_query('SELECT ID, Name FROM Vereine');
if (!$vereine) {
exit('<p>Kann keine Vereine aus der Datenbank lesen.</p>');
}
while ($verein = mysql_fetch_array($vereine)) {
$vereinsid = $verein['ID'];
$name = htmlspecialchars($verein['Name']);
if (isset($_POST['vid']) && $_POST['vid']==$vereinsid) {
echo "<option value='$vereinsid' selected='selected'>$name</option>\n";
} else {
echo "<option value='$vereinsid'>$name</option>\n";
}
}
?>
</select><input type="submit" value="los" /></p>
</form>
<?php
if(isset($_POST['vid'])) {
$vid = $_POST['vid'];
$jid = getCurrentSaisonId();
$aktuelleWoche = getCW(mktime(0,0,0), 1);
$result = mysql_query("
SELECT Vorname, Nachname, SUM(TageProWoche) AS TageProSaison
FROM Anwesenheit, Spieler
WHERE VID='$vid'
AND JID='$jid'
AND Spieler.ID=SID
GROUP BY Nachname, Vorname
ORDER BY TageProSaison DESC, Nachname ASC
");
if (!$result) {
exit('<p>Kann keine Spieler aus der Datenbank lesen: </p>'.mysql_error());
}
echo "<form action='";
echo $_SERVER['PHP_SELF'];
echo "' method='post'>";
echo "<table border='1' cellspacing='0' cellpadding='3'>";
echo "<tr><th align='left'>Name</th><th align='left'>Anwesenheit aktuelle Saison (in Tagen)</th></tr>";
while ($spieler = mysql_fetch_array($result)) {
$tageProSaison = $spieler['TageProSaison'];
$vorname = htmlspecialchars($spieler['Vorname']);
$nachname = htmlspecialchars($spieler['Nachname']);
echo "<tr><td>$nachname, $vorname</td><td>$tageProSaison</td></tr>";
}
echo "</table>";
echo "</form>";
}
?>
<p><a href="anwesenheit_verwalten.php">Zurück zur Anwesenheitsverwaltung</a></p>
</body>
</html>
Wäre toll, wenn mir da jemand helfen könnte, weil das Kind, dass die letzte Saison am häufigsten da war, noch was dafür bekommt. Jetzt fehlt mir aber das Ergebnis ^^
Vielen Dank,,
Preetz
Lesezeichen