Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Javascript / php scripti ei toimi

mika132 [19.10.2011 15:52:37]

#

Eli tein Javascript muuttujia joihin tallennan PHP muuttujan arvoja (tietokannasta haettuja arvoja) no nyt ongelmana on, että koska kyseessä on taistelu engine niin toisen tiedot eivät tallennu. Eli siis selitän.

<?php
$tempid == $_SESSION["id"];
if (!empty($_GET["id"])) {
	$kysely = $connection->prepare("SELECT * FROM Glory_Pride_Kayttajat WHERE ID = ?");
	$kysely->execute(array($_GET["id"]));
	$tulos = $kysely->fetch();

	$power = $tulos["Voima"];
	$nopeus = $tulos["Nopeus"];
	$reaktionopeus = $tulos["Reaktionopeus"];
	$kestavyys = $tulos["Kestavyys"];
	$kasi_ase_taito = $tulos["Miekka_taito"];
	$miekka = $tulos["KasiAse"];

	$kysely = $connection->prepare("SELECT * FROM Glory_Pride_Kayttajat WHERE ID = ?");
	$kysely->execute(array($tempid));
	$tulos1 = $kysely->fetch();

$vooma = $tulos1["Voima"];
$noopeus = $tulos1["Nopeus"];
$reeaktionopeus = $tulos1["Reaktionopeus"];
$keestavyys = $tulos1["Kestavyys"];
$kaasi_ase_taito = $tulos1["Miekka_taito"];
$miiekka = $tulos1["KasiAse"];
if (empty($miiekka)) {
	$miiekka = 'Tyhja';
}
if (empty($miekka)) {
	$miekka = 'Tyhja';
}

}
?>
<script type="text/javascript">
<!--
var Voima = <?php echo $vooma; ?>;
var Nopeus = <?php echo $noopeus; ?>;
var Reaktionopeus = <?php echo $reeaktionopeus; ?>;
var Kestavyys = <?php echo $keestavyys; ?>;
var Kasi_ase_taito = <?php echo $kaasi_ase_taito; ?>;
var Miekka = <?php echo $miiekka; ?>;

var Voima2 = <?php echo $power; ?>;
var Nopeus2 = <?php echo $nopeus; ?>;
var Reaktionopeus2 = <?php echo $reaktionopeus; ?>;
var Kestavyys2 = <?php echo $kestavyys; ?>;
var Kasi_ase_taito2 = <?php echo $kasi_ase_taito; ?>;
var Miekka2 = <?php echo $miekka; ?>;

Ylemmän tiedot tallentuvat juuri niinkuin pitää oikeisiin muuttujiin, mutta alemman pelaajan tiedot ovat täysin hukassa? Ei mitään näy. Ei voima arvoa ei nopeus eikä mitään muutakaan.

Sitten jos käännän toisinpäin. Eli Voima2 jnejne siirrän ilman kakkosta olevien yläpuolelle oman pelaajan muuttuja tiedot eivät mene talteen mistä ihmeestä johtuu?

AkeMake [19.10.2011 17:09:50]

#

Virhe löytyy heti kohdasta, jossa määrittelet muuttujan $tempid. Kahden yhtäsuuruusmerkin sijasta pitäisi käyttää yhtä.

Turhaan laitat php:ssä tietokannasta tulevat arvot muuttujiin, kun ne ovat fetch-komennolla mukavasti taulukossa, josta voit niitä käyttää. Tällöin ei tarvitsisi myöskään keksiä epätoivoisesti jotain toisistaan eroavia muuttujien nimiä. Myös JavaScriptissä voisit laittaa arvot taulukkoon, jolloin voit hakea niitä helposti halutusta taulukosta sopivalla indeksillä.

Yksinkertaistin tuota pikaisesti tällaiseksi (ei testattu):

<?php
if (!empty($_GET["id"])) {
	$sql = "SELECT * FROM Glory_Pride_Kayttajat WHERE ID = ?";
	$kysely = $connection->prepare($sql);
	$kysely->execute(array($_GET["id"]));
	$pelaaja1 = $kysely->fetch();

	$tempid = $_SESSION["id"];
	$kysely = $connection->prepare($sql);
	$kysely->execute(array($tempid));
	$pelaaja2 = $kysely->fetch();

// Käsiase -solujen tyhjyyttä ei tarvitse tutkia, sillä ne voivat tietokannassa olla null. Oikeaa tyhjää arvoa on paljon helpompi käsitellä kuin merkkijonoa "Tyhja".

}
?>

<script type="text/javascript">
<!--
var Pelaaja1 = {nopeus: <?php echo $pelaaja1["Voima"]; ?>, reaktionopeus: <?php echo $pelaaja1["Reaktionopeus"]; ?>, kestavyys: <?php echo $pelaaja1["Kestavyys"]; ?>, kase_ase_taito: <?php echo $pelaaja1["Miekka_taito"]; ?>, miekka: <?php echo $pelaaja1["KasiAse"]; ?>};

var Pelaaja2 = {nopeus: <?php echo $pelaaja2["Voima"]; ?>, reaktionopeus: <?php echo $pelaaja2["Reaktionopeus"]; ?>, kestavyys: <?php echo $pelaaja2["Kestavyys"]; ?>, kase_ase_taito: <?php echo $pelaaja2["Miekka_taito"]; ?>, miekka: <?php echo $pelaaja2["KasiAse"]; ?>};
-->
</script>

<!-- Nyt saat esimerkiksi toisen pelaajan reaktionopeuden taulukon Pelaaja2 solusta reaktionopeus - Pelaaja2["reaktionopeus"] -->

// Edit: pieniä korjailuja koodiin.

Vastaus

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

Tietoa sivustosta