Olen tekemässä PHP:llä ja MySQL tietovisaa ja se toimii.
Haluaisin peliin kuitenkin perinteiset Poista kaksi väärää vaiht.ehtoa- ja ohita kysymys-painikkeet.
Osaisiko joku antaa vinkkiä kuinka nuo saisi tehtyä? Kiitos jo etukäteen.
Mikä kohta näiden toteutuksessa tuntuu vaikealta?
En vain pääse edes alkuun, kun en tosiaan ole mikään huippukoodari.
Jos jollain olisi intoa neuvoa noihin sellainen koodin pohja, niin uskon kyllä osaavani itse sijoittaa siihen oikeat muuttujat.
Toteutus riippuu ihan siitä, miten olet muuten tehnyt visan, joten ei voi antaa mitään kovin järkevää pohjaa.
Kysymyksen ohittaminen nyt ainakin on helppo tehdä: siirrytään vain seuraavaan kysymykseen, kuten vastauksenkin jälkeen tehtäisiin.
Poistoon voi käyttää jotain tällaista:
<?php // Kaikki vaihtoehdot ja oikea vaihtoehto. $kaikki = [1, 2, 3, 4]; $oikea = 3; // Oikeaa ei saa poistaa. $väärät = array_diff($kaikki, [$oikea]); // Sekoitetaan väärät vaihtoehdot ja otetaan kaksi. shuffle($väärät); $poistettavat = array_slice($väärät, 0, 2); // Tulostamisen yhteydessä: if (in_array($vaihtoehto, $poistettavat)) { echo "(poistettu)"; } else { echo htmlspecialchars($vaihtoehto); }
Käytin visan tekemiseen sessionhallintaa.
Koodi näyttää seuraavalta, jos siitä mitään apua on:
Tuon ohittamisen vois varmaan hoitaa jotenkin seurvaavasti
Kysymysten poiston minä tekisin jotenkin näin
Tuo ohitus-kohta toimi, kiitos siitä!
Kuinka tuota Metabolixin koodia pitäisi muunnella, jotta toimisi?
Sinun pitäisi tallentaa vastausvaihtoehdot tietokantaan erikseen, jotta voisit ehtolauseiden avulla tulostaa niistä vain osan. Jos vastaukset ovat jotenkin suoraan kysymystekstin seassa, niiden poistaminen on virhealtista ja rumaa kikkailua.
Tarvitseeko minun siis luoda kantaan vastauksille oma taulu?
Tällä hetkellä kannassa on taulu tässä muodossa:
INSERT INTO kysymykset (kysymys,vastaus1,vastaus2,vastaus3,vastaus4,oikeavastaus)
Nykyinen taulu sopii. Näyttämästäsi koodista puuttuu kokonaan tuo vastausten käsittely, joten taulun rakennetta ei voinut arvata. On myös mahdotonta sanoa, miten koodiasi sitten pitäisi muuttaa. Koodiini kuitenkin tarvitsee vain vaihtaa muutama muuttuja, niin se toimii. Sanoithan, että osaisit tehdä sen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.