Beitrag von Max (102 Beiträge) am Mittwoch, 28.September.2005, 14:54.
Bundesliga Tippspiel; Auswertung funktioniert nicht
Hallo, ich bin dabei ein Tippspiel für die Bundesliga zu machen.
Wenn ein Ergebnis genau übereinstimmt gibt's 3 Punkte, wenn man die Tordifferenz richtig Tippt gibt's 2 Punkte, wenn Sieg oder Niederlage richtig getippt wurden gibt's 1 Punkt. Alles andere sind 0 Punkte.
Demnach hab ich nun eine Tabelle gemacht, in der alle getippten Ergebnisse stehen ($HeimErg1 - $HeimErg9 und $GastErg1-9, da's ja immer neun Spiele pro Spieltag sind). Zusätzlich werden die Punkte und der Benutzername abgespeichert.
Die aktuellen Ergebnisse ($heimErg1-9, $gastErg1-9) und der Spieltag werden mittels Post(Formular) übergeben.
Nun hab ich sowas gemacht:
get "Spieltag==$spieltag sort=User", "Tip";
while(get_next("Tip"))
{
$punkt=0;
$h1=$HeimErg1;
$g1=$GastErg1;
$g2=$GastErg2;
...usw
if ($heimErg1 == $h1 && $gastErg1 == $g1)
{
$punkt=$punkt+3;
}
if (($heimErg1-$gastErg1) == ($h1-$g1))
{
$punkt=$punkt+2;
}
if ((($heimErg1 > $gastErg1) && ($h1 > $g1)) || (($heimErg1 < $gastErg1) && ($h1 < $g1)))
{
$punkt=$punkt+1;
}
if ($heimErg2 == $h2 && $gastErg2 == $g2)
...usw
mod "User==$User && Spieltag==$spieltag", ["Punkte", $punkt], "Tip";
}
Alle Ergebnisse hab ich mal in Variablen getan, da ich dachte es liegt an dem.
Wenn ich das nun ausführe, dauerts ewig, und irgendwann sagt der Browser "Connection failed".
Wenn ich dann in die Datenbank schaue, hat die Funktion nur einen Datensatz bearbeitet, und die Größe der Datenbank steigt um das x-fache, obwohl sie im Moment nur drei Datensätze enthält, und die korrekte Punktzahl eingetragen wurde.
Kann mir da jemand weiter helfen?
Antworten
Beitrag von Ulf (144 Beiträge) am Mittwoch, 28.September.2005, 18:14.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
weiß ich auch nicht so richtig,
vieleicht hilft
User==!$User
muß irgendwas mit doppelter Genaigkeit zu tun haben ???
bloß mal zum Probieren - Ulf
Antworten
Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 28.September.2005, 18:15.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
Antworten
Beitrag von Max (102 Beiträge) am Donnerstag, 29.September.2005, 08:22.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
Ich habs probiert. Jetzt kommt wenigstens die Meldung vom Browser nicht mehr, aber es wird immer nur noch der erste Datensatz bearbeitet. Ich denke auch, dass es an dem mod liegt. Wenn's so nicht geht, muss ich halt ne zweite Tabelle machen. Das wär aber nur ne notlösung, da ich alle Daten gern beieinander hätte.
Zur Datenbank :
Ich habe die Felder:
User
Punkte
HeimErg1
GastErg1
HeimErg2
GastErg2
HeimErg3
GastErg3
HeimErg4
GastErg4
HeimErg5
GastErg5
HeimErg6
GastErg6
HeimErg7
GastErg7
HeimErg8
GastErg8
HeimErg9
GastErg9
Die richtigen Daten werden mittels Post übergeben, aber im Moment noch nicht in der DB gespeichert.
Antworten
Beitrag von Claus (4645 Beiträge) am Donnerstag, 29.September.2005, 08:49.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
Antworten
Beitrag von Max (102 Beiträge) am Donnerstag, 29.September.2005, 09:25.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
Wie im ersten Beitrag beschrieben:
Das Tippspiel läuft wie folgt ab:
Ich Tippe alle Bundesliga-Ergebnisse. Diese werden in den Felder HeimErg1-9 und GastErg1-9 gespeichert.
Ist der Spieltag vorbei, gebe ich die richtigen Ergebnisse in meinem Formular ein, und schick sie an die Funktion (die immer noch nicht Funktioniert).
Für ein richtig getipptes Ergebnis gibt es 3 Punkte, für das Tippen auf die richtige Tordifferenz gibt's 2 Punkte (hier fallen alle Unentschieden drunter, ausser es wurde richtig getippt) und wenn man nur Sieg oder Niederlage richtig tippt, gibt's 1 Punkt. Deswegen die Abfragen.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 29.September.2005, 12:19.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
Schleifen sind Dein Freund ;-) Wann immer sich irgendetwas in ähnlicher Weise wiederholt, ist das was für eine Schleife. Hier konkret (und n bisschen gekürzt):
get "Spieltag==$spieltag", "Tip", "tip";
while(get_next("tip"))
{
$punkte=0;
for(my $i=1; $i<10; $i++)
{
$H=${"HeimErg$i"}; $G=${"GastErg$i"};
$h=${"heimErg$i"}; $g=${"gastErg$i"};
$punkte+=3 if $h==$H && $g==$G;
$punkte+=2 if $h-$g==$H-$G;
$punkte+=1 if $h>$g && $H>$G || $h<$g && $H<$G;
}
mod "User==$User && Spieltag==$spieltag", ["Punkte", $punkte], "Tip";
}
Das sollte als Code reichen ;-) Wenn das nicht so klappt, wie Du willst, musst Du mal ein paar Testausgaben einbauen, also nach dem
$h=${"heimErg$i"}; $g=${"gastErg$i"};
z.b. ein:
out "i=$i, H=$H, G=$G, h=$h, $g=$g<br>";
oder vor dem "mod" ein:
out "User=$User, Spieltag=$spieltag, punkte=$punkte<br>";
,-)
Antworten
Beitrag von Max (102 Beiträge) am Donnerstag, 29.September.2005, 13:55.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
Der pure Wahnsinn! Jetzt haut's so hin, wie's soll. Vielen Dank.
Das mit dem
get "Spieltag==$spieltag", "Tip", "tip";
muss man halt Wissen, sonst hat man keine Chance.
Allerdings
mod "User==$User && Spieltag==$spieltag", ["Punkte", $punkte], "Tip";
muss abgeändert werden in
mod "User==$User & Spieltag==$spieltag", ["Punkte", $punkte], "Tip";
Sonst gibt's ne Fehlermeldung.
Nochmal Danke.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 29.September.2005, 14:23.
Re: Bundesliga Tippspiel; Auswertung funktioniert nicht
> ...muss abgeändert werden in
>
> mod "User==$User & Spieltag==$spieltag", ["Punkte", $punkte], "Tip";
>
> Sonst gibt's ne Fehlermeldung.
Äh, ja, peinlich dass das keiner gleich gesehen hat ;-)
Antworten