Ergebnis 1 bis 2 von 2

Thema: Script anpassen

  1. #1
    Contao-Fan
    Registriert seit
    15.12.2011.
    Beiträge
    812

    Standard Script anpassen

    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

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    wie wäre es in der Rubrik? https://community.contao.org/de/foru...Auftr%C3%A4ge)

    und bei der Gelegenheit die Sachen auf Contao-FW umschreiben lassen...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •