Autor | Zpráva | ||
---|---|---|---|
siky Profil * |
#1 · Zasláno: 29. 4. 2005, 12:40:04
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"> <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 |
#2 · Zasláno: 29. 4. 2005, 13:27:25
siky
nějak se nedaří Čo sa nedarí? Čo to robí? Čo to nerobí? Vypisuje to chybové hlášky? Aké? |
||
siky Profil * |
#3 · Zasláno: 29. 4. 2005, 14:13:03
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"> <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 |
#4 · Zasláno: 29. 4. 2005, 14:28:03
siky
Do <form> pridaj parameter action="nazov-suboru-kde-je-formular.php" |
||
siky Profil * |
#5 · Zasláno: 29. 4. 2005, 14:29:12
myslíš jako název teho souboru, kde je psanej ten formulář?
|
||
siky Profil * |
#6 · Zasláno: 29. 4. 2005, 14:35:20
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 |
#7 · Zasláno: 29. 4. 2005, 14:49:54
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 * |
#8 · Zasláno: 29. 4. 2005, 14:51:28
ok, zkusím to, pokud ten zádrhel uvidíš dej mi vědět. dík
|
||
centi Profil |
#9 · Zasláno: 29. 4. 2005, 15:19:54
No už viem kde je asi pes zakopaný. Niekde na začiatok (kľudne aj pred samotné <html>) vlož toto:
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 * |
#10 · Zasláno: 29. 4. 2005, 22:06:38
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"> <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 * |
#11 · Zasláno: 1. 5. 2005, 18:46:14
o co tady de?vubec netusim takkk pam pala pampa
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0