Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: textarean sisälle oletuksena teksti tekstitiedostosta

Sivun loppuun

zankari [01.01.2006 20:23:41]

#

Minulla on toimiva jäsenalue sivuillani, jonne olen tekemässä mahdollisuutta kirjoittaa tekstiä sivuille. Jos tunnukset täsmäävät, sivulle tulostetaan <textarea> ja sen sisälle olisi tarkoitus saada oletuksena teksti samasta tekstitiedostosta johon kirjoitetaan. (Eli tarkoitus on, että henkilöt, joilla on tunnukset, voivat muokata sivuilla olevaa tekstiä.)
Olen yrittänyt seuraavalla tavalla, mutta <textarea>:n sisälle on tullut vain "Array":

// Tiedosto, jossa tekstit ovat ja johon kirjoitetaan.
$esimerkki = file("esimerkki.txt");
if ($_SESSION['nimi'] == "kirjautunut") {
    echo ("Terve! Olet kirjautunut sisään!");
    echo ('<form method="POST" action="jasen.php"><textarea name="teksti">' . $esimerkki . '</textarea>');
    echo ('<input type="submit" value="Lähetä"></form>');
}

Tämän tiedoston nimi oli siis tuo "jasen.php". Tekstitiedostoon kirjoittaminen toimii jo, enkä liittänyt sen koodia tähän.

Toivottavasti ymmärsitte vähän sekavan viestin ja kiitän jo etukäteen avusta.

acorn [01.01.2006 20:26:29]

#

https://www.php.net/manual/fi/function.file-get-contents.php

kasetti [01.01.2006 20:48:11]

#

<?php
$tiedosto = fopen("esimerkki.txt", "r");
while (!feof($tiedosto)) {
        $sisalto = fgets($tiedosto, 4096);
}
echo $sisalto;
?>

en ole testannut että tuo koodi toimii mutta tuossa yksi tapa.

zankari [02.01.2006 13:56:15]

#

Kiitos kasetti, tuo toimi. Sitten olisi vielä toinen asia samasta aiheesta. Koodi näyttää nyt tältä:

$esimerkki = fopen("esimerkki.txt", "ab");
$teksti = $_POST['teksti'];
$esimerkki2 = fopen("esimerkki.txt", "r");
if ($_SESSION['nimi'] == "kirjautunut") {
    while (!feof($esimerkki2)) {
        $esimerkki3 = fgets($esimerkki2, 4096);
}
    echo ("Terve! Olet kirjautunut sisään!");
    echo ('<form method="POST" action="jasen.php"><textarea name="teksti">' . $esimerkki3 . '</textarea>');
    echo ('<input type="submit" value="Lähetä"></form>');
    fwrite($esimerkki, "$teksti");
    fclose($esimerkki);
}

Miten saisin tuon vielä siten, että se kirjoittaisi tekstitiedostoon uuden tekstin vanhan tilalle? Kokeilin jo moodia "w+" "ab":n sijasta, mutta se ei toiminut toivotulla tavalla: Tekstitiedosto tyhjennettiin jo ennen, kuin sen sisältö tulostettiin <textarea>:n sisään.

Mikä neuvoksi?

sooda [02.01.2006 14:05:26]

#

Pidemmän päälle kasetin koodi käy ikäväksi, $sisalto = fgets.. kuuluisi olla $sisältö .= fgets...

Tän kuitenki pitäs hoitaa homma, jos oikein tajusin:

<?php
$sisältö = file_get_contents("esimerkki.txt");
$teksti = $_POST['teksti'];
if ($_SESSION['nimi'] == "kirjautunut") {
    echo ("Terve! Olet kirjautunut sisään!");
    echo ('<form method="POST" action="jasen.php"><textarea name="teksti">' . $sisältö . '</textarea>');
    echo ('<input type="submit" value="Lähetä"></form>');
    $fh = fopen("esimerkki.txt", "w");
    fwrite($fh, $teksti);
    fclose($fh);
}
?>

zankari [02.01.2006 16:57:09]

#

Minulla tuo ei toiminut, toivottavasti osasin sen oikein pistää. Kun kirjauduin sisään, ruudulle tulostettiin seuraava error: "Fatal error: Call to undefined function: file_get_contents() on line 3". Ja koodihan näyttää tältä:

$esimerkki2 = file_get_contents("esimerkki.txt");
$teksti = $_POST['teksti'];

if ($_SESSION['nimi'] == "kirjautunut") {
    echo ("Terve! Olet kirjautunut sisään!");
    echo ('<form method="POST" action="jasen.php"><textarea name="teksti">' . $esimerkki2 . '</textarea>');
    echo ('<input type="submit" value="Lähetä"></form>');
    $th = fopen("esimerkki.txt", "w");
    fwrite($th, "$teksti");
    fclose($th);
}

Mikähän nyt mahtaa olla vialla?

tsuriga [02.01.2006 17:08:23]

#

Väärä versio php:stä mahdollisesti? Ja echoihin ei tarvitse ()-merkkejä, se ei ole funktio.

zankari [03.01.2006 09:45:04]

#

Kiitos tsuriga. Kokeilin toisella serverillä ja se toimii. Nuo sulkumerkit ovat tulleet vain tottumuksesta. Kiitos kaikille jotka vaivautuivat auttamaan minua.


Sivun alkuun

Vastaus

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

Tietoa sivustosta