Autor Zpráva
Vopiatos
Profil
Ahoj prosim vas potreboval bych nejakej script kterej by zobrazil txt soubor do ktereho ukladam z formulare, a abych ho mohl editovat.
př.:ve formulari vypisi clanek ten ulozim a zobrazi se mi v indexu no a potreboval bych ho nejak editovat aby bylo mozne jej prepsat nebo vymazat

Diky moc
mattyZEM
Profil
fopen, popřípadě file_get_contents
Joker
Profil
Vopiatos:
Viz v manuálu PHP funkce pro práci se souborovým systémem.

"Zobrazení souboru tak aby šel editovat" obvykle znamená prostě načtení obsahu souboru jako výchozí hodnoty do nějakého editoru, kde je pak tlačítko pro uložení, které zase obsah toho editoru uloží do souboru.
Vopiatos
Profil
použil jsem tento script kterej mi zobrazi test.txt

<?
      $soubor = fopen("test.txt","r+");
      $text = fread($soubor, 300000);
      echo $text;
      fclose ($soubor);
      ?>


a tento kterym muzu do nej zapisovat ale nevim jak otevrit txt a upravit ho.proto ze se mi porad vklada text ktery je tam vlozen a neprida se zadny nebo ho nevymaze.
skusil jsem to zmenit na r+ a w ale vymaze to cele a nic nezapise.

<?

$file = "test.txt";         //jméno souboru, do kterého budete zapisovat

if (isset($area)) {
    $fp = fopen("$file", "a");
    fwrite($fp, "<br>$area");
    fclose($fp);
}

?>

Moderátor Davex: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
Moderátor Davex: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Velda
Profil
máš správně nastavené práva pro soubor text.txt?
Vopiatos
Profil
prava jsou v pohode
mckay
Profil
Vopiatos:
Zkus deskriptor "w+". Vynuluje obsah souboru, pokud neexistuje, zkusí ho vytvořit.
Chro
Profil
Vopiatos:
Příklad, editor.php:
<?php
$file = 'test.txt';
if (isset($_POST['submit'])) {
$area = $_POST['area'];
file_put_contents($file, $area);
echo "Data uložena.";
} ?>
<form action="editor.php" method="post">
<textarea name="area" cols="50" rows="30">
<?php $text = file_get_contents($file); echo $text; ?>
</textarea>
<br>
<input type="submit" name="submit" value="Uložit">
</form>

Do index.php na požadované místo vlož:
<?php readfile('test.txt'); ?>

Případně si ošetři vstup z textarea nebo pokud nebudou fungovat funkce file_..._contents() upravit na taškařici s fopen()...
Vopiatos
Profil
nejak mi to nafacha pise mi to:
Warning: file_put_contents(test.txt) [function.file-put-contents]: failed to open stream: Permission denied in C:\Programy\VertrigoServ\www\editor.php on line 5


Mam tu:

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<textarea name="blabla" cols="50" rows="10">

<?
      $soubor = fopen("soubor.txt","r+");
      $text = fread($soubor, 300000);
      echo $text;
      fclose ($soubor);
      ?>

</textarea>
<input type="submit" name="odeslat" value="OK">
</form>


<?php
if($_POST['odeslat']) { // pokud byl stisknut enter nebo bylo kliknuto na tla&egrave;ítko
$soubor = "soubor.txt"; // název souboru
$ot = fopen($soubor, "w"); // otev&oslash;ení souboru
$w = fwrite($ot, $_POST['blabla']); // zapsání obsahu
fclose($ot); // zav&oslash;ení souboru
if($w) echo("Obsah byl úsp&igrave;šn&igrave; zapsán,"); else echo("N&igrave;kde se stala chyba!"); // vypsání výsledku
}
?>


jen je problem ze mi to vymaze celej text nebo po uprave "w" na r+ atd. se jen přidává dálší, ale potřebuju vymazat třeba 3 řadky a připsat dálší, prostě přepis.
Chro
Profil
Vopiatos:
Chybu permission denied mi skript psal tehdy, když jsem neměl u souboru do kterého jsem chtěl zapisovat práva k zápisu. Nastavil jsem mu chmod 777 a pak to šlo.
Vopiatos
Profil
jo už to funguje velice diky
lukas7
Profil
Zkoušel jsem si tímto způsobem udělat editaci souboru. Postup jaký uvádádí Vopiatos funguje, nicméně pokud chci mít v souboru texty kde sou uvozovky " tak se před něj vždy dát lomítko /. Což nechci, chci se tedy zeptat jak výše uvedený kod upravit aby se před " nedávalao / (lomítko)? velice díky za radu.
Keeehi
Profil
lukas7:
Buď vypni magic_quotes_gpc, nebo ten text projeď funkcí stripslashes.

To lomítko je to druhé, zpětné - \

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0