Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Miten rivien arvot haettua muuttujaan?

IceGuy [06.12.2016 17:16:50]

#

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"]';

peran [06.12.2016 21:44:08]

#

Ei näin!

IceGuy kirjoitti:

...
  WHERE turnaus_id = '".$turnaus."' AND pvm <= '".$paiva."'
...
  WHERE turnaus_id = '".$turnaus."' AND pvm <= '".$paiva."'
...

Hae Googlella:SQL inject

groovyb [06.12.2016 22:59:00]

#

Tuleeko päivämääräsi oikeassa muodossa?

Vastaus

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

Tietoa sivustosta