Seuraava on ongelma ja voi olla hankala selittää. Olen kyhäilemässä jotain pientä "uutisten" lisäys ja editointi juttua tai en välttämättä edes rakentelemassa, mutta kunhan kokeilen. Eikä sitä välttämättä voi kutsua uutissysteemiksi ollenkaan :) Siinä voidaan syöttää "uutinen" www-lomakkeeseen, josta sitten tiedot lähetetään tekstitiedostoon muodossa:
id|pvm|nimi|sähköpostiosoite|uutinen
Sitten mietiskelin, että miten voisi tulostaa nuo "uutiset" www-sivulle. Sekin onnistui ja vielä sekin, että pystyn ottamaan jokaisen aiheen erikseen editoitavaksi textareaan.
Eli jokaisen lisätyn "uutisen" jälkeen tulee "Edit"-linkki, joka hakee sen kyseisen kohdan textarean sisään. Jotain tuollaista:
$data = file('news.txt');
$data = array_reverse($data);
foreach($data as $element) {
$element = trim($element);
.
.
<a href=\"edit.php?data=$element\">Edit</a>
Sitten kun ollaan tuossa textareassa, niin siihen pitäisi tehdä muutoksia ja saada tuo yksi tekstitiedoston osa korvattua tällä uudella, editoidulla tekstillä. Eli siis koko tekstitiedostoa ei korvata, vain tuo $element -osa. Ja sama siis jokaisen "uutisaiheen" kohdalla.
Onko ajatuksia, kuinka tuo tehdään. Koitin jotain str_replacella mutta ei luonnistunut.
Jos uutisilla on jokaisella oma id, niin voisit kokeilla etsiä korvattavan rivin sen perusteella. Voisi vaikka tehdä funktion, joka vertailee id:tä ja palauttaa rivinumeron, vaikka vähän näin:
<?php function findid($id){ $news = file("news.txt") for($i=0; $i<count($news); $i++){ $data = explode("|", $news[$i]); if($id == $data[0]) return $i; } return false; } ?>
Sitten vain korvaat tuon rivin uudella, ja kirjoitat koko homman tiedostoon.
Kiitos paljon vinkistä! Jotain tuollaista ajattelinkin, mutta se ei vääntynyt kooditasolle. :) Täytyy testata tuon funktion toimintaa.
Väänsin itse tuollaisen joskus, ja muistaakseni täällä keskustelupalstallakin on näkynyt ehdotuksia, että kannattaa tehdä tekstitiedostoon ikäänkuin rivinumerot ja käsitelllä aina rivinumeroiden välistä string osaa. Itse lisäsin aina rivinumeron perään välin ja erottelin muut kentät #-merkillä, sillä jos uutisen otsikon aloitti numerolla, tuo logiikka ei pelannut.
Eli esim.
1 # otsikko eka # tekstiä
2 # otsikko toka # kälä kälä
Aihe on jo aika vanha, joten et voi enää vastata siihen.