Tervehdys!
Ilman aiempaa kokemusta php:stä ja vähäisellä kokemuksella ohjelmoinnista olen yrittänyt värkätä lomakkeeseen perustuvaa ns. kysymys - vastaus sivua. Käyttämäni koodit ovat lähtöisin pääasiassa täältä ohjelmointiputkan sivustolta, josta on löytynyt paljon hyviä esimerkkejä tästä aiheesta ja olen saanut tämän hitaasti puurtamalla jotenkin toimivaksi.
Syötän tietoa lomakesivun kautta, josta tiedot tallentuvat teksitiedostoon ja josta ne voidaan purkaa sitten varsinaiselle sivulle näkyviin. Eräänlainen tietokanta on siis kyseessä, mutta pelkästään php -pohjainen. Luultavasti tämän voisi paremmin toteuttaa MySQL -tietokannalla, mutta ajattelin kokeilla onnistuisiko tämä php:llä. Muuten toimii mutta yhtä asiaa en saa tehdyksi eli miten voisi valita ja muuttaa tekstitiedostosta vain yhden rivin tietoja.
Eli siis lomakkeen kahteen kenttään kirjoitetaan kysymys ja vastaus, joka tallentuu tekstitiedostoon varustettuna tunnistenumerolla ja päivämäärällä. Tekstitiedoston rivit näyttävät tältä.
1 | 16.03.2010 18:47 | kysymys | vastaus
2 | 16.03.2010 18:48 | kysymys | vastaus
3 | 16.03.2010 18:49 | kysymys | vastaus
4 | 16.03.2010 18:51 | kysymys | vastaus
Sitten tekstitiedoston tiedot puretaan explode:lla sivulle ja tulostetaan näkyviin. Koodi olennaisilta osin näin:
<?php for ($i = 0; $i < $maara; $i++) { $tiedot = explode("|", $tekstit[$i], 4); if($tekstit != "\n") $id = $tiedot[0]; $date = $tiedot[1]; $ot = $tiedot[2]; $sel = $tiedot[3]; echo "<br>$ot <br>"; echo "<br><KBD>$sel</KBD><br>"; echo "<p><p><SMALL><a href=\"muokkaa_0.php\">muokkaa tapausta (nro: $id)</SMALL></a><p><hr>"; ?>
Tietojen editointi onnistuu siten, että koko tekstitiedosto luetaan lomakkeeseen ja sen jälkeen tallennetaan. Mutta jos haluaisikin editoida vain jotain tiettyä tapausta esim. numeroa 3 niin että vain sen kysymys ja vastaus tulisivat lomakkeen kenttään ja sen jälkeen onnistuisi taas tallennus.
Alla ovat muokkaa ja tallenna php:t
- muokkaa_0.php
<form action="tallenna_0.php" method="post"> <textarea name="tieto" rows="30" cols="125"> <?php $tieto = file_get_contents("txt/testi_0.txt"); $tieto = htmlspecialchars($tieto); echo $tieto; ?> </textarea><br> <input type="submit" value="Tallenna"> </form>
- tallenna_0.php
Luet yhden rivin apumuuttujaan ja käsittelet apumuuttujaa.
Jos tiedoston koko ei ole kauhean iso, niin voit lukea tiedoston file funktiolla valmiiksi taulukkoonn. Tämän jälkeen purat halutun solun, muokkaat sitä ja tallennat koko taulukon takaisin tiedostoon.
Jokotai - Jotenkin tuon ymmärän, mutta jos löytyisi esimerkki niin ehkä sen jälkeen menisi perille paremmin.
Teuro - Tiedosto ei ole iso ja File_get_contents() varmaankin toimisi, mutta sama juttu eli esimerkin avulla voisin jotenkin päästä paremmin kärryille. Toisaalta ajattelin että voisin hyödyntää tekemääni koodia, mutta jos se on kelvotonta tähän tarkoitukseen niin ehkä sen voi hylätä.
Eli miten saisin tuosta linkistä aina aukeamaan kyseisen id numeron mukaisen rivin lomakkeeseen ja tallennettua takaisin samalla id -numerolla
<a href=\"muokkaa_0.php\">muokkaa tapausta (nro:$id)</SMALL></a>
Teuro kirjoitti:
Jos tiedoston koko ei ole kauhean iso, niin voit lukea tiedoston file funktiolla valmiiksi taulukkoonn. Tämän jälkeen purat halutun solun, muokkaat sitä ja tallennat koko taulukon takaisin tiedostoon.
Sama idea kuin tuossa. \n erotusmerkkinä explodessa ja siinä sitten haluttua riviä muuttamaan.
Elikä siis
<?php $muokattava = file("txt/testi_0.txt"); $muokattava_id = abs($_GET['id']); /* Tarkista, että id on pienempi kuin count($muokattava) */ $haluttu_rivi = $muokattava_id[$id]; /* Tee muutokset */ /* kirjoita rivi kerrallaan takaisin */
EDIT muokattu typo pois koodista kiitos macrolle.
Teuro varmaan tarkoitti $id:llä $muokattava_id:tä.
Kiitos tarkemmista ohjeista, täytyy kokeilla kunhan tulee sopiva hetki..
Oli meikäläiseltä liikaa luvattu että kokeilisin.. En osaa tuota soveltaa ellen saa lisää neuvoja. Sori nyt, mutta aloittelija kun olen niin minulle joutuu vääntämään rautalangasta. Epäselvää on minne koodi pitäisi sijoittaa? Siihen ensimmäiseen josta luetaan ja tulostetaan tekstit vai muokkaa_0.php vai tallenna_0.php?
Mikä kohta tuottaa ongelmia?
Muokkasin vielä tuota edellistä kysymystäni..
abs on funktio, jonka toiminnan voit selvittää php:n dokumentaatiosta. Epäilemättä osaat kuitenkin luoda tarvittavan lomakkeen ja käsitelllä siitä saatavat datat, niin minusta jäljelle jää tuo viimeinen kommentti, eli tallennus rivi kerrallaan takaisin tiedostoon.
Aihe on jo aika vanha, joten et voi enää vastata siihen.