Hallo Zusammen,
ich hab seit kurzem wieder Zeit mich um ein altes Projekt zu kümmern und dazu brauch ich mal Hilfe von erfahrenen PHP Programmierern.
Also ich versuche wieder weiter an meinem Tischtennis Scoreboard zu arbeiten, ich habe die Variante mit dem RPI und dem D1 verschmissen und möchts jetzt über einen Webserver und einem Tablet machen.
Startseite mit Auswahl der Spieler zwei Spieler sowie einer Bestoff Liste und einer Seite zum anlegen der Spieler funktionieren schon mal.
Auf Matchseite ist die Anzeige auch fertig, ich hab jetzt noch ein Problem mit den Updatefunktionen, da hab ich einfach zu viele verschachtelte Ifs und jetzt passt die Logik einfach nicht.
Hier mal Zweis Screenshots:
Startseite
Matchseite
Ich hab jetzt einfach mal 3 Links eingebaut die per Klick über den Querystring einen Punkt bei PlayerA oder PlayerB hochzähllen und einen der den aktuellen Satz abschliesst und einen neuen beginnt.
Und genau hier ist das Problem, ich komm einfach nicht auf einen grünen zweig mir meinen zig ifs, die sind auch nicht richtig verschachtelt weil er zb. nicht erkennt wann jemand 2 Sätze gewonnen hat und das Match somit aus ist oder wenn ein Match in den 3 Satz geht muss eigentlich nach dem dritten das Match aus sein.
Ich weiss nicht ob jemand die Zeit oder überhaut Lust hat um mal über den Code meines Updatescripts drüber zu schauen, da sie eigentlich eh immer alles wiederholt sieht es mehr aus als es ist, es geht auch garnicht um die funktionen der Updates und inserts, es geht eigentlich mehr um die Logik der abfragen.
Ich würde mich sehr freuen wenn mir jemand ein paar Tips geben könnte. (Aber Achtung ich habe nur begrenzt Ahnung von PHP also würde ich gerne bei einer einfachen Programmierweise bleiben, ist zwar meist mehr Code aber icch kanns zumindest halbwegs verstehen
Und ja ich weis, man könnnte jeden Block um min die Hälfte verkürzen aber ich kanns so halt besser lesen.
Hier der Codes:
<?php
//Verbindung zur Datenbank einbinden
include("settings.php");
//DB Tabelle
$tabelle = "score";
$zeitstempel = date('d-m-Y');
function redirect() {
echo "<meta http-equiv='refresh' content='3; URL=index.php'>";
}
## Update Seite ###
if(isset($_GET['pg']) && $_GET['pg']=='update'){
$updateseite = $db_link->query('SELECT * FROM '.$tabelle.' ORDER BY id DESC LIMIT 1 ');
$row = $updateseite->fetch_assoc();
echo $row['matchnr'];
// Spieler A macht einen Punkt
if(isset($_GET['point']) && $_GET['point']=='playerA') {
if($row['current_set_nr'] < 3) {
//update pA_po_set1 (PlayerA Point Set1)
$pA_point = "pA_po_set".$row['current_set_nr'];
$newscore = $row[$pA_point]+1;
$qry = "UPDATE ".$tabelle." SET ".$pA_point."=".$newscore." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
}else{
echo "Satz unter Player A nicht vorhanden";
}
}
//Spieler B macht einen Punkt
if(isset($_GET['point']) && $_GET['point']=='playerB') {
if($row['current_set_nr'] < 3) {
//update pB_po_set1 (PlayerB Point Set1)
$pB_point = "pB_po_set".$row['current_set_nr'];
$newscore = $row[$pB_point]+1;
$qry = "UPDATE ".$tabelle." SET ".$pB_point."=".$newscore." WHERE matchnr=".$row['matchnr']." ";
echo $qry;
$db_link->query($qry);
}else{
echo "Satz unter Player B nicht vorhanden";
}
}
// Satzende, neuer Satz beginnt
if($_GET['point'] && $_GET['point']=='nextSet') {
//Ende Satz 1
if($row['current_set_nr'] == 1){
$nextset = $row['current_set_nr']+1;
//Wenn Player A mehr Punkte als Player B Satzstand Player A erhöhen
if($row['pA_po_set1'] > $row['pB_po_set1']){
$update = $row['pA_set_wins']+1;
$qry = "UPDATE ".$tabelle." SET pA_set_wins=".$update.", current_set_nr=".$nextset." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
//Sonst Satzstand bei Player B erhöhen
}else{
$update = $row['pB_set_wins']+1;
$qry = "UPDATE ".$tabelle." SET pB_set_wins=".$update." , current_set_nr=".$nextset." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
}
}//Ende erster Satz
//Ende Satz 2
if($row['current_set_nr'] == 2){
//Wenn Player A mehr Punkte als Player B Satzstand Player A erhöhen
if($row['pA_po_set2'] > $row['pB_po_set2']){
$update = $row['pA_set_wins']+1;
$qry = "UPDATE ".$tabelle." SET pA_set_wins=".$update." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
//Wenn Player B mehr Punkte als Player A Satzstand Player B erhöhen
}else{
$update = $row['pB_set_wins']+1;
$qry = "UPDATE ".$tabelle." SET pB_set_wins=".$update." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
} //Ende Satzwin punkte
// Wenn kein Player 2 Sätze gewonnen hat, Spiel geht weiter
if($row['pA_set_wins'] < 2 && $row['pB_set_wins'] < 2) {
$nextset = $row['current_set_nr']+1;
$qry = "UPDATE ".$tabelle." SET current_set_nr=".$nextset." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
//Wenn ein Player 2 sätze gewonnen hat, Spiel beenden und Winner eintragen
}else{
//Prüfen ob Player A schon 2 gewonnene Sätze hat und somit Winner des Match ist
if($row['pA_set_wins'] > 1) {
$winner = $_SESSION['playerA'];
$qry = "UPDATE ".$tabelle." SET winner_name='".$winner."' WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
echo "Player B hat im zweiten Satz gewonnen: ".$winner;
}
//Prüfen ob Player B schon 2 gewonnene Sätze hat und somit Winner des Match ist
if($row['pB_set_wins'] > 1) {
$winner = $_SESSION['playerB'];
$qry = "UPDATE ".$tabelle." SET winner_name='".$winner."' WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
echo "Player B hat im zweiten Satz gewonnen: ".$winner;
}
}
} //Ende 2 Satz
if($row['current_set_nr'] == 3 && $row['winner_name']=="" ){
//Wenn Player A mehr Punkte als Player B Satzstand Player A erhöhen
if($row['pA_po_set3'] > $row['pB_po_set3']){
$update = $row['pA_set_wins']+1;
$qry = "UPDATE ".$tabelle." SET pA_set_wins=".$update." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
//Wenn Player B mehr Punkte als Player A Satzstand Player B erhöhen
}else{
$update = $row['pB_set_wins']+1;
$qry = "UPDATE ".$tabelle." SET pB_set_wins=".$update." WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
} //Ende Saatzwin punkte
//Prüfen ob Player A schon 2 gewonnene Sätze hat und somit Winner des Match ist
if($row['pA_set_wins'] > 1) {
$winner = $_SESSION['playerA'];
$qry = "UPDATE ".$tabelle." SET winner_name='".$winner."' WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
echo "Player A hat im dritten Sätz gewonnen: ".$winner;
redirect();
}
//Prüfen ob Player B schon 2 gewonnene Sätze hat und somit Winner des Match ist
if($row['pB_set_wins'] > 1) {
$winner = $_SESSION['playerB'];
$qry = "UPDATE ".$tabelle." SET winner_name='".$winner."' WHERE matchnr=".$row['matchnr']." ";
$db_link->query($qry);
echo "Player B hat im dritten Sätz gewonnen: ".$winner;
redirect();
}
} //Ende Satz 3
}
} //Ende Updateseite
?>
Alles anzeigen
Der Plan wäre dann noch zwei grosse schöne Buttons anstelle der Textlinks einzubauen und dann direkt über das Tablet die Punkte hochzählen.
Also es wäre super wenn mir jemand bei der Anordnung der ifs im nextSet bereich helfen könnte.
Es soll nach jedem Satzende das nicht vom System erkannt werden muss per Klick auf den Button "Satzende" in der db beim Player der die höhere Punktezahl hat aktuelle Satzstand um eins erhöht werden.
Weiters soll erkannt werden wenn ein Spieler zwei Sätze gewonnen hat und das Spiel beendet werden, egal ob zwei Sätze hintereinader gewonnen wurden oder der Zweite durch den dritten Satz gewonnen wurde.
Ich hoffe das klingt nicht alles wie wirres Zeug, aber wenn man so drin steckt dann vergisst man oft mal wichtige Details zu nennen.
Danke euch!