1
2
3
4
5
6
7
8
9
10
11
12
13
14
+----+--------------------------+--------------------------+--------+--------+
| id | spieler1 | spieler2 | sperg1 | sperg2 |
+----+--------------------------+--------------------------+--------+--------+
| 1 | HE2095: Nebojsa Müller | HE3258: Felix Riehl | 2 | 0 |
| 2 | HE3271: Michael Sommer | HE2058: Alexander Wagner | 1 | 2 |
| 3 | HE3258: Felix Riehl | HE2058: Alexander Wagner | 2 | 0 |
| 4 | HE520: Oliver Zinkl | HE3271: Michael Sommer | 2 | 1 |
| 5 | HE2095: Nebojsa Müller | HE2058: Alexander Wagner | 2 | 1 |
| 6 | HE3258: Felix Riehl | HE520: Oliver Zinkl | 2 | 0 |
| 7 | HE2095: Nebojsa Müller | HE3271: Michael Sommer | 2 | 0 |
| 8 | HE2058: Alexander Wagner | HE520: Oliver Zinkl | 1 | 2 |
| 9 | HE2095: Nebojsa Müller | HE520: Oliver Zinkl | 0 | 2 |
| 10 | HE3271: Michael Sommer | HE3258: Felix Riehl | 0 | 2 |
+----+--------------------------+--------------------------+--------+--------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
print "<font size=5><p align=center>Gruppe $paar</p></font>\n";
$sql = "SELECT id FROM Gruppe".$gruppe.";";
$exe = $dbh->prepare($sql);
$exe->execute() or die $!;
while(@outer = $exe->fetchrow_array)
{
push (@id, $outer[0]);
}
$exe->finish;
foreach $id (@id)
{
my $gewonnen = 0;
my $verloren = 0;
my $eigen = 0;
my $gegen = 0;
$innersql = "SELECT spieler1, sperg1, spieler2, sperg2, hdv FROM Gruppe$gruppe, Paarungen$gruppe WHERE Gruppe$gruppe.id = $id AND (hdv = spieler1 or hdv = spieler2);";
$exe = $dbh->prepare($innersql);
$exe->execute() or die $! ."::$dbh->errstr: Name = $n Gruppe $gruppe $innersql";
while(@inner = $exe->fetchrow_array)
{
$s1 = latin1($inner[0]);
$s2 = latin1($inner[2]);
$n = latin1($inner[4]);
if($n eq $s1)
{
$gewonnen++ if($inner[1] == 2);
$verloren++ if($inner[3] == 2);
$eigen = $eigen + $inner[1];
$gegen = $gegen + $inner[3];
}
if($n eq $s2)
{
$gewonnen++ if($inner[3] == 2);
$verloren++ if($inner[1] == 2);
$eigen = $eigen + $inner[3];
$gegen = $gegen + $inner[1];
}
}
$exe->finish;
print "$n: Gewonnen: $gewonnen Verloren: $verloren Legs: $eigen:$gegen<br>\n";
}
2016-10-18T13:31:41 RaubtierHm.
1. Ich hätte bei Dart erwartet, dass es in der Tabelle Felder wie "set" oder "leg" gibt statt "sperg".
2016-10-18T13:31:41 Raubtier2. Ich lese deinen Code nur sehr ungern, denn wer weiß schon, was folgendes tut (insbesondere was sind 0,2,4)? (ja, ich weiß, finde man im select heraus)
Ich würde da für das @inner lieber anständige Namen haben wollen!
2016-10-18T13:31:41 Raubtier3. Tabellennamen mit variablem Anteil drin?!
2016-10-18T13:31:41 Raubtier4. Auch wenn das $id in der SQL-Abfrage aus einer anderen Tabelle kommt, habe ich damit immer ein ungutes Gefühl, wenn man Variablen in die SQL-Abfrage direkt reinschreibt ohne Quoting. Da du eh prepare/execute nutzt, könntest du das $id einfach ins execute schieben.
2016-10-18T13:31:41 Raubtier5. Was soll die magische Konstante "2" in $gewonnen++ if($inner[1] == 2);? Immer best of 3? Warum nicht einfach auf $inner[1] > $inner[3] testen?
2016-10-18T09:39:31 IchhaltCode: (dl )1
2
3
4
5
6
7
8
9
10
11
12
13
14+----+--------------------------+--------------------------+--------+--------+
| id | spieler1 | spieler2 | sperg1 | sperg2 |
+----+--------------------------+--------------------------+--------+--------+
| 1 | HE2095: Nebojsa Müller | HE3258: Felix Riehl | 2 | 0 |
| 2 | HE3271: Michael Sommer | HE2058: Alexander Wagner | 1 | 2 |
| 3 | HE3258: Felix Riehl | HE2058: Alexander Wagner | 2 | 0 |
| 4 | HE520: Oliver Zinkl | HE3271: Michael Sommer | 2 | 1 |
| 5 | HE2095: Nebojsa Müller | HE2058: Alexander Wagner | 2 | 1 |
| 6 | HE3258: Felix Riehl | HE520: Oliver Zinkl | 2 | 0 |
| 7 | HE2095: Nebojsa Müller | HE3271: Michael Sommer | 2 | 0 |
| 8 | HE2058: Alexander Wagner | HE520: Oliver Zinkl | 1 | 2 |
| 9 | HE2095: Nebojsa Müller | HE520: Oliver Zinkl | 0 | 2 |
| 10 | HE3271: Michael Sommer | HE3258: Felix Riehl | 0 | 2 |
+----+--------------------------+--------------------------+--------+--------+
Ich denke ihr wisst damit schon was ich erfragen will ... Wie bekomme ich das sortiert, so dass ich bei den 5 Spielern dann eine Rangliste rausbekomme ...
Gedanklich scheitere ich daran, dass ja ein und derselbe Spieler mal Spieler 1 und mal Spieler 2 sein kann ... und damit das Ergebnis auch entsprechend genommen werden muss zur Berechnung des Ersten, Zweiten und Dritten ...