Hei!
Pieni ongelma. Yritän kääntää yhtä exceliä php:lle ja olen onnistunutkin siinä ainakin osittain. Koodissa kuitenkin joku on pielessä, toki on varmaan paljon semmosta, jotka kokenut koodari olisi tehnyt eritavalla.
Haetaan kierroksen pelit tietokannasta. Home, Away ja samalla tulee maaliodotusarvo, josta poissonin kaavalla lasketaan 1x2 todennäköisyydet. Seuraava koodi toimii ja antaa oikeat lukemat poisson -lukemat ensimmäiselle pelille, mutta sitten kun while -loopilla ajatetaan seuraavaan peliin niin poissonin lukemat ovat ihan kuralla.
tiedostan että muutujien nimet ovat sekavat ja koodi varmaan vielä sekavempaa ja siitä pahoittelut.
malliexceli mistä oon lähtenyt rakentamaan, jos auttaa että mitä oon yritämässä tehdä: poisson exceli
<?php include('poisson.php'); //error_reporting(E_ALL); //ini_set("display_errors", 1); //ini_set("error_reporting", E_ALL | E_STRICT); //Parametrit, joita käytetään tietojen haussa/näyttämisessä $divi = $valinta; //taulut // $regular = ""; $history = ""; $bets = ""; //Haetaan kaikki ottelut// $query = $yhteys->prepare('select * from taulu where Divi = "'. $divi .'"'); $query->execute(); // alotetaan tulostamalla taulukkoon otsikot// echo '<form name="form1" action="' . $_SERVER['PHP_SELF'] .'">'; echo '<table id="lisatyt">'; echo '<br>'; echo '<tr>'; echo '<th>Home</th>'; echo '<th>Away</th>'; echo '<th colspan="3">1X2</th>'; echo '</tr>'; while ($row = $query-> fetch()) { $home = $row['HomeTeam']; $away = $row['AwayTeam']; echo '<tr>'; echo '<td>' . htmlspecialchars($row['HomeTeam']) . '</td>'; echo '<td>' . htmlspecialchars($row['AwayTeam']) . '</td>'; // tässä moa arvot kuvitteelliset 1x2 arvoiksi pitäsi tulla ~ 42-26-32 // $moa = "1.433"; // kotijoukkueen moa $moa1 = "1.23"; // vierasjoukkueen moa $tasuri1 = "0"; // kotijoukkueen tasapelin alkuarvo $tasuri2 = "0"; // vierasjoukkueen tasapelin alkuarvo // Alkuarvo kotijoukkueelle // $kerroin = "1"; $kerroin2 = "2"; $kerroin3 = "3"; $kerroin4 = "4"; $kerroin5 = "5"; $kerroin6 = "6"; $kerroin7 = "7"; $kerroin8 = "8"; $kerroin9 = "9"; $kerroin10 = "10"; // Alkuarvot vierasjoukkueelle // $vieras0 = "0"; // 0 $vieras1 = "1"; // 1 $vieras2 = "2"; // 2 $vieras3 = "3"; // 3 $vieras4 = "4"; // 4 $vieras5 = "5"; // 5 $vieras6 = "6"; // 6 $vieras7 = "7"; // 7 $vieras8 = "8"; // 8 $vieras9 = "9"; // 8 // Annetaan alkuarvo vierasjoukkueelle ja pysytään siinä // $test1 = poisson($moa1,$vieras0); $test2 = poisson($moa1,$vieras1); $test3 = poisson($moa1,$vieras2); $test4 = poisson($moa1,$vieras3); $test5 = poisson($moa1,$vieras4); $test6 = poisson($moa1,$vieras5); $test7 = poisson($moa1,$vieras6); $test8 = poisson($moa1,$vieras7); $test9 = poisson($moa1,$vieras8); $test10 = poisson($moa1,$vieras9); // 1-10 while ($kerroin <= 10) { $test = poisson($moa,$kerroin); $kerroin++; $total = $test1 * $test; $sum += $total; } // 2-10 while ($kerroin2 <= 10) { $testi = poisson($moa,$kerroin2); $kerroin2++; $total2 = $testi * $test2; $sum2 += $total2; } // 3-10 while ($kerroin3 <= 10) { $testi1 = poisson($moa,$kerroin3); $kerroin3++; $total3 = $testi1 * $test3; $sum3 += $total3; } // 4-10 while ($kerroin4 <= 10) { $testi2 = poisson($moa,$kerroin4); $kerroin4++; $total4 = $testi2 * $test4; $sum4 += $total4; } // 5-10 while ($kerroin5 <= 10) { $testi3 = poisson($moa,$kerroin5); $kerroin5++; $total5 = $testi3 * $test5; $sum5 += $total5; } // 6-10 while ($kerroin6 <= 10) { $testi4 = poisson($moa,$kerroin6); $kerroin6++; $total6 = $testi4* $test6; $sum6 += $total6; } // 7-10 while ($kerroin7 <= 10) { $testi5 = poisson($moa,$kerroin7); $kerroin7++; $total7 = $testi5 * $test7; $sum7 += $total7; } // 8-10 / 6 while ($kerroin8 <= 10) { $testi6 = poisson($moa,$kerroin8); $kerroin8++; $total8 = $testi6 * $test8; $sum8 += $total8; } // 9-10 while ($kerroin9 <= 10) { $testi7 = poisson($moa,$kerroin9); $kerroin9++; $total9 = $testi7 * $test9; $sum9 += $total9; } // 10-10 while ($kerroin10 <= 10) { $testi8 = poisson($moa,$kerroin10); $kerroin10++; $total10 = $testi8 * $test10; $sum10 += $total10; } //tasurille % arvio while ($tasuri1 <= 10 & $tasuri2 <=10) { $tasuri_koti = poisson($moa,$tasuri1); $tasuri_vieras = poisson($moa1,$tasuri2); $tasuri1++; $tasuri2++; $total_tasuri = $tasuri_koti * $tasuri_vieras; $sum12 += $total_tasuri; } $ykkonen = $sum + $sum2 + $sum3 + $sum4 + $sum5 + $sum6 + $sum7 + $sum8 + $sum9 + $sum10 + $sum11; $ykkonen_total = ($ykkonen)*100; $risti_total = ($sum12) * 100; $kakkonen_total = 100 - $ykkonen_total - $risti_total; echo '<td>' . number_format($ykkonen_total,0) . '</td>'; echo '<td>' . number_format($risti_total,0) . '</td>'; echo '<td>' . number_format($kakkonen_total,0) . '</td>'; echo '</tr>'; } echo '</table>'; echo '</form>'; ?>
Millä tavalla se ilmenee, että "jokin on pielessä"? Virheilmoitus? Väärä tulos?
Sitten asiasta toiseen niin käytä ihmeessä taulukoita. (array)
Grez kirjoitti:
(10.02.2016 23:27:49): Millä tavalla se ilmenee, että "jokin on...
Joo siis ekalle otteluparille tulee ihan oikea 1x2 arvio. Sitten kun lasketaan toiselle otteluparille niin luvut ovat pielessä. Mitään virhettä/ilmotusta ei tule.
vielä selvennykseksi kuva aiheesta:
eli ensimmäinen 1x2 oikein, mutta seuraavat väärin. eli pitäisi olla kaikissa 40-30-30.
En juuri kerkeä koodiasi tulkkaamaan, mutta usein kuvailemasi ongelma johtuu siitä ettei jokainen kierros lähde samasta alkutilanteesta.
Esim. alustatko $sum muuttujia missään ja mikä tuo $sum11 on? Laittamalla virheilmoitukset näkyviin voisi selvitä useampikin asia.
tulipas muuten mieleen työmatkalla tuo sama $sum muuttujien alustaminen. Toki olin jo aikasemmin sitä kokeillut reset/unset($sum). Nämä eivät auttaneet, nyt kuitenkin asentin $sum = "0"; niin sehän rupes toimimaan.
Pitänee varmaan josaain vaiheessa tarttua tuohon Grezin ehdottomaan array:hin. Ainakin koodin yksinkertaistuu ja ehkä tulee tehokkaampi. Toisaalta eipä tuo data määrä ole suuri niin tuskin saavutan arraylla tehohyötyä.
Problem solved.
thx.
Nää pistää aina silmään....
Olisipa ne edes taulukkoja.
// Alkuarvo kotijoukkueelle // $kerroin = "1"; $kerroin2 = "2"; $kerroin3 = "3"; $kerroin4 = "4"; $kerroin5 = "5"; $kerroin6 = "6"; $kerroin7 = "7"; $kerroin8 = "8"; $kerroin9 = "9"; $kerroin10 = "10"; // Alkuarvot vierasjoukkueelle // $vieras0 = "0"; // 0 $vieras1 = "1"; // 1 $vieras2 = "2"; // 2 $vieras3 = "3"; // 3 $vieras4 = "4"; // 4 $vieras5 = "5"; // 5 $vieras6 = "6"; // 6 $vieras7 = "7"; // 7 $vieras8 = "8"; // 8 $vieras9 = "9"; // 8 // Annetaan alkuarvo vierasjoukkueelle ja pysytään siinä // $test1 = poisson($moa1,$vieras0); $test2 = poisson($moa1,$vieras1); $test3 = poisson($moa1,$vieras2); $test4 = poisson($moa1,$vieras3); $test5 = poisson($moa1,$vieras4); $test6 = poisson($moa1,$vieras5); $test7 = poisson($moa1,$vieras6); $test8 = poisson($moa1,$vieras7); $test9 = poisson($moa1,$vieras8); $test10 = poisson($moa1,$vieras9);
mmikko kirjoitti:
Pitänee varmaan josaain vaiheessa tarttua tuohon Grezin ehdottomaan array:hin. Ainakin koodin yksinkertaistuu ja ehkä tulee tehokkaampi. Toisaalta eipä tuo data määrä ole suuri niin tuskin saavutan arraylla tehohyötyä.
Joo ei siitä tosiaan ole tarkoituskaan saada tehohyöytyä vaan nimenomaan koodin yksinkertaistumista ja sitä kautta myös vähemmän virheitä. Myöskin jos jotain tarvii korjata, niin se tarvitsee sitten korjata yhteen kohtaan eikä kymmeneen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.