Autor Zpráva
Ondřej Strnad
Profil
Dobrý den!
Viděl jsem tu dříve nějaké téma, které se týkalo toho, jak mám z formuláře uložit nějaký text do .txt. Už ale nevím kde to bylo. I hledat jsem zkoušel. Můžete prosím napsat ten odkaz, anebo přímo napsat jak se to dělá?
Děkuji, Ondřej Strnad.
Venca V
Profil
Co zkusit google ?
Ondřej Strnad
Profil
Nějak to nejde. Dal jsem do index.php tam tento kód:

<form>
<input type="text" name="soubor">
</form>


A do text.php toto:

<?php
$soubor = fopen("./text.txt", "w"); 
fwrite($soubor, "Sem se píše obsah"); 
fclose($soubor);
?>


Pak jsem to dal na server a vzniklo z toho to, že se mi ten text ve formuláři přesune do adresy prohlížeče. A já chtěl, aby se to uložilo do text.txt.
Venca V
Profil
A já chtěl, aby se to uložilo do text.txt.
Tak musíš tu hodnotu z formuláře nějak předat:-)

<?
if($_GET["odeslano"])
{
$soubor = fopen("./text.txt", "w"); 
fwrite($soubor, $_GET["soubor"]); 
fclose($soubor);
print "Soubor změněn.";
}
else
{?>
<form action="<?print $_SERVER["PHP_SELF"]?>">
<input type="text" name="soubor">
<input type="hidden" name="odeslano" value="1">
<input type="submit">
</form>
<?}?>
Ondřej Strnad
Profil
Bohužel Vás zase musím zklamat. Píše mi to hned tři chyby:


Warning: fopen(./text.txt) [function.fopen]: failed to open stream: Permission denied in /home/free/ic.cz/p/phpstr/root/www/zk3/index.php on line 4

Warning: fwrite(): supplied argument is not a valid stream resource in /home/free/ic.cz/p/phpstr/root/www/zk3/index.php on line 5

Warning: fclose(): supplied argument is not a valid stream resource in /home/free/ic.cz/p/phpstr/root/www/zk3/index.php on line 6


Omlouvám se, ale jsem s tím začátečník.
Venca V
Profil
Musíš mít u toho souboru text.txt nastavená práva pro zápis, dělá se to buď php funkcí chmod() nebo v nějakém ftp klietovi příkazem změnit atributy. Např v Total Commanderu to je Soubory>Změna atributů...
DJ Miky
Profil
Musíš nastavit souboru práva pro zápis (v FTP klientovi hledej Attributes, Chmod, Permissions nebo tak něco), třeba na 0666 (tzn. povolit Write /zápis/ u skupiny Public).
Ondřej Strnad
Profil
Díky moc! Už to jde!
bbb
Profil *
a co kdyz mam tech formularu na strance vice? tak kdyz do nej neco napisu automaticky se ten druhy smaze nebo podle nastaveni prepise a to nechci... resim v podstate profily aniz bych pouzil databazi...

Zde mam kod:

<?php
$soubor = fopen("index_soubory/hraci/lib/jmeno.txt", "r");
$prvni=fgets($soubor); //prvni radek
fclose($soubor);
echo "Jméno: $prvni <br>";
?>
<?php
$soubor1 = fopen("index_soubory/hraci/lib/prijmeni.txt", "r");
$druhy=fgets($soubor1); //prvni radek
fclose($soubor1);
echo "Příjmení: $druhy <br>";
?>



<!----------------------------------------------------------------->







<?
if($_GET["odeslano"])
{
$soubor = fopen("index_soubory/hraci/lib/jmeno.txt", "w"); 
fwrite($soubor, $_GET["soubor"]); 
fclose($soubor);
print "Údaj změněn. <a href='http://www.cehlcz.ic.cz/lib.php'>Pokračovat</a>";
}
else
{?>
<form action="<?print $_SERVER["PHP_SELF"]?>">
Jméno:<input type="text" name="soubor">
<input type="hidden" name="odeslano" value="1">
<input type="submit" value="Změnit">
</form>
<?}?>



<?
if($_GET["odeslano"])
{
$soubor1 = fopen("index_soubory/hraci/lib/prijmeni.txt", "w"); 
fwrite($soubor1, $_GET["soubor1"]); 
fclose($soubor1);
print "Údaj změněn.";
}
else
{?>
<form action="<?print $_SERVER["PHP_SELF"]?>">
Příjmení:<input type="text" name="soubor1">
<input type="hidden" name="odeslano" value="2">
<input type="submit" value="Změnit">
</form>
<?}?>


Zkousel sem prejmenovat promenou ale to nak nepomaha... :-( nevite nekdo co stim kdyz tech formularu je tam vic? nak to zakazat nebo proste ukoncit... co prikaz die?? nepomohl by tam jako umrtveni kodu aby to nak nepokracovalo?
Diky za veskere rady
AM_
Profil
Musíš to nacpat do jednoho formuláře, dva formuláře najednou na stránce nedělají dobrotu. Který se má uložit můžeš kontrolovat podle názvu submitu (např <input type="submit" name="ulozprofil" value="Uložit"> ti odešle GET s klíčem ulozprofil, takže odeslání pomocí tohoto tlačítka testuješ pomocí isset($_GET['ulozprofil']);
bbb
Profil *
AM_
ty sem asi nemuzes napsat jen tak zdrojak jak by to melo vypadat vid? ja sem tak trochu na php amater... snazim se neco naucit ale nak to nestiham...skola je skola a zaroven se snazim neco naucit jeste mimo... za jakejkoliv zdrojak bych byl velmi rad... aktualne sem vycerpan a nedokazu si to predstavit... resit pres mysql databazi je jeste pro me velmi slozite a tak chci vyuzit toto...
bbb
Profil *
tak uz to mam... teoreticky to neni uplne slouceny... stim isset mi to nefunguje a na konci nesmi byt strednik.. hazelo mi to chybu... takhle je kod kdyby se chtel nekdo inspirovat jak na to... treba nekdo resi podobnou vec :-)

<?
if ($_GET['jmeno'])
{
$soubor = fopen("index_soubory/hraci/lib/jmeno.txt", "w");
fwrite($soubor, $_GET["soubor"]);
fclose($soubor);
print "Údaj změněn. <a href='http://www.cehlcz.ic.cz/lib.php'>Pokračovat</a>";
}
else
{?>
<form action="<?print $_SERVER["PHP_SELF"]?>">
Jméno:<input type="text" name="soubor">
<input type="hidden" name="jmeno" value="1">
<input type="submit" name="jmeno" value="Změnit">
</form>
<?}?>


<?
if GET['prijmeni'])
{
$soubor1 = fopen("index_soubory/hraci/lib/prijmeni.txt", "w+");
fwrite($soubor1, $_GET["soubor1"]);
fclose($soubor1);
print "Údaj změněn.";
}
else
{?>
<form action="<?print $_SERVER1["PHP_SELF"]?>">
Příjmení:<input type="text" name="soubor1">
<input type="hidden" name="prijmeni" value="2">
<input type="submit" name="prijmeni" value="Změnit">
</form>
<?}?>


co se tyka tech formularu ktery to ctou tak ty zustavaji stejne... meni se jen to co sem dal kurzivou a tucne
AM_
Profil
<?
ne.
<?php
je správně.

Ten kód je trochu divný, to umožňuje měnit jméno jen jednoho hráče? že tam je jméno souboru napevno...

<form action="<?print $_SERVER1["PHP_SELF"]?>">
SERVER místo SERVER1

Proč máš u jednoho fopen mód "w" a u druhého "w+"?

A stejně jsi imho tebou popisovaný problém nevyřešil, vždyť stejně se ti při každém odeslání ten formulář resetuje, ne?
bbb
Profil *
vyresil... kazdej uzivatel ma svuj profil a funguje to bezvadne... nic se neprepisuje

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0