php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.07.2006, 10:13  
Erfahrener Benutzer
 
Registriert seit: 10.06.2005
Beiträge: 254
matthros
Standard einfacherer Lösungsweg

Hallo,

ich suche zu folgender Aufgabe eine einfache/bessere Lösung.
ich hab in eine mysql db die Minuten von gefallenen Toren
eingetragen, jedes Tor in eine eigene spalte.
jetzt hab ich mir die tore der heimmanschaft in ein array,
und die tore der gastmannschaft in ein array getan.
Diese beiden ließ ich nach den min ASC sortieren,
alos die arrays sehen jetzt in etwa so aus:

PHP-Code:
$torabfolge = array();
                            
$torabfolge[] = $row_spieldetails['tor_h_min_1'];
                            
$torabfolge[] = $row_spieldetails['tor_h_min_2'];
                            
$torabfolge[] = $row_spieldetails['tor_h_min_3'];
                            
$torabfolge[] = $row_spieldetails['tor_h_min_4'];
                            
$torabfolge[] = $row_spieldetails['tor_h_min_5'];
                            
$torabfolge[] = $row_spieldetails['tor_h_min_6'];
                            
sort($torabfolge);
                            
                            
$torabfolge_g = array();
                            
$torabfolge_g[] = $row_spieldetails['tor_g_min_1'];
                            
$torabfolge_g[] = $row_spieldetails['tor_g_min_2'];
                            
$torabfolge_g[] = $row_spieldetails['tor_g_min_3'];
                            
$torabfolge_g[] = $row_spieldetails['tor_g_min_4'];
                            
$torabfolge_g[] = $row_spieldetails['tor_g_min_5'];
                            
$torabfolge_g[] = $row_spieldetails['tor_g_min_6'];
                            
sort($torabfolge_g); 
soweit, sogut, wie könnte ich einen spielbericht text am leichtesten hinbekommen?
Mein Problem liegt daran das immer wenn ein tor fällt,
der aktuelle spielstand schwer zu ermitteln ist, also ob beim
2ten tor das 1:1 oder das 2:0 gefallen ist, bis zu den ersten
2 toren hab ich es mit einer komplizierten if-else verzweigung gelöst,
aber jetzt wirds viel zu kompliziert, wäre sehr schön wenn jemand von euch eine bessere variante kennt,
hier meine die versuche, welche auch funktionieren, aber halt nicht weiter tragbar sind:

PHP-Code:
<?php     // Tor 1
                            
if($torabfolge[0] != "" AND $torabfolge_g[0] != "") {
                                if(
$torabfolge[0] < $torabfolge_g[0]) {
                                    echo 
"In der ".$torabfolge[0]." Minute bringt ".$row_spieldetails['tor_h_1']." $heimverein mit 1:0 in                                             Führung.";
                                }
                                else {
                                    echo 
"In der ".$torabfolge_g[0]." Minute bringt ".$row_spieldetails['tor_g_1']." $gastverein mit 0:1 in                                             Führung.";
                                }
                            }
                            elseif(
$torabfolge[0] == "" AND $torabfolge_g[0] != "") {
                                echo 
"In der ".$torabfolge_g[0]." Minute bringt ".$row_spieldetails['tor_g_1']." $gastverein mit 0:1 in                                             Führung.";
                            }
                            else {
                                echo 
"In der ".$torabfolge[0]." Minute bringt ".$row_spieldetails['tor_h_1']." $heimverein mit 1:0 in                                             Führung.";
                            }
                    
                            
// Tor 2
                            
if($torabfolge[1] != "" AND $torabfolge_g[1] != "") {
                                if(
$torabfolge[1] < $torabfolge_g[1]) {
                                    echo 
"".$row_spieldetails['tor_h_2']."";
                                    if(
$torabfolge[0] < $torabfolge_g[0]) {
                                        echo 
"erzielt in der ".$torabfolge[1]." Minute bereits das 2:0 für die Hausherren";
                                    }
                                    else {
                                        echo 
"gelingt in der ".$torabfolge[1]." Minute mit einem strammen Weitschuss der Ausgleich für die Hausherren";
                                        
                                    }
                                
                                } 
// End 2. If
                                
else {
                                    echo 
"".$row_spieldetails['tor_g_2']."";
                                    if(
$torabfolge_g[0] < $torabfolge[0]) {
                                        echo 
"erzielt in der ".$torabfolge_g[1]." Minute bereits das 2:0 für die Gäste";
                                    }
                                    else {
                                        echo 
"gelingt in der ".$torabfolge_g[1]." Minute mit einem strammen Weitschuss der Ausgleich für die Gäste";
                                        
                                    }
                                }
                            
                            } 
// End 1. If
                            
elseif($torabfolge[1] == "" AND $torabfolge_g[1] != "") {
                                echo 
"".$row_spieldetails['tor_g_2']."";

                                if(
$torabfolge_g[0] < $torabfolge[0]) {
                                echo 
"erzielt in der ".$torabfolge_g[1]." Minute bereits das 2:0 für die Gäste";
                                }
                                else {
                                        echo 
"gelingt in der ".$torabfolge_g[1]." Minute mit einem strammen Weitschuss der Ausgleich für die Gäste";
                                }
                            }
                            elseif(
$torabfolge_g[1] == "" AND $torabfolge[1] != ""){
                                echo 
"".$row_spieldetails['tor_h_2']."";
                                if(
$torabfolge[0] < $torabfolge_g[0]) {
                                echo 
"erzielt in der ".$torabfolge[1]." Minute bereits das 2:0 für die Hausherren";
                                }
                                else {
                                        echo 
"gelingt in der ".$torabfolge[1]." Minute mit einem strammen Weitschuss der Ausgleich für die Hausherren";
                                }
                            }
                                
                                
                            
?>
matthros ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.07.2006, 11:07  
Erfahrener Benutzer
 
Registriert seit: 10.06.2005
Beiträge: 254
matthros
Standard

hab schon einen recht guten Weg gefunden was mir aber noch fehlt,
ist eine funktion die die anzahl der spalten in einer bestimmten zeile zählt, die nach einer WHERE clausel gefilter sind.

also er soll die spalten der zeile mit der spielid=1 und nur die spalten wo die zahl < 45 zählen, gibts sowas überhaupt?
matthros ist offline  
Alt 28.07.2006, 11:08  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

meinste sowas wie

WHERE spalte1 + spalte2 + spalte 3 < 45

oder was?
Flor1an ist offline  
Alt 28.07.2006, 11:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Für meine Begriffe, sieht das Auslesen der Tore ziemlich seltsam aus.
Deine Erwähung von Sortierbarkeit per SQL klingt noch gut ... das Ergebnis als 'tor_h_min_1' ... erschreckt mich aber zutiefst ^^

Dem übrigen Code, lasse ich lieber gar keinen Kommentar angedeihen ... da fällt mir auch nix zu ein ;P


Aber mal ein Hinweis:

Der beste Ort, um die Daten sinnvoll zu gestalten, ist das Auslesen.
Hier hast du (theoretisch) die Tore in der richtigen Reihenfolge. Und kannst einen Stand-pro-Tor hochzählen lassen.

Das bedeutet aber, dass du die Daten sicherlich ganz anders innnerhalb PHP zu verarbeiten hast, als du es aktuell versuchst.
Guradia ist offline  
Alt 28.07.2006, 11:29  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Ich halte es für wesentlich sinnvoller die zugrunde liegende Datenbankstruktur zu verändern, in dem du die Tore in eine zweite Tabelle mit folgenden Spalten auslagerst:
Code:
spielid
minute
tore_heimmannschaft
tore_gastmannschaft
xabbuh ist offline  
Alt 28.07.2006, 12:35  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von xabbuh
Ich halte es für wesentlich sinnvoller die zugrunde liegende Datenbankstruktur zu verändern, in dem du die Tore in eine zweite Tabelle mit folgenden Spalten auslagerst:
Code:
spielid
minute
tore_heimmannschaft
tore_gastmannschaft
Wobei ich deine vorgeschlagene Struktur nicht verstehe.

Ich würde eine Tabelle für die Tore anlegen
Code:
goals
id | match_id | player_id | team_id | minute | goal_type
team_id ist eingefügt, weil ja schließlich auch Eigentore erzielt werden können.
goal_type kann eine ID der goal_types Tabelle sein, in der verschiedene Tor-Typen stehen. Handelfmeter, Faulelfmeter, nach Standard-Situation, ..
Aber mag vielleicht auch etwas zu aufgebläht dadurch werden.

Wenn du für das Feld "minute" den Typ TIME festlegst, kannst du später auch mal nach dem schnellsten Tor suchen, wenn du die Sekundenzahl mit eingetragen hast.


Das Endergbnis würde ich übrigens trotzdem separat in der Resultat-Tabelle speichern.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Einfacherer Weg um rauszufinden ob Eintrag in DB? PHP Tipps 2005-2 1 05.10.2005 15:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.