2Danke
ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
253
253
EMPFEHLEN
-
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);
$wert2= mysql_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."'";
}
?>
-
Ich seh in deiner Schleife keine Ausführung von $sql.
---------------------------------------------------------------------------------------------------
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
-
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
-
Du führst dein $SQL nirgens aus in deinem Beispiel.
Aber was anderes. Du kannst dieses ganze Script in ein einziges SQL packen
In PHP könnte dass dann so aussehenCode 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;
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);
---------------------------------------------------------------------------------------------------
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
-
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
-
MYSQL INSERT wird nur einmal in foreach Schleife ausgeführt
Von br3doxx im Forum PHPAntworten: 5Letzter Beitrag: 21.03.11, 12:05 -
BBcode wird nur einmal ausgeführt..
Von _saurerregen_ im Forum PHPAntworten: 1Letzter Beitrag: 17.01.08, 00:26 -
while-schleife wird nur einmal ausgeführt
Von Stelo im Forum PHPAntworten: 2Letzter Beitrag: 06.01.08, 12:13 -
function wird nur einmal ausgeführt
Von Hookah im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 16.08.07, 21:02 -
[Js] Windows Resize wird nur einmal ausgeführt
Von vquicksilver im Forum Javascript & AjaxAntworten: 16Letzter Beitrag: 31.03.06, 12:43





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren