Autor Zpráva
siky
Profil *
Ahoj lidi,
zkoušim si udělat sám diskuzi. Ale sem začátečník a nějak se nedaří.
Prosím o dobré rady, tady přikládám zdroják:
<html>
<head>

<title>dizkuzní fórum</title>
</head>


<body>
<table width="500" align="center">
<tr><td width="500"><center><font color="red">Diskuzní fórum od <b>BIG3</b></font><br>

<font color="#1e90ff">Pokus</font><br><br>
</center>
<hr color="#00008B"><br>

<table border="0" cellspacing="0" cellpadding="0" align="center">
<form method="get" action="diskuze.php">
<tr><td width=120>Jméno:</td>
<td><input type="text" name="jmeno" size="30">
</td></tr>
<tr><td width=120>E-mail:</td>
<td><input type="text" name="email" size="30">
</td></tr>


<input type="hidden" name="odeslano" value="ano"></td></tr>
<tr><td valign=top width=120 class=povinne>Text zprávy:</td>
<td><textarea cols="29" rows="5" name="popis">
</textarea></td></tr>
<tr><td width=120></td>
<td><center><input type="submit" value="Odeslat">&nbsp;&nbsp;&nbsp;<input type="Reset" value="Vymazat">
</center></td></tr></form></table>

<?
print "odeslano=$odeslano";


if ($odeslano="ano"):


$jmeno=$_GET['jmeno'];
$email=$_GET['email'];
$popis=$_GET['popis'];
$zprava=$_GET['zprava'];


$name = "<font class=jmeno>$jmeno</font><BR>\n";
$e_mail = "<A class=odkaz HREF=mailto:$email>$email</A><BR>\n";
$cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><BR>\n";
$popis2 = NL2BR(HTMLSpecialChars($popis));
$zprava = "<BR><font class=text>$popis2</font><BR><BR><HR color=\"#00008B\"><BR>\n\n";
$write = StripSlashes($name . $e_mail . $www . $cas . $zprava);

if (File_Exists ("book.dat")):
$fp = FOpen ("book.dat", "r");
$data = FRead ($fp, FileSize("book.dat"));
FClose($fp);
endif;

$fp = FOpen ("book.dat", "w");
FWrite ($fp, $write.$data);
FClose ($fp);
endif; // odeslano == ano
?>

<hr color="#00008B"><br>

<?
if (File_Exists ("book.dat")):
$fp = FOpen ("book.dat", "r");
if ($fp == false) print "CHYBA otevreni souboru";
$buffer = fread($fp, filesize("book.dat"));
print $buffer;
FClose($fp);
endif; // File_Exists
?>
</td>
</tr>
</table>
</body>
</html>

díky
centi
Profil
siky
nějak se nedaří

Čo sa nedarí? Čo to robí? Čo to nerobí? Vypisuje to chybové hlášky? Aké?
siky
Profil *
tak se sehnal jinej kód. Tady už tomu trochu rozumim, ale základní funkci to neprovádí. Nevím proč. když vyplnim všechny údaje a odešlu, tak se nic nezobrazí. Jako kdyby to ty údaje nikam neodeslalo. Když ale napíšu něco do teho datového souboru (abych zkusil, jestli ho to čte) tak to přečte. Asi bude třeba jinej příkaz formuláře. Zatim sem tam nechal <form method="post">.
Koukněte se na to a uvidíte. díky :-)
Zdroj. kód:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<LINK href="styl.css" rel="stylesheet" type="text/css">
<title>Kniha návštev - PHP</title>
</head>
<body>
<table width="500" align="center">
<tr><td width="500"><center><font class=nadpis>Kniha návštev</font><br><br>
<font class="male">povinné údaje označeny červeným písmem</font></center>
<hr color="#00008B"><br>

<table border="0" cellspacing="0" cellpadding="0" align="center">
<form method="post">
<tr><td width=120 class=povinne>Jméno:</td>
<td><input type="text" name="jmeno" size="30" value="<?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $jmeno;
endif;
?>"></td></tr>
<tr><td width=120 class=povinne>E-mail:</td>
<td><input type="text" name="email" size="30" value="<?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $email;
endif;
?>"></td></tr>
<tr><td width=120 class=nepovinne>Web (i s http://):</td>
<td><input type="text" name="web" size="30" value="<?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $web;
endif;
?>">
<input type="hidden" name="odeslano" value="ano"></td></tr>
<tr><td valign=top width=120 class=povinne>Text zprávy:</td>
<td><textarea cols="29" rows="5" name="popis"><?
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $popis;
endif;
?></textarea></td></tr>
<tr><td width=120></td>
<td><center><input type="submit" value="Odeslat">&nbsp;&nbsp;&nbsp;<input type="Reset" value="Vymazat"></center></td></tr></form></table>

<?
if ($odeslano=="ano"):
if ($jmeno=="" || $email=="" || $popis==""): //kontrola zadaných udajů, pokud nebyly zadány všechny povinné údaje, do knihy se nic nezapíše
echo "<center><br><font class=male>musíte vyplnit všechny povinné údaje<br></font></center>";
else: //včechny povinné údaje jsou zadány
$name = "<font class=jmeno>$jmeno</font><BR>\n"; //do proměnné "name" uloží Jméno, zformátuje jej pomocí tagu <FONT> a otevře nový řádek
$e_mail = "<A class=odkaz HREF=mailto:$email>$email</A><BR>\n"; //do proměnné "e_mail" uloží Email, zformátuje jej, přidá odkaz typu MAILTO a otevře nový řádek
if ($web!=""): //pokud byl zadán Web, vytvoří proměnnou "www"
$www = "<A class=odkaz HREF=\"$web\">$web</A><BR>\n"; //do proměnné "www" uloží Web, zformátuje jej, přidá odkaz na danou stránku a otevře nový řádek
endif;
$cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><BR>\n"; //do promenne "cas" uloží aktuální datum a čas ve formátu (př. 5. 11. 2000, 13:54:53), zformátuje a načne další řádek
$popis2 = NL2BR(HTMLSpecialChars($popis)); //změna konců řádků na tagy <BR> a ostraní znaky, které by mohly porušit formátování
$zprava = "<BR><font class=text>$popis2</font><BR><BR><HR color=\"#00008B\"><BR>\n\n"; //do proměnné "www" uloží $popis2, zformátuje, přidá čáru, která bude oddělovat příspěvky a otevře nový řádek
$write = StripSlashes($name . $e_mail . $www . $cas . $zprava); //do proměnné "write" uloží všechna data, která se budou zapisovat a odstraní escape sekvence

if (File_Exists ("book.dat")): //existuje soubor book.dat
$fp = FOpen ("book.dat", "r"); //otevře soubor book.dat pro čtení
$data = FRead ($fp, FileSize("book.dat")); //přečte data ze souboru a uloží do proměnné "data" - kvůli tomu aby se zobrazoval poslední příspěvek nahoře
FClose($fp); //zavře book.dat
endif;

$fp = FOpen ("book.dat", "w"); //otevře book.dat pro přepis nebo vytvoření
FWrite ($fp, $write.$data); //zápis do souboru book.dat (nejprve aktuální příspěvek, poté předešlý obsah souboru book.dat)
FClose ($fp); //zavře soubor book.dat
endif;
endif;
?>
<hr color="#00008B"><br>
<?
if (File_Exists ("book.dat")): //existuje soubor book.dat
$fp = FOpen ("book.dat", "r"); //otevře soubor book.dat pro čteni
FPassThru($fp); //vypíše obsah souboru
endif;
?>



</td>
</tr>
</table>
</body>
</html>
centi
Profil
siky
Do <form> pridaj parameter action="nazov-suboru-kde-je-formular.php"
siky
Profil *
myslíš jako název teho souboru, kde je psanej ten formulář?
siky
Profil *
sem to tam napsal a opět nic. Taky sem přemýšlel dát tam něco podobného. Když tam ale napíšu action="formular.php", co to má udělat?sem to tam napsal a opět nic. Taky sem přemýšlel dát tam něco podobného. Když tam ale napíšu action="formular.php", co to má udělat?
centi
Profil
Do atribútu ACTION sa píše názov súboru so skriptom, ktorý spracuje dáta z formulára. Teda u teba ten istý dokument, kde je aj formulár.

Ale skús napríklad pred pokusom o zapísanie do súboru vypísať obsah výslednej premennej $write, možno je tam niekde zádrhel (ktorý teraz nevidím) kvôli ktorému sa celá zapisovacia vetva nevykoná. Ak ti v poriadku vypíše obsah tej premennej, tak bude problém pri zapisovaní, ak ti obsah vôbec nevypíše, bude problém niekde pri overovaní dát.
siky
Profil *
ok, zkusím to, pokud ten zádrhel uvidíš dej mi vědět. dík
centi
Profil
No už viem kde je asi pes zakopaný. Niekde na začiatok (kľudne aj pred samotné <html>) vlož toto:


$odeslano = $_POST['odeslano'];
$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$web = $_POST['web'];
$popis = $_POST['popis'];


Pravdepodobne sú totiž vypnuté tzv. superglobálne premenné (to sú tie, ktoré sa automaticky vytvárajú po odoslaní formulára z jeho dát), musíš ich teda ručne načítať z poľa POST premenných.
siky
Profil *
Už sem na to nakonec přišel. Nechal sem tam tu method="post" bez action a nechal to. Takhle to vypadá:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<LINK href="styl.css" rel="stylesheet" type="text/css">
<title>Kniha návštev - PHP</title>
</head>
<body>
<table width="500" align="center">
<tr><td width="500"><center><font class=nadpis>Kniha návštev</font><br><br>
<font class="male">povinné údaje označeny červeným písmem</font></center>
<hr color="#00008B"><br>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<form method="post">
<tr><td width=120 class=povinne>Jméno:</td>
<td><input type="text" name="jmeno" size="30" value=""></td></tr>
<tr><td width=120 class=povinne>E-mail:</td>
<td><input type="text" name="email" size="30" value=""></td></tr>
<tr><td width=120 class=nepovinne>Web (i s http://):</td>
<td><input type="text" name="web" size="30" value="">
<input type="hidden" name="odeslano" value="ano"></td></tr>
<tr><td valign=top width=120 class=povinne>Text zprávy:</td>
<td><textarea cols="29" rows="5" name="popis"></textarea></td></tr>
<tr><td width=120></td>
<td><center><input type="submit" value="Odeslat">&nbsp;&nbsp;&nbsp;<input type="Reset" value="Vymazat"></center></td></tr></form></table>
if ($jmeno=="" || $email=="" || $popis==""): //pokud nebudou zadány všechny povinné údaje, objeví se formulář znovu (s údaji, které již byly vyplněny)
echo $popis;
endif;
<hr color="#00008B"><br>
<font class=jmeno>steve</font><BR>
<A class=odkaz HREF=mailto:s.sliver@centrum.cz>s.sliver@centrum.cz</A><BR>
<A class=odkaz HREF="http://www.seznam.cz">http://www.seznam.cz</A><BR>
<font class=cas>29. 04. 2005, 18:27:25</font><BR>
<BR><font class=text>další pokus</font><BR><BR><HR color="#00008B"><BR>

<font class=jmeno>honza</font><BR>
<A class=odkaz HREF=mailto:s.sliver@centrum.cz>s.sliver@centrum.cz</A><BR>
<A class=odkaz HREF="www.seznam.cz">www.seznam.cz</A><BR>
<font class=cas>29. 04. 2005, 17:40:27</font><BR>
<BR><font class=text>text<br />
</font><BR><BR><HR color="#00008B"><BR>

<font class=jmeno>afd</font><BR>
<A class=odkaz HREF=mailto:safd>safd</A><BR>
<A class=odkaz HREF="adf">adf</A><BR>
<font class=cas>29. 04. 2005, 17:01:15</font><BR>
<BR><font class=text>afaf</font><BR><BR><HR color="#00008B"><BR>

if ($odeslano=="ano"): //formulář byl odeslán
if ($jmeno=="" || $email=="" || $popis==""): //kontrola zadaných údajů, pokud nebyly zadány všechny povinné údaje, do knihy se nic nezapíše
echo "<center><br><font class=male>musíte vyplnit všechny povinné údaje<br><br></font></center>";
else: //všechny povinné údaje jsou zadány
$name = "<font class=jmeno>$jmeno</font><BR>\n"; //do proměnné "name" uloží Jméno, zformátuje jej pomocí tagu <FONT> a otevře nový řádek
$e_mail = "<A class=odkaz HREF=mailto:$email>$email</A><BR>\n"; //do proměnné "e_mail" uloží Email, zformátuje jej, přidá odkaz typu MAILTO a otevře nový řádek
if ($web!=""): //pokud byl zadán Web, vytvoří proměnnou "www"
$www = "<A class=odkaz HREF=\"$web\">$web</A><BR>\n"; //do proměnné "www" uloží Web, zformátuje jej, přidá odkaz na danou stránku a otevře nový řádek
endif;
$cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><BR>\n"; //do proměnné "cas" uloží aktuální datum a čas ve formátu (př. 5. 11. 2000, 13:54:53), zformátuje a načne další řádek
$popis2 = NL2BR(HTMLSpecialChars($popis)); //změna konců řádků na tagy <BR> a odstraní znaky, které by mohly porušit formátování
$zprava = "<BR><font class=text>$popis2</font><BR><BR><HR color=\"#00008B\"><BR>\n\n"; //do proměnné "www" uloží $popis2, zformátuje, přidá čáru, která bude oddělovat příspěvky a otevře nový řádek
$write = StripSlashes($name . $e_mail . $www . $cas . $zprava); //do proměnné "write" uloží všechna data, která se budou zapisovat a odstraní escape sekvence
if (File_Exists ("book.dat")): //existuje soubor book.dat
$fp = FOpen ("book.dat", "r"); //otevře soubor book.dat pro čtení
$data = FRead ($fp, FileSize("book.dat")); //přečte data ze souboru a uloží do proměnné "data" - kvůli tomu aby se zobrazoval poslední příspěvek nahoře
FClose($fp); //zavře book.dat
endif;

$fp = FOpen ("book.dat", "w"); //otevře book.dat pro přepis nebo vytvoření
FWrite ($fp, $write.$data); //zápis do souboru book.dat (nejprve aktuální příspěvek, poté předešlý obsah souboru book.dat)
FClose ($fp); //zavře soubor book.dat
endif;
endif;
<hr color="#00008B"><br>
<font class=jmeno>steve</font><BR>
<A class=odkaz HREF=mailto:s.sliver@centrum.cz>s.sliver@centrum.cz</A><BR>
<A class=odkaz HREF="http://www.seznam.cz">http://www.seznam.cz</A><BR>
<font class=cas>29. 04. 2005, 18:27:25</font><BR>
<BR><font class=text>další pokus</font><BR><BR><HR color="#00008B"><BR>

<font class=jmeno>honza</font><BR>
<A class=odkaz HREF=mailto:s.sliver@centrum.cz>s.sliver@centrum.cz</A><BR>
<A class=odkaz HREF="www.seznam.cz">www.seznam.cz</A><BR>
<font class=cas>29. 04. 2005, 17:40:27</font><BR>
<BR><font class=text>text<br />
</font><BR><BR><HR color="#00008B"><BR>

<font class=jmeno>afd</font><BR>
<A class=odkaz HREF=mailto:safd>safd</A><BR>
<A class=odkaz HREF="adf">adf</A><BR>
<font class=cas>29. 04. 2005, 17:01:15</font><BR>
<BR><font class=text>afaf</font><BR><BR><HR color="#00008B"><BR>



</td>
</tr>
</table>
</body>
</html>


díky za rady
atik
Profil *
o co tady de?vubec netusim takkk pam pala pampa
Toto téma je uzamčeno. Odpověď nelze zaslat.

0