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.
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).
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";
Kummassakin kielessä on puolipiste (;) rivin perässä.
Javascriptissä se ei ole pakollinen
Juu, tosiaan kirjoitin nopsaa niin unohtu laittaa puolipisteet...
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); ?>
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.
Jos sulla on olioita, taulukossa ja vaihdat niiden paikkoja, niin tietenkin olion kaikki tiedot siirtyvät samalla...
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); ?>
Eikös toi tulos jutska ollu ihan oikein? Ainaki mitä nopeesti vilkaisin...
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?
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
Eli muuten toimii, paitsi toi -sampp4- menee väärään kohtaa? Aikas jännä...
Itse asiassa pitäisi mennä toisin päin. Parhain ensiksi ja huonoin viimeiseksi. =)
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.
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. :)
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.
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
<?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); ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.