Autor | Zpráva | ||
---|---|---|---|
JohnGog Profil |
#1 · Zasláno: 17. 3. 2010, 19:49:40
Dobrý den,
funguje GB, ale nefunguje to aby nový příspevěk byl nahoře... (když se budu chtít dívat na nejnovější příspěvek, tak abych nemusel rollovat až dolu, chápete?), toto chci v kódu nějak ošetřit... a další dotaz, že u políčka EMAIL smí bejt za tečkou jen 4 znaky ... viz abyste max mohl napsat: jakpsatweb@seznam.info (proste za tečkou jen max 4 znaky....); neřešit v MYSQL [/pre]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <br> <h1>Guestbook:</h1> <form action="guestbook.php" method="POST"> Vaše jméno: <input type="text" name="jmeno"> <br> Váš email: <input type="text" name="email"> <br> Vzkaz pro nás: <br> <textarea name="zprava" cols="50" rows="8"></textarea> <br> <input type="submit" value="odeslat" name="odeslat" ><br> Za sedmero ****** : <input type="text" name="nahoda"> <br> <br> </form> <?php $nahodax = $_POST['nahoda']; $random = "horami"; if($random == $nahodax) { if(!empty($_POST['odeslat'])) { $datum = date("l-m-Y",Time()); $text = '<b>'.'Čas: '.'</b>'.$datum.'<br>'.'<b>'.'Jméno: '.'</b>'.$_POST['jmeno'].'<br>'.'<b>'.'Email: '.'</b>'.$_POST['email'].'<br>'.'<b>'.'Zpráva: '.'</b>'.$_POST['zprava'].'<br>'.'<br>'.'<hr>'; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); $soubor = fopen("soubor.txt", "r"); $zaloha = fread($soubor, 10000); echo($zaloha); fclose($soubor); } } ?> </body> </html>[pre] |
||
AM_ Profil |
#2 · Zasláno: 17. 3. 2010, 20:09:17
JohnGog:
„a další dotaz, že u políčka EMAIL smí bejt za tečkou jen 4 znaky“ Má to nějaký rozumný důvod? Není žádným pravidlem, že top-level doména nemůže mít více znaků (mám pocit, že jsem o nějakou s více i někde zavadil). „funguje GB, ale nefunguje to aby nový příspevěk byl nahoře..“ Jasně, protože příspěvky přidáváš na konec souboru. Pokud se chceš vyhnout krkolomnému parsování soubor.txt a změně pořadí, udělal bych to prostě tak, že nové příspěvky se budou ukládat na začátek, a nikoli na konec. Navíc, štípněte mě, jestli se mi to zdá, ale ty vypisuješ příspěvky až po tom, co uživatel odešle svůj příspěvek (je to v podmínce !empty($_POST['odeslat']) )? a jen prvních 10 000 bytů? To je docela divné, ne? Jinak se to dá řešit takhle: $soubor = fopen("soubor.txt", "r+"); $original = fread($soubor, filesize('soubor.txt')); fseek($soubor, 0); ftruncate($soubor, 0); fwrite($soubor, $text); fwrite($soubor, $original); fclose($soubor); |
||
JohnGog Profil |
#3 · Zasláno: 17. 3. 2010, 20:20:17
1.Nemá to rozumný důvod, je to zadání od kantorky... tak bych potřeboval řešení... kód upravit tak, aby tam bylanějaká podmínka, že za tou tečkou můžou být pouze 4 znaky
"Jasně, protože příspěvky přidáváš na konec souboru. Pokud se chceš vyhnout krkolomnému parsování soubor.txt a změně pořadí, udělal bych to prostě tak, že nové příspěvky se budou ukládat na začátek, a nikoli na konec." Jak to napíšu? (v php začínam...) moc děkuji... |
||
AM_ Profil |
#4 · Zasláno: 17. 3. 2010, 20:38:25
JohnGog:
„Jak to napíšu? (v php začínam...)“ to je ten kus scriptu, který jsem ti napsal - přečte celý soubor, smaže ho, zapíše na začátek nový příspěvek, a za něj původní obsah. Je to z toho kódu i docela vidět ;) „1.Nemá to rozumný důvod, je to zadání od kantorky... tak bych potřeboval řešení..." Tohle by mělo jít: if (preg_match('~\\.[^\\.]{0,4}$~', $email)){ echo 'ok'; } |
||
panther Profil |
#5 · Zasláno: 17. 3. 2010, 20:39:44
AM:
„Tohle by mělo jít:“ to by sice mělo jít, ale jestli jsem dobře pochopil, že se jedná o výuku základů PHP, hned tam na kantorku vytáhnout takovýhle regulár? No nevím :-) |
||
AM_ Profil |
#6 · Zasláno: 17. 3. 2010, 20:41:37 · Upravil/a: AM_
panther:
„to by sice mělo jít, ale jestli jsem dobře pochopil, že se jedná o výuku základů PHP, hned tam na kantorku vytáhnout takovýhle regulár? No nevím :-)“ Pravda, přes strrpos() by to šlo jednoduše. |
||
JohnGog Profil |
#7 · Zasláno: 17. 3. 2010, 21:39:45
Po úpravě kód vypadá nasledovně s chybou: Warning: fread() [function.fread]: Length parameter must be greater than 0 in C:\xampp\htdocs\Guestbook\guestbook.php on line 35
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <br> <h1>Guestbook:</h1> <form action="guestbook.php" method="POST"> Vaše jméno: <input type="text" name="jmeno"> <br> Váš email: <input type="text" name="email"> <br> Vzkaz pro nás: <br> <textarea name="zprava" cols="50" rows="8"></textarea> <br> <input type="submit" value="odeslat" name="odeslat" ><br> Byl jednou ..... : <input type="text" name="nahoda"> <br> <br> </form> <?php $nahodax = $_POST['nahoda']; $random = "jeden"; if($random == $nahodax) { if(!empty($_POST['odeslat'])) { $datum = date("l-m-Y",Time()); $email = $_POST['email']; $text = '<b>'.'Čas: '.'</b>'.$datum.'<br>'.'<b>'.'Jméno: '.'</b>'.$_POST['jmeno'].'<br>'.'<b>'.'Email: '.'</b>'.$_POST['email'].'<br>'.'<b>'.'Zpráva: '.'</b>'.$_POST['zprava'].'<br>'.'<br>'.'<hr>'; if (preg_match('~\\.[^\\.]{0,4}$~', $email)){ $soubor = fopen("soubor.txt", "r+"); $original = fread($soubor, filesize('soubor.txt')); fseek($soubor, 0); ftruncate($soubor, 0); fwrite($soubor, $text); fwrite($soubor, $original); fclose($soubor); } else {echo("ŠPATNÁ PŘÍPONA");} } } else {echo("ŠPATNÁ ODPOVEĎ");} ?> </body> </html> |
||
JohnGog Profil |
#8 · Zasláno: 17. 3. 2010, 22:32:29
už mi vše funguje (prozatim dokud nedostanu nové zadání), moc děkuju za pomoc.
|
||
Časová prodleva: 14 let
|
0