Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tulosten vertaaminen SQL kannasta

jarspa [16.03.2005 07:45:15]

#

Olen tehnyt kaksi taulukkoa SQL kantaan.

table veikkaus, jossa kentät: osallisuja,aikaajot,1Sija...8Sija

table tulokset, jossa kentät:
aikaajot,1Sija...8Sija

Nyt pitäisi saada tehtyä kysely joka vertaa tulokset taulun kenttiä veikkaus taulu´n kenttiin ja jos esim.1Sija on oikein veikkaus taulussa niin kysely poimii osallistujan nimen ketä on veikannut oikein ja lisää pisteitä oikein veikatusta sijasta.

Tässä on koodi mihin olen yrittänyt tehdä kaikenlaisiakyselyjä onnistumatta siinä.

if(isset($_POST['hae']))
{
$haku=mysql_query("SELECT * FROM tulokset WHERE GP = '$GP'");
$lkm=mysql_num_rows($haku);

print "Tulos rivejä on: $lkm<br><br><br>";




echo "<table border>";
echo "<tr><td><b>Aika-ajot</b></td><td><b>1 Sija</b></td><td><b>2 Sija</b></td><td><b>3 Sija</b></td><td><b>4 Sija</b></td><td><b>5 Sija</b></td><td><b>6 Sija</b></td><td><b>7 Sija</b></td><td><b>8 Sija</b></td></tr>";

for ($i = 0; $i < mysql_num_rows($haku); $i++)
		{
		$aika = mysql_result($haku, $i, "aikaajot");
   		$a = mysql_result($haku, $i, "1Sija");
		$b = mysql_result($haku, $i, "2Sija");
		$c = mysql_result($haku, $i, "3Sija");
		$d = mysql_result($haku, $i, "4Sija");
		$e = mysql_result($haku, $i, "5Sija");
		$f = mysql_result($haku, $i, "6Sija");
		$g = mysql_result($haku, $i, "7Sija");
		$h = mysql_result($haku, $i, "8Sija");


echo "<tr>	<td>$aika</td>
			<td>$a</td>
			<td>$b</td>
			<td>$c</td>
			<td>$d</td>
			<td>$e</td>
			<td>$f</td>
			<td>$g</td>
			<td>$h</td>
	</tr>";

}
echo "</table>";

KuinKala [16.03.2005 10:24:15]

#

Suomeksi:

- jos 'tulokset' taulun sija1 on sama kuin 'veikkaus' taulun sija1
- poimi nimi
- muuten
- tee jotain

Eli teet haun kummastakin taulusta, luot sijatuloksille muuttujat ja vertaat niitä, jos näin haluat asian toteuttaa.

jarspa [16.03.2005 12:16:59]

#

Mihin kohtaan kyselyä tulee osallistujan poimiminen? Heitä esimerkki kyselystä.

belthaxor [16.03.2005 13:10:28]

#

KuinKala kirjoitti:

...jos näin haluat asian toteuttaa.

Onko sinulla joku järkevämpi ratkaisu tuon toteuttamiseksi?

FooBat [16.03.2005 15:17:09]

#

Jos eri sijoitukset ovat eri kentissää on niiden vertailu vähän tuskallista etenkin, jos haluat antaa pisteitä myös niille, jotka esimerkiksi arvasivat yhden sijan väärin.

Itse tekisin tämän niin, että jakaisin tuon yhteden tietokanta rivin kahdeksaan (tai yhdeksään jos aika-ajo on mukana) eri riviin, jossa sijoitus on yksi kenttä.

Eli
Table veikkaus(GP, osallistuja, bool aika-ajo, kuski, sijoitus);
Table tulos(GP, bool aika-ajo, kuski, sijoitus);

Noissa tauluissa aika-ajo olisi vain boolean, jolla kerrotaan, että kyseinen rivi on aika-ajo veikkaus tai sijoitus. Tietenkin aika-ajoja varten voisi tehdä oman taulunkin.

Tästä pystyy nyt helposti hakemaan rivit, jotka ansaitsevat pisteitä.

SELECT V.osallistuja, V.aika-ajo, V.kuski, V.sijoitus, T.sijoitus
FROM veikkaus V, tulos T
WHERE V.GP = $GP AND T.GP = $GP
AND V.kuski = T.kuski AND V.aika-ajo = T.aika-ajo
AND  ABS(T.sijoitus - V.sijoitus) < 2
SORT BY V.osallistuja

ABS() < 2 on tuossa vain esimerkki, joka huomioi yhden sijan väärin arvatus veikkaukset. Koko lauseen voi oikeastaan jättää pois ja jättää sijoitusten vertailun PHP:n tehtäväksi.

PHP:n puolella voi sitten laskea pisteitä vertailemalla yksittäisten veikkaisten veikattuja sijoituksia ja oikeita sijoituksia. Pistemäärää lasketaan niin kauan yhdelle veikkaajalle kuin osallistuja kenttä pysyy samana.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta