Saan tulostettua MySQL kannasta jokaiselle ottelulle maalintekijät ja muut tapahtumat ja tiedot omalle sivulle ottelun id-numeron perusteella (esim. /ottelu.php?id=100). Jokaisen ottelun jälkeinen sarjataulukkotilanne tuottaa hankaluuksia (haluan siis sivulle mistä löytää ottelun maalintekijät ja muut tapahtumat myös laskettua ko.ottelun jälkeisen sarjataulukon).
Miten saan haettua ottelun id:n mukaisen pvm:n ja turnaus_id:n arvot muuttujaan?
Pystyykö totetuttamaan näin: Ensin haen GETillä ottelun id:n mukaisen rivin, josta saan arvot pvm:lle ja turnaus_id:lle, jotka lisään muuttujaan -> sarjataulukon WHERE ehtoon?
<?php // muodostetaan yhteys tietokantaan include("yhteys.php"); $turnaus = ''; // Tähän ottelun id:n mukainen turnaus_id $paiva = ''; // Tähän ottelun id:n mukainen pvm // Toimii kuin unelma jos itse näppäilen arvot $kysely = $yhteys->prepare("SELECT nimi AS Joukkue, Sum(O) AS O,Sum(V) AS V,Sum(T) AS T,Sum(H) AS H, SUM(TM) AS TM, SUM(PM) AS PM,SUM(ME) AS ME,SUM(PST) AS PST, Sum(KO) AS KO, Sum(KV) AS KV,Sum(KT) AS KT,Sum(KH) AS KH, Sum(KTM) AS KTM, Sum(KPM) AS KPM, Sum(KME) AS KME, Sum(KPST) AS KPST, Sum(VO) AS VO, Sum(VV) AS VV,Sum(VT) AS VT,Sum(VH) AS VH, Sum(VTM) AS VTM, Sum(VPM) AS VPM, Sum(VME) AS VME, Sum(VPST) AS VPST FROM( SELECT koti_id Joukkue, IF(km IS NOT NULL,1,0) O, IF(km > vm,1,0) V, IF(km = vm,1,0) T, IF(km < vm,1,0) H, IF(km IS NOT NULL, km,0) TM, IF(vm IS NOT NULL, vm,0) PM, IF(km IS NOT NULL, km - vm,0) ME, CASE WHEN km > vm THEN 3 WHEN km = vm THEN 1 ELSE 0 END PST, IF(km IS NOT NULL,1,0) KO, IF(km > vm,1,0) KV, IF(km = vm,1,0) KT, IF(km < vm,1,0) KH, IF(km IS NOT NULL, km,0) KTM, IF(vm IS NOT NULL, vm,0) KPM, IF(km IS NOT NULL, km - vm,0) KME, CASE WHEN km > vm THEN 3 WHEN km = vm THEN 1 ELSE 0 END KPST, 0 VO, 0 VV, 0 VT, 0 VH, 0 VTM, 0 VPM, 0 VME, 0 VPST FROM ottelut WHERE turnaus_id = '".$turnaus."' AND pvm <= '".$paiva."' UNION ALL SELECT vieras_id, IF(vm IS NOT NULL,1,0), IF(km < vm,1,0), IF(km = vm,1,0), IF(km > vm,1,0), IF(vm IS NOT NULL, vm,0), IF(km IS NOT NULL, km,0), IF(vm IS NOT NULL, vm - km ,0), CASE WHEN km < vm THEN 3 WHEN km = vm THEN 1 ELSE 0 END, 0, 0, 0, 0, 0, 0, 0, 0, IF(vm IS NOT NULL,1,0), IF(km < vm,1,0), IF(km = vm,1,0), IF(km > vm,1,0), IF(vm IS NOT NULL, vm,0), IF(km IS NOT NULL, km,0), IF(vm IS NOT NULL, vm - km,0), CASE WHEN km < vm THEN 3 WHEN km = vm THEN 1 ELSE 0 END FROM ottelut WHERE turnaus_id = '".$turnaus."' AND pvm <= '".$paiva."' ) as taulukko JOIN joukkue j ON taulukko.Joukkue=j.id GROUP BY Joukkue ORDER BY SUM(PST) DESC, SUM(ME) DESC"); // suoritetaan kysely $kysely->execute(); $rivi = $kysely; echo "<table>"; // käsitellään tulostaulun rivit while ($rivi = $kysely->fetch()) { echo "<tr>"; echo "<td>" . htmlspecialchars($rivi["Joukkue"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["O"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["V"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["T"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["H"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["TM"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["PM"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["PST"]) . "</td>"; // JNE echo "</tr>"; } echo "</table>"; ?>
mm. tätä ja kaikkea muuta olen yrittänyt koodin alkuun, mutta näin ei ainakaan toimi.
// valmistetaan kysely $kysely = $yhteys->prepare("SELECT * FROM ottelut WHERE id = ?"); // suoritetaan kysely $kysely->execute(array($_GET["id"])); $rivi = $kysely->fetch(); // arvot muuttujaan $turnaus = '$rivi["turnaus_id"]'; $paiva = '$rivi["pvm"]';
Ei näin!
IceGuy kirjoitti:
... WHERE turnaus_id = '".$turnaus."' AND pvm <= '".$paiva."' ... WHERE turnaus_id = '".$turnaus."' AND pvm <= '".$paiva."' ...
Hae Googlella:SQL inject
Tuleeko päivämääräsi oikeassa muodossa?
Aihe on jo aika vanha, joten et voi enää vastata siihen.