Autor Zpráva
nicneveda
Profil *
Ahoj, chtěl bych se zeptat jak z formuláře uložit "příspěvek" do části php nebo html souboru. Třeba takhle:
<html>
<head>
<title>Má první stránka</title>
</head>
 <body>
 SEM BY SE ULOŽILA DATA
</body>
</html>
Chro
Profil
Ve zpracovávajícím skriptu si složíš řetězec a ten uložíš do souboru.
$html_start = '<html>...';
if (get_magic_quotes_gpc())
{
$_POST['text'] = stripslashes($_POST['text']);
}
$html_end = '</body></html>';
file_put_contents('soubor.html', $html_start.$_POST['text'].$html_end, LOCK_EX);
nicneveda
Profil *
No právě, mě jde o to jak napsat ten zpracovávající skript...
Chro
Profil
Tak začnem s formulářem. Ten si vlož třeba do souboru index.php
<form action="zpracuj.php" method="POST">
<textarea name="text" cols="30" rows="20"></textarea><br>
<input type="submit" name="odeslano" value="Odeslat">
</form>
Pak si ve stejné složce, ve které máš index.php, vytvoř soubor zpracuj.php a vlož do něj tento PHP kód
<?php
if (isset($_POST['text']) && isset($_POST['odeslano']))
{
$html_start = '<html>
<head>
<title></title>
</head>
<body>
';

if (get_magic_quotes_gpc())

{

$_POST['text'] = stripslashes($_POST['text']);

}

$html_end = '
</body>
</html>';

if (file_put_contents('soubor.html', $html_start.$_POST['text'].$html_end, LOCK_EX))
{
echo 'data byla vlozena do <a href="soubor.html">soubor.html</a>';

}
else
{
echo 'chyba pri vkladani dat';
}
}
?>
Jdi na index.php a vyplň formulář textem, např. <b>ahoj</b>
nicneveda
Profil *
Ano, to uloží třeba text "auto" jenže tím přepíše celý dokument. Já potřebuji aby se text vložil do určité části dokumentu, viz. moje první otázka...
Tori
Profil
nicneveda:
Tam kde chcete data vložit, si napište nějaký jedinečný zástupný řetězec (třeba tři zavináče). Při zpracování formuláře načtete šablonu souboru (s tím zástupným řetězcem), nahradíte textem z formuláře a uložíte.
nicneveda
Profil *
Problém je že v jazyce PHP se nevyznám, neumím ho... A tak je těžké si něco napsat sám.
Tori
Profil
nicneveda:
Aha, tak už jsem si přečetla celé vlákno. [#4] funguje stejně jako to, co jsem navrhovala.

to uloží třeba text "auto" jenže tím přepíše celý dokument.
A co by to tedy mělo dělat?
1. Opakovaně přepisovat pouze jednu část téhož dokumentu? anebo
2. Po každém odeslání formuláře vytvořit nový dokument?
3. ...?
nicneveda
Profil *
Takhle... Mám dokument:
<html>
<head>
<title>Má první stránka</title>
</head>
 <body>
-nová uložená data- 
-stará uložená data-
-stará uložená data-
-stará uložená data-
-stará uložená data-
</body>
</html>



Takže teoreticky by se to mohlo ukládat vždy na řádek 6...
nicneveda
Profil *
tzn. celý text by se posunul a na řádku 6 by se udělalo volno pro další příspěvek
Tori
Profil
Tak upravená verze [#4]:
Data z formuláře si budete ukládat do souboru data.html. Kostru HTML stránky uložíte jako PHP skript (prostě jen s příponou .php) a obsah souboru data.html do ní vložíte kam budete chtít.

Formulář je stejný jako ve [#4].
Skript zpracuj.php na uložení dat bude vypadat takto:
<?php
if (isset($_POST['text']) && isset($_POST['odeslano'])) {

    if (get_magic_quotes_gpc()) {
        $_POST['text'] = stripslashes($_POST['text']);
    }

    // tady načtete původní obsah souboru, přilepíte před něj data z formuláře a uložíte zpátky.
    $novyObsah = $_POST['text'] . file_get_contents('data.html');
    if (file_put_contents('data.html', $novyObsah, LOCK_EX)) {
        echo 'data byla vlozena do <a href="stranka.php">stranka.php</a>';
    } else {
        echo 'chyba pri vkladani dat';
    }
}
Skript na zobrazení celého dokumentu (stranka.php) je jednoduchý: Předpokládám, že data.html, stranka.php i zpracuj.php jsou ve stejné složce.
<html>
<head>
<title>Má první stránka</title>
</head>
 <body>
 <?php include 'data.html'; ?>
 </body>
</html>
nicneveda
Profil *
Děkuji za výpomoc. Ale na závěr ještě jedna otázka: Jde do formuláře doplnit data o kterých uživatel neví? (nezobrazí se mu) Třeba:
-Uživatel napíše:
Pes je přítel člověka
-A ve skutečnosti se odešle
<b>Uživatel napsal:<b><i>Pes je přítel člověka<i>
Tori
Profil
nicneveda:
Upravte si řádek 9 v [#11] - okolo textu z formuláře budou tagy <i> a před něj přilepíte ještě ten tučný text.
nicneveda
Profil *
Tak... teď asi fakt vypadám jako totální id*ot ale pochopil jsem správně že mám udělat z řádku 9 toto?:
$novyObsah = $_POST[<i>'text'<i>] . file_get_contents('data.html'); -rovnou vyhodí chybu serveru...
ale i když zkusím tohle...
 $novyObsah = $_POST['<i>text<i>'] . file_get_contents('data.html');
tak to nejde :(


druhý kus kódu měl být $novyObsah = $_POST['<i>text<i>'] . file_get_contents('data.html');
nicneveda
Profil *
Pomůže mi jěště někdo?
tatyalien
Profil
$novyObsah = '<b>Uživatel napsal:<b><i>'. $_POST['text'] .'</i>'. file_get_contents('data.html');
nicneveda
Profil *
Díky!

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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