Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Javascript oliot

Sivun loppuun

mika132 [04.01.2010 18:10:24]

#

Eli miten nyt teen ne Javascript oliot? Testing:

struct PELAAJA{
//MySQL hössötykset täsä eli avaukset yms. Eli avataan tietokannat osallistujien dataan ja sieltä käsin pomitaan kaikki.

var ajotaito[$monestko_pelaaja]=$tulos1["AJOTAITO"]; //Eli tietokannasta haettua
var nimi[$monestko_pelaaja]=$tulos1["Kayttaja"]; //Eli tietokannasta haettua
var taso[$monestko_pelaaja]=$tulos1["Taso"]; //Eli tietokannasta haettua
var hallussa_ID[$monestko_pelaaja]=$tulos1["Hallussa_auton_ID"]; //Eli tietokannasta haettua

//MySQL hössötykset täsä eli avaukset yms tietokannasta autot.

var Auton_ID[$monestko_pelaaja]=$tulos1["Auton_ID"]; //Eli tietokannasta haettua
}

Sitten siihen mitä en ymmärrä.

Miten tuo auttaa siinä jos heitän esimerkiksi kaikki ajotaito järjestykseen niin miten tuo auttaa siinä, että nimet menevät niiden omien ajotaitojen kohdalle.

Macro [04.01.2010 18:16:53]

#

Mitä tuo on olevinaan? Ei Javascriptillä haeta tietokannasta mitään, ja muuttujat eivät ala dollarimerkillä. Lisäksi Putkassa ei ole jcode tagia (mod. korjasi).

vehkis91 [04.01.2010 18:20:08]

#

Edit: lisätty puolipisteet...

PHP:llä voit hakea kamaa tietokannasta.


Ja noi muuttujatkin ovat päin honkia:

//Php muuttujat

$muuttuja = "MOI";

//js muuttuja

var muuttuja = "MOI";

Macro [04.01.2010 18:24:40]

#

Kummassakin kielessä on puolipiste (;) rivin perässä.

Juhko [04.01.2010 18:30:15]

#

Javascriptissä se ei ole pakollinen

vehkis91 [04.01.2010 18:37:49]

#

Juu, tosiaan kirjoitin nopsaa niin unohtu laittaa puolipisteet...

Teuro [04.01.2010 18:43:54]

#

Voitko kertoa, että miten tuon on siis tarkoitus toimia? Tällaisilla epämääräisillä pätkillä kummallista koodia ei vain oikein tee mitään. PHP:n puolella voisit tehdä esimerkiksi kilpailijoista oman luokan, jossa olisi nuo haluamasi muuttujat. Sitten laitat kilpailijat taulukkoon, jota voit sitten järjestellä mielesi mukaan.

<?php
/** Tietokanta-asetukset **/
require("asetukset.php");
require("kanta.php");

/** Näitä voi tehdä niin paljon, kuin tarvitset **/
function taito($a, $b){
	$a_taito = $a->anna_taito();
	$b_taito = $b->anna_taito();
	return (($a_taito > $b_taito) ? $a_taito : $b_taito);
}

/** Kätevä debug-vaiheessa **/
function tulosta($taulukko){
	echo"<table>";
	foreach($taulukko AS $nimi){
		echo"<tr>";
		echo"<td>" . $nimi->anna_nimi() . "</td>";
		echo"<td>" . $nimi->anna_taito() . "</td>";
		echo"</tr>";
	}
	echo"</table>";
}

/** Kilpailialuokka aika ykinkertainen vielä **/
class Kilpailia{
	private $_nimi;
	private $_auto;
	private $_taito;

	public function __construct($nimi, $auto, $taito){
		$this->_nimi = $nimi;
		$this->_auto = $auto;
		$this->_taito = $taito;
	}

	public function anna_nimi(){
		return $this->_nimi;
	}

	public function anna_taito(){
		return $this->_taito;
	}
};

$kisaajat = Array();

$kysely = "
	SELECT
		nimi,
		auto,
		taito
	FROM
		kisaajat
	ORDER BY
		nimi
	DESC;";

	$tulokset = mysql_query($kysely);

	echo"<p>" . mysql_error() . "</p>";

	while($rivi = mysql_fetch_array($tulokset, MYSQL_ASSOC)){
		$kisaajat[] = new Kilpailia($rivi['nimi'], $rivi['auto'], $rivi['taito']);
	}
	tulosta($kisaajat);

	usort($kisaajat, "taito");

	tulosta($kisaajat);
?>

mika132 [04.01.2010 18:44:13]

#

Minun mokani. Käytän siis PHP:tä ja Javascriptiä yhdessä. Juuri sen takia, että javascriptillä ei voi hakea tietoa jota tarvitsen ja PHP:llä taas voi. Osaan jo käyttää niitä yhdessä, mutta ainut ongelma on, että miten tuo tietää nuo asiat joita kysyin eli.

Miten se tietää, että ensin etitään pelaajan yksi ja sitten pelaajan kaksi ja jos pelaajalla kaksi on isommat arvot kuin yhdellä niin se laittaa kakkosen etusijalle ja pitää kakkosen tiedot mukanaan. Eli ei muuta pelkästään sitä yhtä kohtaa.

vehkis91 [04.01.2010 18:50:16]

#

Jos sulla on olioita, taulukossa ja vaihdat niiden paikkoja, niin tietenkin olion kaikki tiedot siirtyvät samalla...

mika132 [04.01.2010 21:25:40]

#

Olen nyt kääntänyt ja vääntänyt jos jonkin näköistä ja tulos on tämä:

1	matti	 16
2	green	 21
3	ahaaha	 4
4	-sampp4- 3
//Muuntamisen jälkeen.
1	ahaaha	 4
2	matti	 16
3	green	 21
4	-sampp4- 3

Eli suomeksi:
Yritin laittaa koodin jotain uutta ja jotain vanhaa ja tein omia purkka juttuja jospa se lähtisi siitä, mutta ei. Joten palasin vanhaan koodiin sen mikä on tuolla ylempänä. Se antaa aina samat arvot vaikka tilanne olisi mikä.

Tai ei se täysin ole se sama vanha koodi, joten laitan sen nyt tähän:

<?php
/** Tietokanta-asetukset **/
$connection = mysql_connect("localhost","web00439","SALATTU") or die('Error!!! Otathan yhteytta administoon.');
mysql_select_db("web00439", $connection);

/** Näitä voi tehdä niin paljon, kuin tarvitset **/
function taito($a, $b){
    $a_taito = $a->anna_taito();
    $b_taito = $b->anna_taito();
    return (($a_taito > $b_taito) ? $a_taito : $b_taito);
}

/** Kätevä debug-vaiheessa **/
function tulosta($taulukko)
{
	$sija=1;
	echo"<table>";
	foreach($taulukko AS $nimi)
	{
		echo"<tr>";
		echo"<td>" . $sija . "</td>";
	 	echo"<td>" . $nimi->anna_nimi() . "</td>";
		echo"<td>" . $nimi->anna_taito() . "</td>";
		echo"<td>" . $nimi->anna_taso() . "</td>";
		echo"</tr>";
		$sija+=1;
	}
	echo"</table>";
}

/** Kilpailialuokka aika ykinkertainen vielä **/
class Kilpailia{
    private $_nimi;
    private $_auto;
    private $_taito;
    private $_taso;

    public function __construct($nimi, $auto, $taito, $taso){
        $this->_nimi = $nimi;
        $this->_auto = $auto;
        $this->_taito = $taito;
        $this->_taso = $taso;
    }

    public function anna_nimi(){
        return $this->_nimi;
    }

    public function anna_taito(){
        return $this->_taito;
    }

    public function anna_taso(){
        return $this->_taso;
    }
};

$kisaajat = Array();

$kysely = " SELECT Kayttaja, ID, Ajotaito, Taso, Kaytossa_auto_ID, Osallistunut_kisaan FROM Jokkis_manager WHERE Osallistunut_kisaan = 2 ORDER BY Osallistunut_kisaan DESC";
$tulokset = mysql_query($kysely);

echo"<p>" . mysql_error() . "</p>";

while($rivi = mysql_fetch_array($tulokset, MYSQL_ASSOC))
{
	$kisaajat[] = new Kilpailia($rivi['Kayttaja'], $rivi['Kaytossa_auto_ID'], $rivi['Ajotaito'], $rivi['Taso']);
}
tulosta($kisaajat);
echo "<br><hr>";

usort($kisaajat, "taito");

tulosta($kisaajat);
?>

vehkis91 [04.01.2010 21:57:24]

#

Eikös toi tulos jutska ollu ihan oikein? Ainaki mitä nopeesti vilkaisin...

Teuro [04.01.2010 22:07:34]

#

Eihän tuloste vastaa ollenkaan mitä pitäisi? Tuonhan pitäisi tulostaa 'sija', 'nimi', 'taito' ja 'taso' muotoinen taulukon rivi eikös niin? Millainen tuloste tuosta siis tarkalleen tulee?

mika132 [04.01.2010 22:21:21]

#

Siis otin sen taso kohdan siitä pois.

1	matti	16	1
2	green	21	7
3	ahaaha	4	1
4	-sampp4-	3	1

1	ahaaha	4	1
2	matti	16	1
3	green	21	7
4	-sampp4-	3	1

vehkis91 [04.01.2010 22:23:39]

#

Eli muuten toimii, paitsi toi -sampp4- menee väärään kohtaa? Aikas jännä...

mika132 [04.01.2010 22:34:49]

#

Itse asiassa pitäisi mennä toisin päin. Parhain ensiksi ja huonoin viimeiseksi. =)

mika132 [05.01.2010 00:54:51]

#

sain ne nyt toisinpäin ja tiedän mikä on vikana, mutta en tiedä miten se korjataan.

<?php
/** Tietokanta-asetukset **/
$connection = mysql_connect("localhost","web00439","6SVqUM") or die('Error!!! Otathan yhteytta administoon.');
mysql_select_db("web00439", $connection);

/** Näitä voi tehdä niin paljon, kuin tarvitset **/
function taito($a, $b){
    $a_taito = $a->anna_taito();
    $b_taito = $b->anna_taito();
    return (($a_taito > $b_taito) ? $a_taito : $b_taito);
}

/** Kätevä debug-vaiheessa **/
function tulosta($taulukko)
{
	$sija=1;
	echo"<table>";
	foreach($taulukko AS $nimi)
	{
		echo"<tr>";
		echo"<td>" . $sija . "</td>";
	 	echo"<td>" . $nimi->anna_nimi() . "</td>";
		echo"<td>" . $nimi->anna_taito() . "</td>";
		echo"<td>" . $nimi->anna_taso() . "</td>";
		echo"</tr>";
		$sija+=1;
	}
	echo"</table>";
}

/** Kilpailialuokka aika ykinkertainen vielä **/
class Kilpailia{
    private $_nimi;
    private $_auto;
    private $_taito;
    private $_taso;

    public function __construct($nimi, $auto, $taito, $taso){
        $this->_nimi = $nimi;
        $this->_auto = $auto;
        $this->_taito = $taito;
        $this->_taso = $taso;
    }

    public function anna_nimi(){
        return $this->_nimi;
    }

    public function anna_taito(){
        return $this->_taito;
    }

    public function anna_taso(){
        return $this->_taso;
    }
};

$kisaajat = Array();

$kysely = " SELECT Kayttaja, ID, Ajotaito, Taso, Kaytossa_auto_ID, Osallistunut_kisaan FROM Jokkis_manager WHERE Osallistunut_kisaan = 2 ORDER BY Osallistunut_kisaan DESC";
$tulokset = mysql_query($kysely);

echo"<p>" . mysql_error() . "</p>";

while($rivi = mysql_fetch_array($tulokset, MYSQL_ASSOC))
{
	$kisaajat[] = new Kilpailia($rivi['Kayttaja'], $rivi['Kaytossa_auto_ID'], $rivi['Ajotaito'], $rivi['Taso']);
}
tulosta($kisaajat);
echo "<br><hr>";

uasort($kisaajat, "taito");

tulosta($kisaajat);
?>

Eli ongelmana:
Siellä on se $sija
Jos tuo $sija on ihan alussa eikä siinä missä se nyt on niin se ei anna ensimmäiselle (eli -samppa4- mitään sijoitusta) eli jonkin syyn takia se ei ota tuota ensimmäistä nimeä käsittelyyn.

mika132 [05.01.2010 02:10:42]

#

Ei nyt toimi haluamallani tavalla. :)

kun koitin näin:

echo "$kisaajat[0]";
echo "$kisaajat[1]";

Tuo ei ole se pointti mitä yritän vaan se, että se kisaaja mikä omistaa parhaimman ajotaidon saa esim 10pts ja toisiksi paras 8 eli tarvitana muuttuja $pts

Tuon jälkeen tarkistetaan randomina (ajotaito vaikuttaa hieman) että tuleeko ulos ajoa jos tulee jätetään yksi taulukko pois ja tämän jälkeen tarkistetaan kuinka hyvä taso on ja lisätään taas pisteitä ja katsotaan ketä on johdossa. Eli se kenellä on lopuksi parhaimmat pisteet voittaa koko kisan. :)

mika132 [05.01.2010 14:17:59]

#

Ajattelin korjata, että jos luulette, että olen niin tyhmä, että luulisin tuon mitä selitin tapahtuvan echo "" koodilla niin en, vaan tarkoitin sillä, että se ei tulosta tuota kisaajan taulukon arvoa. Mutta tarkemmin asiasta ylemmässä viestissäni.

Teuro [05.01.2010 14:31:11]

#

Pyydän vielä kertomaan erittäin yksiselitteisesti, että mikä on väärin? Eli miten olet jonkun asian koodannut ja mikä oli tulos? Tuloksiin mielellään vielä virheilmoitukset jos tulee.

<?php
echo $kisaajat[0];
?>

Tuo on tietenkin väärin, koska tuo alkio on Kilpailia luokan ilmentymä aka olio. Ei siis ollenkaan merkkijono, joten tuo on selvästi väärin tehty debug-tapa

Teuro [05.01.2010 17:36:18]

#

<?php
/** Tietokanta-asetukset **/
require("asetukset.php");
require("kanta.php");

/** Kätevä debug-vaiheessa **/
function tulosta($taulukko){
    echo"<table>";
    foreach($taulukko AS $nimi) {
        echo"<tr>";
        echo"<td>" . $nimi->anna_nimi() . "</td>";
        echo"<td>" . $nimi->anna_taito() . "</td>";
        echo"<td>" . $nimi->anna_taso() . "</td>";
        echo"</tr>";
    }
    echo"</table>";
}

/** Kilpailialuokka aika ykinkertainen vielä **/
class Kilpailia{
	private static $_lajittelu_peruste;
    private $_nimi;
    private $_auto;
    private $_taito;
    private $_taso;

    public function __construct($nimi, $auto, $taito, $taso){
        $this->_nimi = $nimi;
        $this->_auto = $auto;
        $this->_taito = $taito;
        $this->_taso = $taso;
    }

    public function anna_nimi(){
        return $this->_nimi;
    }

    public function anna_taito(){
        return $this->_taito;
    }

    public function anna_taso(){
        return $this->_taso;
    }

	public static function lajittele($a, $b) {
        $peruste = self::$_lajittelu_peruste;
        if($a->$peruste > $b->$peruste){
            return 1;
        }
        return ($a->$peruste === $b->$peruste) ? 0 : -1;
    }

	 public static function aseta_lajittelu_peruste($tietue) {
        self::$_lajittelu_peruste = $tietue;
    }
};

$kisaajat = Array();

$kysely = "
	SELECT
		kuski,
		taito,
		auto,
		taso
	FROM
		jokkis
	ORDER BY
		taito
	ASC
	";
$tulokset = mysql_query($kysely);

echo"<p>" . mysql_error() . "</p>";

while($rivi = mysql_fetch_array($tulokset, MYSQL_ASSOC)) {
    $kisaajat[] = new Kilpailia($rivi['kuski'], $rivi['auto'], $rivi['taito'], $rivi['taso']);
}
tulosta($kisaajat);
echo "<br><hr>";

Kilpailia::aseta_lajittelu_peruste("_taso");
usort($kisaajat, array("Kilpailia", "lajittele"));

tulosta($kisaajat);
?>

Sivun alkuun

Vastaus

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

Tietoa sivustosta