Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lomakkeen tietojen käsittely ja siirto toiselle sivulle (PHP)

Sivun loppuun

ahoo [12.09.2013 21:30:56]

#

Moro.
Minulla on lomake, jossa valitaan "kohde" a, b, c ja "tila" t1, t2 tai t3.
Nyt ollaan siinä vaiheessa että saan lähetettyä lomakkeen tiedot tekstitiedostoon ja luettua ne toiseen html-dokumenttiin.
"Kohteen tila" pitäisi saada tulostettua erilliselle sivulle.
Pystyisikö tämän tekemään muuttujilla, esim.

$kohde = //tähän $kohde arvon haku tallennuspaikasta
$tila= //tähän $tila arvon haku tallennuspaikasta
if ($kohde == a){

switch ($tila) {
    case "t1":
        echo "tila1";
        break;
    case "t2":
        echo "tila2";
        break;
}

jne.

Ymmärrän miten muuttujat saa vaikuttamaan html-koodiin. Mutta mihin ja miten $kohde ja $tila tallennetaan, että kaikkien "kohteiden"(a, b, c) tilat(arvot) säilyvät, kun yhtä tilaa muutetaan?
Kiitos jo etukäteen.

The Alchemist [12.09.2013 22:14:25]

#

No luet datan sieltä tekstitiedostosta, minne olet sen tallentanutkin. Jossain muodossa olet ilmeisesti onnistunut ne sinne laittamaan ja lukemaankin jo yhdessä paikassa, joten saman toiminnallisuuden siirtäminen toiseen paikkaan pitäisi olla ihan triviaali homma.

ahoo [12.09.2013 23:24:05]

#

Kyllä, mutta data tallentuu .txt-tiedostoon rivittäin muodossa $kohde $tila.
Jos lomakkeella lähettää kohteen a tilan uudelleen niin se menee seuraavalle riville.
Esim.

a t1
c t2
a t2
b t1

Kuinka pystyisin määrittämään muuttumattomat paikat kohteille, että tarvitsisi
vain muuttaa tilaa.
Esim.

a = t2
b = t1
c = t3

Mikä olisi toimiva funktio jolla hakea kohteiden tila ja luoda html-koodi sen mukaan?
Esim.

$kohde_a = //hakufunktio tähän

switch ($kohde_a) {
    case "t1":
        echo "<p>a t1<p>";
        break;

The Alchemist [13.09.2013 00:02:09]

#

No yksi simppeli ratkaisuhan on vain etsiä tiedostosta se rivi, jolla haettu avain sijaitsee, ja korvata se rivi uudella (avain, arvo)-parilla.

Vaan oikeasti kannattaisi nyt viheltää peli poikki, heittää tiedostoräpellykset ikkunasta pihalle ja ottaa alle kunnollinen tietokanta.

groovyb [13.09.2013 00:29:38]

#

onko jokin syy siirtää dataa toiselle sivulle tekstitiedoston kanssa, eikä esim sessiossa jos kuitenkin siirrytään saman pannun hostaamalle toiselle sivulle?
vai onko tarkoitus että dataa käytetään myöhemmässä vaiheessa, esim toisessa sessiossa?

knuutti [13.09.2013 08:22:39]

#

Tässäkin tapauksessa serialisointi helpottaisi kummasti datan jatkokäsittelyä.

The Alchemist [13.09.2013 08:48:55]

#

Öh? Php:n serialize() kylläkin vaikeuttaa jatkokäsittelyä varsin kriittisesti. Ensinnäkin se tekee mahdottomaksi suorittaa hakuja suoraan tiedoston sisältöön; tiedot täytyy ensin purkaa takaisin php:n taulukoiksi ja suorittaa haut niihin. Lisäksi se on sekä hidasta että kuluttaa enemmän muistia, koska tiedot pitää lukea kokonaisuudessaan muistiin sen sijaan, että käsiteltäisiin vain lyhyitä merkkijonoja. Sarjallistetusta datasta ei voi hakea yhtä riviä ilman, että koko tiedosto täytyy lukea muistiin ja purkaa sarjallistetusta muodosta pois. Tai jos sarjallistaa rivin kerrallaan, niin se on sitten vieläkin hitaampaa käsitellä.

Täytyy nyt kuitenkin ymmärtää termien merkitys. "Sarjallistaminen" tarkoittaa vain ohjelman sisäisen tietorakenteen muuntamista tallennuskelpoiseen muotoon. Myös tällaiset itse keksityt flatfile-formaatit ovat sarjallistamista.

knuutti [13.09.2013 11:11:33]

#

Öh? Jos dataa ei ole valtava määrä, niin en näe mitään ongelmaa siinä että luetaan tiedosto kokonaisuudessaa takaisin PHP:n ymmärtämään muotoon esimerkiksi taulukkoon.

Taulukosta voidaan sitten tehdä hakuja, vertailuja, ylikirjoituksia, inkrementaatioita jne..

ahoo [13.09.2013 13:18:58]

#

Kiitoksia vastauksista.
Tosiaan en maininnutkaan, että käyttäjiä/sessioita on useita, joten dataa kirjoitetaan ja luetaan(html-sivupyyntö) Joten tietokantako olisi paras vaihtoehto? Vai .csv?

Tietojen tallennuksen muuttujaan ajattelin näin, kertokaa jos menee metsään:

if ($kohde == "a") {
$tila == §tila_a
}

Sitten muuttuja tila_a tallennetaan, mutta miten ja mihin? Niin, että tila_a haetaan seuraavalle sivulle määrittämään html-koodi?


Sivun alkuun

Vastaus

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

Tietoa sivustosta