# Fußball-Ergebnisse auswerten



## mich90 (23. September 2006)

Hallo, 
ich freue mich hier in dem Forum neu aktiv zu sein 

Naja ich habe hier öfter was über fußball tabellen gefunden

Mein Plan...Ein Bundesliga-Tipp-Spiel , 
also man tippt die ergebnisse, bekommt dafür Punkte und das wird in einer Tabelle ausgegeben 

Erstmal müssen aber die richtigen Ergebnisse richtig funktioniere, damit ich weitermachen kann, ich bin jetzt soweit, dass ich die ergebnisse eintragen kann.

Jetz mal zu meinem Problem:
Alle Ergebnisse sind drin, jetzt soll er aber aus den Ergebnissen in die Tabelle schreiben, wie viele Siege / Niederlagen / Unentschieden und tore / gegentore / tordifferenz / Punkte die Mannschaften jeweils haben...

das klappt bei mir nie... schon so viel ausprobiert, ich komm einfach nicht dran, am verzweifeln.

Meine SQL-Datenbank sieht so aus :
Tabelle bundesliga :
Verein, spielzahl, tore, gegentore, tordifferenz, siege, unentschieden, niederlagen, punkte
und dann die tabelle ergebnisse:
spieltag, heim, auswaerts, heimtore, auswaertstore, 
das geht alles...
nur bei bundesliga trägt er das nicht ein...kann mit vllt jemand ein script  geben oder so tipps oder was weiß ich

Gruß
Mich90


----------



## Matthias Reitinger (23. September 2006)

Hallo,



			
				mich90 hat gesagt.:
			
		

> Meine SQL-Datenbank sieht so aus :
> Tabelle bundesliga :
> Verein, spielzahl, tore, gegentore, tordifferenz, siege, unentschieden, niederlagen, punkte
> und dann die tabelle ergebnisse:
> spieltag, heim, auswaerts, heimtore, auswaertstore,


Die Felder „spielzahl“, „tordifferenz“ und „punkte“ kannst du eigentlich streichen, da sie redundant sind. 



> das geht alles...
> nur bei bundesliga trägt er das nicht ein...kann mit vllt jemand ein script  geben oder so tipps oder was weiß ich


Wer ist „er“?

Grüße,
 Matthias


----------



## mich90 (23. September 2006)

> Die Felder „spielzahl“, „tordifferenz“ und „punkte“ kannst du eigentlich streichen, da sie redundant sind.



heißt das das ich diese sachen besser in php berechnen soll

Ähhm und er... ja das is eigentlich...ICH  sry für die schlechte ausdrucksweise...
ich schaffe es nicht die felder niederlagen, siege, unentschieden richtig (!!) zu füllen
  
Gruß


----------



## ecology (23. September 2006)

Und wieso genau bekommst du es nicht hin?

Ich verstehe die Frage nicht so ganz 

Trägst du die Daten mit einem Script ein oder von Hand?


----------



## mich90 (23. September 2006)

Also die Spiele und Ergebnisse mit einem Script (erst die Spiele, damit man die Spiele auch vorher tippen kann und am Ende eines Spieltags halt dann die richtigen Ergebnisse)

und die Tabelle wollte ich auch per Script machen...(Also dann Niederlagen, Siege und Unentschieden), aber das will einfach nicht klappen...


----------



## ecology (23. September 2006)

Dann poste doch schon mal den Ansatz vielleicht findet ja einer den Fehler, wenn du das mit den Spielen hinbekommst kann dein Script ja nicht so falsch sein


----------



## mich90 (23. September 2006)

```
<?php
include ("checkuser_admin.php");
?>
<?php
mysql_connect("localhost", "mich90", "XXX");
mysql_select_db("mich90");
$res = mysql_query("SELECT * FROM `ergebnisse`");
while ($dsatz = mysql_fetch_array($res))
{
         if($dsatz["heimtore"] > $dsatz["auswaertstore"])
         {
	mysql_connect("localhost", "mich90", "XXX");
	mysql_select_db("mich90");
	mysql_query("UPDATE bundesliga SET siege = (siege + 1) WHERE verein = $dsatz['heim']");
	mysql_query("UPDATE bundesliga SET niederlagen = (niederlagen + 1) WHERE verein = $dsatz['auswaerts']");
         }
         if($dsatz["heimtore"] == $dsatz["auswaertstore"])
         {
	mysql_connect("localhost", "mich90", "XXX");
	mysql_select_db("mich90");
	mysql_query("UPDATE bundesliga SET unentschieden = (unentschieden + 1) WHERE verein = $dsatz['heim']");
	mysql_query("UPDATE bundesliga SET unentschieden = (unentschieden + 1) WHERE verein = $dsatz['auswaerts']");
         }
         if($dsatz["heimtore"] < $dsatz["auswaertstore"])
         {
	mysql_connect("localhost", "mich90", "XXX");
	mysql_select_db("mich90");
	mysql_query("UPDATE bundesliga SET niederlagen = (niederlagen + 1) WHERE verein = $dsatz['heim']");
	mysql_query("UPDATE bundesliga SET siege = (siege + 1) WHERE verein = $dsatz['auswaerts']");
         }
}
?>
```

soo er gibt folgenden Fehler aus :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/export/www/vhosts/funnetwork/hosting/mich90/tippen/bundesligatabelle_berechnen.php on line 16

das ist meine jetzige Version...die Anderen habe ich schon gar nicht mehr... -.-

Ähhm ich glaube die Variablen sind soweit verständlich dargestellt...

Gruß


----------



## illuminatus26 (23. September 2006)

Schönes Passwort hast du da......
   
würde ich demnächst vielleicht mal mit xxx überschreiben.

Nun aber zum Thema.
Wenn ich es richtig verstanden habe, möchtest du gerne die aktuelle Tabelle ausgeben, so wie sie dann Monatgs in der Zeitung steht.
Ich würde an deiner Stelle das Konzept nochmal überdenken und mir eine Funktion basteln, die beim Ergebniss eintragen dann die sogennaten Tottozahlen auswertet.
Danach kannst du die Anzahl der Siege, Unentschieden und Niederlagen mit PHP oder MYSQL berechnen lassen.
Ich meine mal gelesen zu haben, dass es mit Mysql dann schneller geht.


----------



## mich90 (23. September 2006)

Was meinst du mit Totto-Zahlen


----------



## ecology (23. September 2006)

So hab jetzt mal nen Ansatz zusammengebastelt, ich bin auch nicht sehr bewandert aber hatte mal ein ähniches Script geschrieben, vielleicht hilft dir das ja.

Wenn ein eingefleischter php Profi einwände hat kann er sie gerne einbringen ich räume dann das Feld 

Ich bin  mir noch nicht sicher ob das mit dem SET siege = (siege + 1) geht, vll. kenn ich den Ausdruck aber nur nicht 

Was ich verändert habe: Ich habe mal die while schleife durch ein mysql_fetch_array ersetzt und habe einige hochstriche hinzugefügt oder entfernt.

Ich hoffe das hilft dir etwas weiter 


```
<?php
include ("checkuser_admin.php");
?>
<?php
mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("mich90");
$query = @mysql_query("SELECT * FROM ergebnisse") or die('Select ist fehlgeschlagen!');
$dsatz = @mysql_fetch_array($query);

         if($dsatz["heimtore"] > $dsatz["auswaertstore"])
         {	 
	mysql_query("UPDATE bundesliga SET siege = (siege + 1) WHERE verein = '$dsatz['heim']'");
	mysql_query("UPDATE bundesliga SET niederlagen = (niederlagen + 1) WHERE verein = '$dsatz['auswaerts']'");
         }
         if($dsatz["heimtore"] == $dsatz["auswaertstore"])
         {
	mysql_query("UPDATE bundesliga SET unentschieden = (unentschieden + 1) WHERE verein = '$dsatz['heim']'");
	mysql_query("UPDATE bundesliga SET unentschieden = (unentschieden + 1) WHERE verein = '$dsatz['auswaerts']'");
         }
         if($dsatz["heimtore"] < $dsatz["auswaertstore"])
         {
	mysql_query("UPDATE bundesliga SET niederlagen = (niederlagen + 1) WHERE verein = '$dsatz['heim']'");
	mysql_query("UPDATE bundesliga SET siege = (siege + 1) WHERE verein = '$dsatz['auswaerts']'");
         }

?>
```

Ecology


----------



## illuminatus26 (23. September 2006)

mich90 hat gesagt.:
			
		

> Was meinst du mit Totto-Zahlen



Na das was man bei Oddset, betandwin und wie sie alle heissen tippt.
1 = Heimsieg
0 = Unentschieden
2 = Auswärtssieg


----------



## mich90 (23. September 2006)

ehrlich bei dem siege = (siege + 1) bin ich mir auch gar nicht sicher, weil es gibt in der Zeile wieder einen Fehler...

Vllt weiß jemand was dazu...

Gruß

achsoo...hm ja das wär noch eine idee, falls das nicht geht, aber im Moment liegt es wohl an siege = (siege + 1), oder


----------



## ecology (24. September 2006)

Ja dann lese die Siege (bzw. Niederlagen) aus und zähle 1 hinzu (bzw. 1 ab).

Das Passwort würde ich aber wirklich jetzt ändern, da man aus der Date sowohl Url und Passwort lesen konnte.

Sry ich wusste nicht das das dein richtiges Passwort ist :-( 

Jo und nochwas du musst pro datei nur einmal zur Mysql Datenbank connecten, das macht man am besten mit einer externen .inc.php Datei, dort liegen die Daten sicher. Die Datei wird dann einfach includet.

Alle Infos zu Mysql findet man verständlich erklärt hier


Ecology


----------



## Matthias Reitinger (24. September 2006)

Hallo,

ausgehend von dieser Struktur:

```
-- 
-- Tabellenstruktur für Tabelle `spiele`
-- 

CREATE TABLE `spiele` (
  `spiel_id` int(11) NOT NULL auto_increment,
  `spieltag` int(11) NOT NULL default '0',
  `heim_id` int(11) NOT NULL default '0',
  `gast_id` int(11) NOT NULL default '0',
  `heim_tore` int(11) NOT NULL default '0',
  `gast_tore` int(11) NOT NULL default '0',
  PRIMARY KEY  (`spiel_id`)
);

-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `vereine`
-- 

CREATE TABLE `vereine` (
  `verein_id` int(11) NOT NULL auto_increment,
  `name` varchar(64) collate latin1_general_cs NOT NULL default '',
  PRIMARY KEY  (`verein_id`)
);
```
…kann man mit folgender schnuckligen Abfrage eine Tabelle erstellen lassen:

```
SELECT
  `v`.*,
  
  COUNT(`s`.`spiel_id`) AS `gespielt`,
  
  SUM(
    IF(
      (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heim_tore` > `s`.`gast_tore`) OR
      (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gast_tore` > `s`.`heim_tore`),
      1, 0
    )
  ) AS `siege`,
  
  SUM(
    IF(`s`.`heim_tore` = `s`.`gast_tore`, 1, 0)
  ) AS `unentschieden`,

  SUM(
    IF(
      (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heim_tore` < `s`.`gast_tore`) OR
      (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gast_tore` < `s`.`heim_tore`),
      1, 0
    )
  ) AS `niederlagen`,

  SUM(
    IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heim_tore`, 0) +
    IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gast_tore`, 0)
  ) AS `tore`,

  SUM(
    IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`gast_tore`, 0) +
    IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`heim_tore`, 0)
  ) AS `gegentore`,

  COALESCE(
    SUM(
      IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heim_tore`, -`s`.`heim_tore`) +
      IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gast_tore`, -`s`.`gast_tore`)
    ), 0
  ) AS `tordifferenz`,

  SUM(
    IF(
      (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heim_tore` > `s`.`gast_tore`) OR
      (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gast_tore` > `s`.`heim_tore`),
      3, 0
    ) +
    IF(`s`.`heim_tore` = `s`.`gast_tore`, 1, 0)
  ) AS `punkte`

FROM
  `vereine` `v`

LEFT JOIN
  `spiele` `s` ON (`v`.`verein_id` IN (`s`.`heim_id`, `s`.`gast_id`))

GROUP BY
  `verein_id`

ORDER BY
  `punkte` DESC,
  `tordifferenz` DESC,
  `tore` DESC
```
Das Ergebnis daraus kann man dann noch mit PHP etwas nachbearbeiten (z.B. die Platzierung entscheiden, wenn Punkte und Torverhältnis identisch sind) und in eine andere Tabelle schreiben. Mit wenigen Anpassungen lässt sich mit dieser Abfrage z.B. auch eine Heim-/Auswärtstabelle oder eine Spieltagtabelle erstellen.

Grüße,
 Matthias


----------



## mich90 (24. September 2006)

Danke euch allen...

Das letzte werde ich heute noch ausprobieren 

Gruß


----------



## mich90 (24. September 2006)

Hallo, 

also das mit der Tabelle klappt einwandfrei, aber aufgrund der neuen Tabellen muss ich meine ganzen Eingabe-Scripte ändern.

Dabei möchte ich auch gleich die Vereine aus der Datenbank auslesen und nicht, wie es vorher lief, und die ganzen Listen-Felder eingeben 


```
<?php
mysql_connect("localhost", "XXX", "XXX");
mysql_select_db("mich90");
$res = mysql_query("SELECT * FROM vereine");
if(mysql_num_rows($res)>0)
{
$i = 1;
	while($dsatz = mysql_fetch_assoc($res))
	{
	$verein[$i] = $dsatz["name"];
         $i++;
	}
         echo $verein[1];
}
?>
```

Das is mein Script für die Abfrage aus der Tabelle, klappt einwandfrei, das echo is nur zur Überprüfung da, also nicht dran stören! 


```
<select size='1' name='heim1' onchange='Go(this)' width='250'>
<option value='1' 'selected='selected'><?php $verein[1] ?></option>
<option value='2'><?php $verein[2] ?></option>
</select>
```
So sehen dann meine Listenfelder aus, halt mit mehr Vereinen
Aber: Es ist bei der Ansicht leer, obwohl die Variablen bestetzt sind (oben geprüft mit echo)
Kann mir einer sagen, warum das hier nicht angezeigt wird
Danke

Gruß


----------



## Julian Maicher (24. September 2006)

Ohne echo kein Wunder.
Probier es mal so:

```
<select size='1' name='heim1' onchange='Go(this)' width='250'>
<?
for($i = 0; $i <= count($verein);$i++)
{
  echo "<option value='".$i."'>".$verein[$i]."</option>";
}
?>
</select>
```


----------



## mich90 (24. September 2006)

Ja danke, echo war gut, habs nur anders gemacht (muss dazu sagen, das war nicht mit <?php ?> der ganze Code!! also meine Lösung:


```
<option value='2'><?php echo "$verein[2]"; ?></option>
```


----------



## mich90 (3. Oktober 2006)

Hallo
nachdem das ja einwandfrei geht, habe ich mich an eine Tabelle gewagt, die jeder User ja sozusagen selber macht. Also es ist die Tabelle, die nach dem Tippen des jeweiligen Users entstanden wäre (also wenn der User alles richtig gehabt hätte, wie die Tabelle dann wäre)!

So , aber mein Script geht nicht ! 


```
<?php
include ("checkuser.php");
?><?php
include ("grund.php");
?><?php
mysql_connect("localhost", "XX", "MX");
mysql_select_db("X");
$res = mysql_query("
      SELECT

        `v`.*,



        COUNT(`s`.`spiel_id`) AS `gespielt`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$_SESSION[user_nickname].'` > `s`.`gasttipp_'.$_SESSION[user_nickname].'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.'.$_SESSION[user_nickname].'` > `s`.`heimtipp_'.$_SESSION[user_nickname].'`),

            1, 0

          )

        ) AS `siege`,



        SUM(

          IF(`s`.`heimtipp_'.$_SESSION[user_nickname].'` = `s`.`gasttipp_'.$_SESSION[user_nickname].'`, 1, 0)

        ) AS `unentschieden`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$_SESSION[user_nickname].'` < `s`.`gasttipp_'.$_SESSION[user_nickname].'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$_SESSION[user_nickname].'` < `s`.`heimtipp_'.$_SESSION[user_nickname].'`),

            1, 0

          )

        ) AS `niederlagen`,



        SUM(

          IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heimtipp_'.$_SESSION[user_nickname].'`, 0) +

          IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gasttipp_'.$_SESSION[user_nickname].'`, 0)

        ) AS `tore`,



        SUM(

          IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`gasttipp_'.$_SESSION[user_nickname].'`, 0) +

          IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`heimtipp_'.$_SESSION[user_nickname].'`, 0)

        ) AS `gegentore`,



        COALESCE(

          SUM(

            IF(`v`.`verein_id` = `s`.`heim_id`, `s`.`heimtipp_'.$_SESSION[user_nickname].'`, -`s`.`heimtipp_'.$_SESSION[user_nickname].'`) +

            IF(`v`.`verein_id` = `s`.`gast_id`, `s`.`gasttipp_'.$_SESSION[user_nickname].'`, -`s`.`gasttipp_'.$_SESSION[user_nickname].'`)

          ), 0

        ) AS `tordifferenz`,



        SUM(

          IF(

            (`v`.`verein_id` = `s`.`heim_id` AND `s`.`heimtipp_'.$_SESSION[user_nickname].'` > `s`.`gasttipp_'.$_SESSION[user_nickname].'`) OR

            (`v`.`verein_id` = `s`.`gast_id` AND `s`.`gasttipp_'.$_SESSION[user_nickname].'` > `s`.`heimtipp_'.$_SESSION[user_nickname].'`),

            3, 0

          ) +

          IF(`s`.`heimtipp_'.$_SESSION[user_nickname].'` = `s`.`gasttipp_'.$_SESSION[user_nickname].'`, 1, 0)

        ) AS `punkte`



      FROM

        `vereine` `v`



      LEFT JOIN

        `spiele` `s` ON (`v`.`verein_id` IN (`s`.`heim_id`, `s`.`gast_id`))



      GROUP BY

        `verein_id`



      ORDER BY

        `punkte` DESC,

        `tordifferenz` DESC,

        `tore` DESC ") or die(mysql_error());
if(@mysql_num_rows($res)>0)
{
$platzierung = 1;
echo "<table>";
echo "<tr><td>Platz</td><td>Verein</td><td>Punkte</td><td>Tordifferenz</td><td>Tore</td><td>Gegentore</td><td>Spiele</td><td>Siege</td><td>Unentschieden</td><td>Niederlagen</td></tr>";
	while($dsatz = mysql_fetch_assoc($res))
	{
             $ver_id =  $dsatz["verein_id"];
    $verein_tausch_id = mysql_query("SELECT name FROM `vereine` WHERE verein_id = '$ver_id'");
    $verein = mysql_fetch_array($verein_tausch_id);
		echo "<tr>";
                 echo "<td>";
                 echo $platzierung;
                 echo "</td><td>";
		echo $verein["name"];
                 echo "</td><td>";
                 echo $dsatz["punkte"];
                 echo "</td><td>";
                 echo $dsatz["tordifferenz"];
                 echo "</td><td>";
                 echo $dsatz["tore"];
                 echo "</td><td>";
                 $gegentore =  $dsatz["tore"] - $dsatz["tordifferenz"];
                 echo   $gegentore;
                 echo "</td><td>";
                 echo $dsatz["gespielt"];
                 echo "</td><td>";
                 echo $dsatz["siege"];
                 echo "</td><td>";
                 echo $dsatz["unentschieden"];
                 echo "</td><td>";
                 echo $dsatz["niederlagen"];
		echo "</td></tr>";
                 $platzierung++;
                 }

         echo "</table>";
}
?>
</td>
</tr>
</table>
</body>
</html>
```

Es müsste an den gasttipp_$_SESSION ... usw liegen , da er sagt dass es die zeile "gasttip_" nicht gibt, das heißt er erkennt das nicht, aber vllt seht ihr mehr 
Achso, die Session wird in checkuser.php gestartet

Gruß


----------

