Ich erstelle eine Website in PHP, um Ping Pong Noten für meine Schule zu protokollieren, und derzeit wird der Spieler, der gewinnt die WinnerID, LoserID, PointsFor, PointsAgainst
loggen. Ich habe zwei Tabellen mit den folgenden Beziehungen.Brauchen Sie Hilfe bei der Berechnung von Gewinnen und Verlusten von Punkten
Tabelle: Benutzer
- benutzer_ID (PK)
- Benutzername
- Elo
Tabelle: Spiele
- game_id (PK)
- WinnerID (FK)
- LoserID (FK)
- PointsFor
- PointsAgainst
Meine Insert-Anweisung in der PHP-Datei ist:
INSERT INTO games(WinnerID,LoserID,PointsFor,PointsAgainst) VALUES('$Winner_ID','$Loser_ID','$userscore','$oppscore')"
Hier ist, was ich versucht habe, aber es wird nicht angezeigt die Punktzahl richtig.
SELECT min(u.username) 'Username', COUNT(g.WinnerID) 'Wins', sum(g.PointsFor) 'Points For', sum(g.PointsAgainst) 'Points Against', u.Elo 'Ranking'
from games g
LEFT JOIN users u
on g.WinnerID = u.user_id
Group by g.WinnerID
Wie Sie oben durch das Bild sehen können, werden die Punkte für und Punkte gegen Summen addieren sich nicht. Momentan werden nur die Statistiken für den Gewinner angezeigt. Das heißt, wenn PlayerA 21-5 gewinnt, wird es aus der Select-Anweisung angezeigt, aber PlayerB zeigt keine Punktzahl von 5-21. Jede Hilfe wird geschätzt.
PHP-Code für Seite Noten eingeben:
if(isset($_POST['btn-post']))
{
$opponent = $_POST["opponent"];
//$opponent = array_key_exists('opponent', $_POST) ? $_POST['opponent'] : false;
$userscore = mysql_real_escape_string($_POST['userscore']);
$oppscore = mysql_real_escape_string($_POST['oppscore']);
if($userscore != $oppscore)
{
if($userscore > $oppscore)
{
$Winner_ID = $_SESSION['user'];
$query = mysql_query("SELECT user_id FROM users WHERE username = '".$opponent."'");
$result = mysql_fetch_array($query) or die(mysql_error());
$Loser_ID = $result['user_id'];
$query1 = mysql_query("SELECT Elo FROM users WHERE user_id=".$_SESSION['user']);
$result1 = mysql_fetch_array($query1) or die(mysql_error());
$winnerRating = $result1['Elo'];
$query2 = mysql_query("SELECT Elo FROM users WHERE user_id=".$Loser_ID);
$result2 = mysql_fetch_array($query2) or die(mysql_error());
$loserRating = $result1['Elo'];
$rating = new Rating($winnerRating, $loserRating, 1, 0);
$results = $rating->getNewRatings();
if(mysql_query("UPDATE users SET Elo = " . $results['a'] . " WHERE user_id=".$_SESSION['user']))
{
}
else
{
?>
<script>alert('There was an error while entering winners(user) ranking...');</script>
<?php
}
if(mysql_query("UPDATE users SET Elo = " . $results['b'] . " WHERE user_id=".$Loser_ID))
{
}
else
{
?>
<script>alert('There was an error while entering losers(opp) ranking..');</script>
<?php
}
}
elseif($oppscore > $userscore)
{
$Loser_ID = $_SESSION['user'];
$query = mysql_query("SELECT user_id FROM users WHERE username = '".$opponent."'");
$result = mysql_fetch_array($query) or die(mysql_error());
$Winner_ID = $result['user_id'];
//get rating from user table in database
$query1 = mysql_query("SELECT Elo FROM users WHERE user_id=".$_SESSION['user']);
$result1 = mysql_fetch_array($query1) or die(mysql_error());
$loserRating = $result1['Elo'];
$query2 = mysql_query("SELECT Elo FROM users WHERE user_id=".$Loser_ID);
$result2 = mysql_fetch_array($query2) or die(mysql_error());
$winnerRating = $result1['Elo'];
$rating = new Rating($winnerRating, $loserRating, 1, 0);
$results = $rating->getNewRatings();
$results = $rating->getNewRatings();
if(mysql_query("UPDATE users SET Elo = " . $results['b'] . " WHERE user_id=".$_SESSION['user']))
{
}
else
{
?>
<script>alert('There was an error while entering losers(user) ranking...');</script>
<?php
}
if(mysql_query("UPDATE users SET Elo = " . $results['a'] . " WHERE user_id=".$Winner_ID))
{
}
else
{
?>
<script>alert('There was an error while entering winners(opp) ranking...');</script>
<?php
}
}
if(mysql_query("INSERT INTO games(WinnerID,LoserID,PointsFor,PointsAgainst) VALUES('$Winner_ID','$Loser_ID','$userscore','$oppscore')"))
{
?>
<script>alert('Your scores were successfully entered');</script>
<?php
}
else
{
?>
<script>alert('There was an error while entering your score...');</script>
<?php
}
}
else
{
?>
<script>alert('There cannot be a tie in ping pong, please re-enter your scores...');</script>
<?php
}
}
?>
Also Ihre eigentliche Frage ist, wie Sie den Verlierer in Ihrer Abfrage angezeigt bekommen, die derzeit nur den Gewinner zeigt? – Sean
Können Sie uns ein Beispiel zeigen, was Ihr 'SELECT' jetzt zurückgibt, und was es zurückgeben soll? –
@Sean Genau. Es zeigt nur Informationen für die WinnerID, glaube ich, korrigiere mich, wenn ich falsch liege. Mein Problem ist, dass die Punkte für und gegen nicht zusammenkommen. Sie wären gleich. Gleiches gilt für Gewinne und Verluste. –