Autor Zpráva
pavlos123
Profil *
Ahoj...
Našel jsem si PHP kód na zápis do souboru a teď bych ho potřeboval s vaší pomocí trochu upravit.
Vše mi funguje jak má -> do souboru komentáře se zapíše text, který zadám do formuláře.

Jenomže já bych ten text v komentare.php potřeboval dostat na místo kde jsou proměnné.
Poradíte mi prosím?

index.php
<?php
if (isset($_POST["submit"]))
{
$name_coment = htmlspecialchars($_POST["name_coment"]);
$coment = nl2br(htmlspecialchars($_POST["coment"]));
if ($name_coment != FALSE && $coment != FALSE)
{
file_put_contents("komentare.php", $name_coment."\n".$coment."\n".file_get_contents("komentare.php"));
echo "<p>Komentář byl přidán.</p>";
}
else
{
echo "<p>Nevyplnili jste jméno nebo text komentáře.</p>";
}
}
?>
<h1>Formulář</h1>
<form action="index.php" method="post">
Jméno:
<br>
<input type="text" name="name_coment" size="30">
<br>
Komentář:
<br>
<textarea name="coment" rows="10" cols="50"></textarea>
<br>
<input type="submit" name="submit" value="Odeslat">
</form>


komentare.php
<?php 
echo 
"Tu chci jméno:" .$name_coment. "<br> Tu chci komentář:" .$coment ;
?>
unlucky
Profil
do souboru nedelej. To se delalo kdysi tak pred 8-9 lety. Tehdy jsem mel podobny a behem nepozornosti se mi vymazal cely soubor :D
(das poslat/odeslat komentar a das rychle STOP na prohlizeci)

ale jestli chces, tak ti poslu svuj osetreny skript, jen co ho najdu
Chro
Profil
pavlos123:
Poznávám svůj historický kód z dob, kdy se mé znalosti PHP daly ohodnotit známkou 4--.
Opravdu je lepší ukládat data do databáze, ale nebudu ti to rozmlouvat. Předpokládám, že jsi začátečník a oťukáváš si práci se soubory.
Takže. Soubor komentare.php slouží jen jako úložiště dat, náhrada databáze. Chceš-li vypsat na stránku obsah v něm uložený, použij např. někde v index.php konstrukci
if (file_exists("komentare.php"))
{
readfile("komentare.php");
}

Vkládat případné HTML tagy musíš už při ukládání obsahu z formuláře, to znamená v index.php uvnitř funkce file_put_contents, příklad:
file_put_contents("komentare.php", "<b>".$name_coment."</b>\n<p>".$coment."</p>\n<hr>\n".file_get_contents("komentare.php"));
pavlos123
Profil *
Chro:
Opravdu je lepší ukládat data do databáze

Klidně bych to s tou databází vyzkoušel, no zkusím najít nějaký příklad na kterém bych to pochopil.

Nebo kdyby byl někdo té ochoty a napsal mi tu co v databázi vytvořit a jaký php kód použít. (jen na pochopení...)
lordfrikk
Profil
Klidně mohu doporučit použít SQLite, což je databáze, která se ukládá do souboru.
pavlos123
Profil *
No tak nějak pokračuju bez té databáze. To vyzkouším později. :-)

Už mi to funguje jen bych potřeboval vědět jestli by to šlo upravit tak, aby se před uložením textu do komentare.php vymazalo předchozí uložení
Chro
Profil
Jasně že šlo. Předtím než PHP vykoná nějakou funkci, podívá se, zda v ní nemá další funkci nebo funkce, které je třeba vykonat dříve. Podívej se na funkci file_put_contents. Co vidíš uvnitř ní? Funkci file_get_contents. Ta zajišťuje načtení původního obsahu souboru. Tečka před ní ho spojí s obsahem z formuláře. Protože už uvnitř není jiná funkce, PHP vykoná funkci file_put_contents, tzn. uloží spojený obsah z formuláře a souboru do toho samého souboru. Co tedy uděláš? :-)
TomasJ
Profil
pavlos123:
Teď nevím jestli máš na mysli umazat celý obsah a komentář vložit do prázdného souboru, nebo jestli chceš smazat jen poslední vložený komentář...
pavlos123
Profil *
Tak už jsem si trochu nastudoval Mysql ...
Jen nevím jakou tabulku vytvořit a jak by měl vypad PHP kód. Zkusím ještě dál hledat nějaké příklady :-)

Kdyby měl někdo nějaký tip budu vděčný. Díky
lordfrikk
Profil
pavlos123:
Jen nevím jakou tabulku vytvořit

Logicky: co potřebuješ uložit? Jméno a text komentáře. Navíc každý záznam musí mít jednoznačný identifikátor (pak lze rozlišit dva záznamy, které byly poslány stejným uživatelem a se stejným obsahem - otázka, zda-li takové / duplicitní / budeš chtít také ukládat). Tabulku (a další práci s databázemi mimo PHP) doporučuji provádět v nějakém nástroji k tomu určeném. Pro MySQL je to nejznámější phpMyAdmin, ten je ale pro základní potřeby dost složitý. Proto bych spíše doporučil dokonalý Adminer od Jakuba Vrány viz http://www.adminer.org/. Tam se přihlásíš a vytvoříš si tabulku. Struktura může vypadat například takto:

CREATE TABLE "komentare" (
  "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
  "name" text(255) NOT NULL,
  "text" text NOT NULL
)


(příklad je pro SQLite)

Jak lze vidět, id je celé číslo (integer, navíc je jedinečné / primary key / a automaticky se bude při vkládání záznamu zvyšovat o jedno / auto increment /), name a text jsou sloupce typu text přimčemž name je navíc omezeno na 255 znaků (pochybuji, že někdo potřebuje více prostoru pro jméno). Co se týče samotné operace v PHP, je třeba jednak znát názvy funkcí a pak samozřejmě samotné SQL. Doporučuji tento seriál na Linuxzone. Já osobně se naučil SQL (základy) z knihy o PHP a MySQL, což je taky možnost.

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