Mit Daten aus einer Mysql DB rechnen
Rainer
- datenbank
Moin allerseits,
jetzt verzweifelts bei mir. Habe folgende Tabellen:
cms_verein_liga_mannschaft
m_znr | saison | liga
61 4 18
62 4 18
63 4 18
cms_verein_spiele
saison | liga | m1 | m2 | tag | pkt1 | pkt2 | spkt1 | spkt2
4 18 62 61 1 5 3 37 31
4 18 62 63 1 4 4 31 29
4 18 61 63 1 2 6 19 41
cms_verein_tabelle (wird nur zum sortieren benutzt)
m | s | g | u | v | match1 | match2 | pkt1 | pkt2 | spkt1 | spkt2 | dif
Daraus will ich die Gesamtergebnisse berechnen. Das Passiert laufend bei einem neuen Eintrag. Habe den Quelltaxt "etwas" gekürzt da nur die Berechnung an sich nicht funktioniert. Irgendwo ist da ein Denkfehler. Herauskommen müsste:
61 | 2 | 0 | 0 | 2 | 0 : 4 | 5 : 11 | -6
62 2 1 1 0 3 : 1 9 : 7 2
63 2 1 1 0 3 : 1 10 : 6 4
Der Quellcode:
<?
$saison = "4";
$klasse = "18";
$tag = "1";
?>
<table class="a_tn" cellspacing="0" cellpadding="3" border="1" bordercolor="#CCCCCC">
<tr class="a_u1">
<td colspan="4">Eingetragene Spiele</td>
</tr>
<?
//EINGETRAGENE SPIELE EINLESEN
$dat=mysql_query("SELECT * FROM cms_verein_spiele WHERE saison = $saison && liga = $klasse && tag = $tag");
while($z=mysql_fetch_array($dat)):
$ms1=$z["m1"];
$ms2=$z["m2"];
$pkts1=$z["pkt1"];
$pkts2=$z["pkt2"];
$spkts1=$z["spkt1"];
$spkts2=$z["spkt2"];
$sz_nr=$z["sz_nr"];
//MANNSCHAFTSNAMEN HOLEN
/*$datm1=mysql_query("SELECT mannschaft FROM cms_verein_liga_mannschaft WHERE m_znr = $ms1");
while($z=mysql_fetch_array($datm1)):
$mn1=$z["mannschaft"];
endwhile;
$datm2=mysql_query("SELECT mannschaft FROM cms_verein_liga_mannschaft WHERE m_znr = $ms2");
while($z=mysql_fetch_array($datm2)):
$mn2=$z["mannschaft"];
endwhile;*/
?>
<tr class="a_z2">
<td height="24"><? echo"$ms1"; ?></td>
<td height="24"><? echo"$ms2"; ?></td>
<td height="24"><? echo"$pkts1 : $pkts2"; ?></td>
<td height="24"><? echo"$spkts1 : $spkts2"; ?></td>
</tr>
<? endwhile; ?>
</table>
<br>
<table class="a_tn" cellspacing="0" cellpadding="3" border="1" bordercolor="#CCCCCC">
<tr class="a_u1">
<td colspan="9">Aktuelle Tabelle vom: <i>
<? echo"$tag"; ?>
. Spieltag</i> -<i>
<? echo"$klasse"; ?>
</i> - <i>Saison</i><i>
<? echo"$saison"; ?>
</i></td>
</tr>
<tr>
<td align="center"><b>Platz</b></td>
<td><b>Mannschaft</b></td>
<td align="center"><b>S</b></td>
<td align="center"><b>G</b></td>
<td align="center"><b>U</b></td>
<td align="center"><b>V</b></td>
<td align="center"><b>Mpkt.</b></td>
<td align="center"><b>Spkt</b></td>
<td align="center"><b>Dif</b></td>
</tr>
<?
//AKT.TABELLE BERECHNEN - EINLESEN - ANZEIGEN - LÖSCHEN
//MANNSCHAFTEN ZUR SAISON - LIGA EINLESEN
$sql1=mysql_query("SELECT m_znr FROM cms_verein_liga_mannschaft WHERE saison = $saison && liga = $klasse");
while($z=mysql_fetch_array($sql1)):
$m_znr3=$z["m_znr"];
//SPIELE GESAMT
$sql2=mysql_query("SELECT * FROM cms_verein_spiele WHERE m1 = $m_znr3 && tag <= $tag || m2 = $m_znr3 && tag <= $tag");
$anz_s=mysql_num_rows($sql2);
//SPIELE GEWONNEN
$sql3=mysql_query("SELECT * FROM cms_verein_spiele WHERE m1 = $m_znr3 && pkt1 > 4 && tag <= $tag || m2 = $m_znr3 && pkt1 > 4 && tag = $tag");
$anz_g=mysql_num_rows($sql3);
//SPIELE UNENTSCHIEDEN
$sql4=mysql_query("SELECT * FROM cms_verein_spiele WHERE m1='$m_znr3' && pkt1 = 4 && tag <= $tag || m2 = $m_znr3 && pkt1 = 4 && tag <= $tag");
$anz_u=mysql_num_rows($sql4);
//SPIELE VERLOREN
$sql5=mysql_query("SELECT * FROM cms_verein_spiele WHERE m1 = $m_znr3 && pkt1 < 4 &&tag <= $tag || m2 = $m_znr3 && pkt1 < 4 && tag <= $tag");
$anz_v=mysql_num_rows($sql5);
//PUNKTE EINLESEN
$sql6=mysql_query("SELECT SUM(pkt1),SUM(pkt2),SUM(spkt1),SUM(spkt2) FROM cms_verein_spiele WHERE m1 = $m_znr3 && tag <= $tag || m2 = $m_znr3 && tag <= $tag");
$punkte=mysql_fetch_row($sql6);
//DIFFERENZ BERECHNEN
$dif=($punkte[0] - $punkte[1]);
//MATCHPUNKTE BERECHNEN
$match1=($anz_g * 2); //GEWONNENE
$match2=($anz_v * 2); //VERLORENE
$match1=($match1 + $anz_u); //UNENTSCHIEDEN
$match2=($match2 + $anz_u); //DAZURECHNEN
//JETZT DEN GANZEN KRAM IN DER DB ABLEGEN
mysql_query("INSERT INTO cms_verein_tabelle (m,s,g,u,v,match1,match2,pkt1,pkt2,spkt1,spkt2,dif) VALUES ('$m_znr3','$anz_s','$anz_g','$anz_u','$anz_v','$match1','$match2','$punkte[0]','$punkte[1]','$punkte[2]','$punkte[3]','$dif')");
endwhile;
//UND NUN ALLES FEIN SORTIERT EINLESEN
$sql7=mysql_query("SELECT * FROM cms_verein_tabelle"); //DA KOMMT NOCH ORDER BY
while($z=mysql_fetch_array($sql7)):
$a1=$z["m"];
$a2=$z["s"];
$a3=$z["g"];
$a4=$z["u"];
$a5=$z["v"];
$a6=$z["match1"];
$a7=$z["match2"];
$a8=$z["pkt1"];
$a9=$z["pkt2"];
$a0=$z["dif"];
?>
<tr class="a_z2">
<td align="center"> </td>
<td><? echo"$a1"; ?></td>
<td align="center"><? echo"$a2"; ?></td>
<td align="center"><? echo"$a3"; ?></td>
<td align="center"><? echo"$a4"; ?></td>
<td align="center"><? echo"$a5"; ?></td>
<td align="center"><? echo"$a6 : $a7"; ?></td>
<td align="center"><? echo"$a8 : $a9"; ?></td>
<td align="center"><? echo"$a0"; ?></td>
</tr>
<?
endwhile;
//FERTIG EINGELESEN UND NUN WECH DAMIT
mysql_query("DELETE FROM cms_verein_tabelle");
?>
</table>
Habe die starke Hoffnung das mir vielleicht jemand auf die Sprünge helfen kann. Hat bisher immer geklappt. Dafür schon mal im voraus großen Dank.
Gruss
Rainer
Sorry, war ein Tippfehler bei:
in der sql3 -5 muss es im 2 Teil der Query "pkt2" heissen.
Geht jetzt soweit bis auf sql6. Die Summen werden nicht richtig gebildet - oder vielmehr schon richtig, die Query wird wohl nicht stimmen.
Gruss
Rainer
Servus Rainer
Habe leider von php keinen Plan. Habe dasgleiche aber schon in ASP mit einen anderen Ansatz gelöst:
Das funktioniert ganz wunderglänzend.
Das sieht bei Dir schon alles ganz gut und professionell aus, ich finde es zur Fehleranalyse aber recht komplex.
Ich habe die Berechnung in kleineren Schritten programmiert.
Ausserdem, was funktioniert bei Dir nicht?
bydey