tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
253
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Xiaodeguo Xiaodeguo ist offline Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    10
    Hallo,

    ich habe folgendes Problem,
    in meiner WHILE Schleife sollen die Daten von Usern erfasst und dann geupdated werden.
    Das Problem ist er macht es nur mit dem ersten Spieler. Wenn ich aber anstatt der UPDATE Anweisung ein ECHO ausgeben lasse, gibt er mir die richtigen informationen für alle Spieler.

    Was ist falsch und wie ist es richtig? Wäre sehr dankbar für jede hilfreiche Antwort:

    Quellcode:
    PHP-Code:
    <?php
    include ('config.php');
    error_reporting(E_ALL);    
    $db_link = @mysql_connect($dbhost$dbusername$dbpasswort);  
    mysql_select_db($dbname); 

    /**
     * ALLGEMEINE ABFRAGE ALLER SPIELER
     */

    $sql "SELECT *
                    FROM "
    .$tabspieler."
                    ORDER BY ID_spieler DESC"
    ;
                    
                    
    $result mysql_query($sql);
                    while (
    $data mysql_fetch_object($result)){
                
                
    /**
                 * BERECHNET DIE PUNKTE DES SPIELER *ADDITION*
                 */
                
                
    $abfrage =  "SELECT SUM(punkte) AS punkte2 
                            FROM "
    .$tabtipps."
                            WHERE
                            k_spieler = '"
    .$data->k_name."'";
                            
                            
    $ergebnis=mysql_query($abfrage);
                            
    $wert2mysql_fetch_array($ergebnis);
                            
                
    /**
                  * ENTNIMMT DIE ABGEGEBEN TIPPS UND ERSTELLT DEN WERT PUNKTE PRO TIPP
                  */ 
                
                
    $abfrage2 "SELECT * 
                            FROM "
    .$tabtipps."
                            WHERE
                            k_spieler = '"
    .$data->k_name."'";
                            
                            
    $ergebnis2=mysql_query($abfrage2);
                            
                            
    $rows mysql_num_rows($ergebnis2);
                            
    $td $wert2["punkte2"]/$rows;
                
    /**
                 * UPDATED DIE SPIELER INFORMATION
                 */
                
                
                
    $sql =      "UPDATE ".$tabspieler."
                            SET
                            g_punkte = '"
    .$wert2["punkte2"]."',
                            t_punkte = '"
    .number_format($td,2)."',
                            g_tipps = '"
    .$rows."'
                            WHERE
                            k_name = '"
    .$data->k_name."'";        
                            
                     
    }
    ?>
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ich seh in deiner Schleife keine Ausführung von $sql.
    Xiaodeguo bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Xiaodeguo Xiaodeguo ist offline Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    10
    Hallo Yaslaw,

    erstmal Danke für deine sehr schnelle Antwort.
    Nun muss ich dir gestehen, ich bin noch weit am Anfang mit PHP und habe nur wenig Erfahrung.
    Daher kann ich mit deiner Aussage, dass keine Ausführung von $sql in der Schleife vorhanden ist nicht viel anfangen.

    Wäre dir dankbar wenn du mir das erklären könntest.
     
    Mit freundlichem Gruß
    Xiaodeguo

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du führst dein $SQL nirgens aus in deinem Beispiel.

    Aber was anderes. Du kannst dieses ganze Script in ein einziges SQL packen
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    UPDATE
        {$tabspieler} AS spieler,
        (
            SELECT
                k_spieler,
                SUM(punkte) AS s_punkte,
                COUNT(*) AS g_tipps,
                SUM(punkte)/COUNT(*) AS t_punkte
            FROM
                {$tabtipps}
            GROUP BY
                k_spieler
        ) AS tipps
    SET
        spieler.s_punkte = tipps.s_punkte,
        spieler.g_tipps  = tipps.g_tipps,
        spieler.t_punkte = tipps.t_punkte
    WHERE
        spieler.k_spieler = tipps.k_spieler;
    In PHP könnte dass dann so aussehen
    PHP-Code:
    $sql = <<<SQL
    UPDATE
        
    {$tabspieler} AS spieler,
        (
            SELECT
                k_spieler,
                SUM(punkte) AS s_punkte,
                COUNT(*) AS g_tipps,
                SUM(punkte)/COUNT(*) AS t_punkte
            FROM
                
    {$tabtipps}
            GROUP BY
                k_spieler
        ) AS tipps
    SET
        spieler.s_punkte = tipps.s_punkte,
        spieler.g_tipps  = tipps.g_tipps,
        spieler.t_punkte = tipps.t_punkte
    WHERE
        spieler.k_spieler = tipps.k_spieler;
    SQL;
    mysql_query($sql); 
    Xiaodeguo bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Xiaodeguo Xiaodeguo ist offline Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    10
    Hallo Vaslaw,

    erneut ein dicken Dank für deine Hilfe, du hast mir gleich in mehrer Hinsicht geholfen.

    1. Ausführung der $sql muss vorhanden sein (Dies habe ich nun verstanden).
    2. Man kann Abfragen verschachteln und muss nicht jedes mal einen eigenen Befehl tippen.
    3. Man kann schon in der SQL Abfrage neue Variabeln bestimmen.

    So und zu guter Letzt, hier nun der funktionierende Code:

    PHP-Code:
    <?php

    include ('config.php');                                         

    error_reporting(E_ALL);                                         
    $db_link = @mysql_connect($dbhost$dbusername$dbpasswort);  
    mysql_select_db($dbname); 

    $sql "UPDATE ".$tabspieler." AS spieler,
            (SELECT 
                k_spieler, 
                SUM(punkte) AS g_punkte, 
                COUNT(*) AS g_tipps, 
                SUM(punkte)/COUNT(*) AS t_punkte
            FROM
                "
    .$tabtipps."
                GROUP BY
                k_spieler) AS tipps
            SET
                spieler.g_punkte = tipps.g_punkte,
                spieler.g_tipps  = tipps.g_tipps,
                spieler.t_punkte = tipps.t_punkte
            WHERE
                spieler.k_name = tipps.k_spieler"
    ;


     
    mysql_query($sql) OR              
    die(
    "Query: <pre>".$sql."</pre>\n".                  
    "Fehler: ".mysql_error());
    mysql_close($sql);  

    header ("Location: index.php?act=ranking.php");
    ?>
     
    Mit freundlichem Gruß
    Xiaodeguo

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 21.03.11, 12:05
  2. BBcode wird nur einmal ausgeführt..
    Von _saurerregen_ im Forum PHP
    Antworten: 1
    Letzter Beitrag: 17.01.08, 00:26
  3. Antworten: 2
    Letzter Beitrag: 06.01.08, 12:13
  4. function wird nur einmal ausgeführt
    Von Hookah im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 16.08.07, 21:02
  5. [Js] Windows Resize wird nur einmal ausgeführt
    Von vquicksilver im Forum Javascript & Ajax
    Antworten: 16
    Letzter Beitrag: 31.03.06, 12:43