Statistik anfertigen

kase

Erfahrenes Mitglied
Ich habe mit einem Freund einen Warmanager programiert, nun will ich eine Statistik anfertigen die anzeigt wieviele Wars insgesamt gewonne wurden.

Das würde dann ungefair so aussehen:

$ergebnis = explode(":",$wars_arr['Ergebnis']);

PHP:
if ($ergebnis[5] > $ergebnis[6]) {
echo "War wurde gewonnen";
} else {
echo "War wurde nicht gewonnen";
}

Aber wie mache ich das jetzt das es sowas bei jeden Eintrag in der Datenbank macht und eine Statistik anfertigt, d.h. "# Wars wurden gewonnen".

Wäre sehr dankbar wenn jemand sagen könnte wie es geht ;-)

mfg,
kase
 
Hoi,

ich bin etwas ratlos, was ich genau schreiben soll, da deine Informationen für mich etwas wirr sind.

Also du hast ein Array, in dem das Ergebnis eines Wars steht als String ($wars_arr['Ergebnis'], format x:y) Diesen String zerpflückst du und hast dann x und y.
Hier schon die erste Frage, woher kommt $wars_arr Wird das aus einer Datenbank gelesen oder Textfile oder ist das das, was der User in einem Formular eingegeben hat?

Ok, dann hast du diese Abfrage, ob x > y ist, hier könntest du auch eine statistische Rechnung vornehmen.
PHP:
if ($ergebnis[5] > $ergebnis[6]) { 
echo "War wurde gewonnen"; 
$gewonnen++;
} else { 
echo "War wurde nicht gewonnen"; 
$verloren++;
}  
echo 'Es wurden '.$gewonnen.' Wars gewonnen, das sind genau'.(bcdiv(100,$gewonnen+verloren,2))*$gewonnen).'%';  // hoffe die Rechnung stimmt

Aber wie mache ich das jetzt das es sowas bei jeden Eintrag in der Datenbank macht und eine Statistik anfertigt, d.h. "# Wars wurden gewonnen".

Welcher Eintrag in der Datenbank? Wie ist die Struktur?

Hmm, ich höre jetzt hier mal auf. Ich habe mittlerweile mehr Fragen in den Raum geworfen als du. Also mehr Infos und dann wird sicherlich eine Lösung gefunden!

Gruss
 
Um ein wenig die Verwirrung rauszunehmen... ich bin der Freund mit dem Kase das Projekt erstellt :)

Also das $wars_arr[]; ist jeweils eine Atribut werd aus der DB Tabelle in der das ergebnis Pro War gespeichert wurde.
Das ergebnis ist also ein String der durch eine Formular Eingabe nur durch ":" getrennt ist.
Daher die Splittung in ein Array und der vergleich der Stelle 4 und 5 des Arrays.

Die Ausgabe der gewonnenen und verlohrenen Wars ist also Temporär, da ich im Vorfeld nicht an eine Statistik gedacht hatte als ich die Tabelle in der DB integriert habe...

Was Kase meinte ist, wie er jetzt jeden War in der DB prüft und die Zaehler Var. erhöht.

Hoffe ich konnte jetzt ein wenig licht ins dunkle bringen

Gruß
DevilGT
 
oh, sorry. hatte ausversehen das Thema als erledigt markiert, ich weiss aber immernoch nicht wie es geht
 
Am besten wäre es, eine normalisierte Datenbankstruktur zu verwenden. In euerem Fall hieße das beispielsweise, für jedes Feld der Spalte „Ergebnis“ eine separate Spalte anzulegen. Dann ist es ein leichtes, die Anzahl der gewonnenen Spiele zu ermitteln:
Code:
SELECT COUNT(*) FROM `spiele` WHERE `punkte_wir` > `punkte_gegner`
 
also:
Code:
| warid | status |
+-------+--------+
|   1   |  won   |
+-------+--------+
|   3   |  open  |
+-------+--------+
|   8   |  lose  |
+-------+--------+
?
 
Das wäre auch eine Möglichkeit, wobei allerdings dadurch Redundanzen (die Information, ob ein Spiel gewonnen wurde oder nicht, liegt mehrfach vor) und Inkonsistenzen (Widerspruch zwischen Punktestand und Spielstatus) auftreten können.

Ich hätte eher an so etwas gedacht:
Code:
| warid | ... | score_us | score_them |
+-------+-----+----------+------------+
|   1   | ... |    12    |      9     |
+-------+-----+----------+------------+
|   3   | ... |     0    |      0     |
+-------+-----+----------+------------+
|   8   | ... |     7    |      9     |
+-------+-----+----------+------------+
 
Mh das wäre das einzigste was sinvoll wäre, naja muss ich die Tage hlat machen, denke aber das ich dann nicht mehr nur mit zwei Feldern hinkomme.

Code:
| warid | ... | score_us_r1 |  score_us_r2  | score_us_complet | score_them |
+-------+-----+----------+------------+-----------+-------------+--------+
|   1   | ... |    12    |      9     |     21    |      5      | .....
+-------+-----+----------+------------+
|   3   | ... |     0    |      0     |.......
+-------+-----+----------+------------+
|   8   | ... |     7    |      9     |.......
+-------+-----+----------+------------+
 
Zurück