Autor | Zpráva | ||
---|---|---|---|
Timefine Profil * |
#1 · Zasláno: 11. 5. 2012, 11:35:44
Ahoj, potřebuji trochu pomoc s opravou scriptu. Hodilo by se mi kdyby jste mě vždy odkázali na stránku kde je ta část vysvětlena (aby jsem pořádně pochopil jak se s tím narábí)
Upozorňuju že jsem uplný začátečník Děkuju :) <?php extract($_POST); if (isset($bod)) { if (File_Exists ("stats.txt")): $fp = FOpen ("stats.txt", "r"); $stats = Explode ("#", FRead ($fp, filesize("stats.txt"))); FClose ($fp); else: for ($i = 1; $i <= 5; $i++) $stats[$i] = 0; endif; } if ($stats[$0] == 1){?> <input name="blah" type="radio" value="Y" checked="checked"> Yes <input name="blah" type="radio" value="N"> No <?php } else {?> <input name="blah" type="radio" value="Y"> Yes <input name="blah" type="radio" value="N" checked="checked"> No <?php }?> Chybová hláíška která na mě skáče je :Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in C:\wamp\www\vyber.php on line 13 |
||
ShiraNai7 Profil |
if ($stats[$0] == 1){?> $0 je nesmysl, nemá tam být jen 0? http://www.php.net/manual/en/language.variables.basics.php |
||
Timefine Profil * |
#3 · Zasláno: 11. 5. 2012, 12:01:19
Ano, děkuji :) Jejda že mě to z té chybové hlášky nenapadlo :)
|
||
Timefine Profil * |
#4 · Zasláno: 11. 5. 2012, 13:24:12
Tak teď jsem se v tom ztratil trochu víc :)
Potřebuji aby po kliknutí na tlačítko Beru byla stránka přesměrována na hlasuj.php kde se zapíše hlas do souboru. :) Akorát nemám představu jak na to. Něco jsem zkusil ale není to funkční. <?php if ($action == "send") { header("Location: hlasuj.php?volba=[$znamka]"); } { if (File_Exists ("stats.txt")): // jestliže existuje soubor se statistikou $fp = FOpen ("stats.txt", "r"); // otevřeme ho $stats = Explode ("#", FRead ($fp, filesize("stats.txt"))); // načteme obsah souboru do pole, jednotlivé části řetězce oddělené znakem # přijdou do jednotlivých proměnných FClose ($fp); else: for ($i = 1; $i <= 5; $i++) $stats[$i] = 0; // pokud soubor neexistuje, dáme do všech šesti proměnných nuly endif; //místo složených závorek byla použita dvojtečka, musí být endif } if ($stats[0] == 1){?> Dar je již rezervován! <br> <?php } else {?> <input name="dar" type="radio" value="1"> Bla bal <?php } if ($stats[1] == 1){?> Dar je již rezervován! <br> <?php } else {?> <input name="dar" type="radio" value="2"> Bla bal<br> <?php } if ($stats[2] == 1){?> Dar je již rezervován! <br> <?php } else {?> <input name="dar" type="radio" value="3"> Bla bal<br> <?php } if ($stats[3] == 1){?> Dar je již rezervován! <br> <?php } else {?> <input name="dar" type="radio" value="4"> Bla bal <br> <?php }?> <input type="hidden" name="action" value="send"><br> <input type="submit" value="Beru"> A tady je část která zapisuje do souboru <?php //Získá z URL adresy $id=$_GET["volba"]; //Někdo se pokouší hacknout skript a provést nepřípustnou volbu //Načtení dat $soubor=fopen("stats.txt", "r"); //otevře soubor pro čtení $data=fread($soubor, filesize("anketa.txt")); //načte obsah celého souboru do proměnné data fclose($soubor); //uzavře soubor $hlas = explode("#",$data); //Navýší hlasy $hlas[$id]=$hlas[$id]+1; $fp = FOpen ("stats.txt", "w"); // uložíme aktuální statistiky FWrite ($fp, Implode ($hlas, "#")); FClose ($fp); //Pošle hlavičku pro přesměrování na původní stránku s anketou header("Location: anketa.php"); ?> |
||
Timefine Profil * |
#5 · Zasláno: 11. 5. 2012, 14:52:31
Prosím o pomoc :( Vůbec to nechápu, nedaří se mi odeslat proměnné ani správný zápis do souboru.
|
||
nocturnal-w Profil * |
#6 · Zasláno: 11. 5. 2012, 15:33:07 · Upravil/a: nocturnal-w
Ahoj,sice to není co nejpíše požaduješ protože jsem tě zcela nepochopil co vše chceš aby skript provedl:
<html> <head> <title>Hlasuj</title> </head> <body> <form name="dary" method="POST" action=""> <input type="radio" value="1" name="dar"/> Dar 1 </br> <input type="radio" value="2" name="dar"/> Dar 2 </br> <input type="radio" value="3" name="dar"/> Dar 3 </br> <input type="radio" value="4" name="dar"/> Dar 4 </br> <input name="odeslat" type="submit" value="Hlasuj" /> </form> </body> </html> <?php $zjisti = fopen ("stats.txt","r"); $zjisti_r = fread($zjisti, 1); fclose($zjisti); if ($_POST['dar'] != 0) { if ($_POST['dar'] == "1" AND ($zjisti_r == "1")) { echo "dar 1 je již zabrán."; } else if ($_POST['dar'] == "2" AND ($zjisti_r == "2")) { echo "dar 2 je již zabrán."; } else { $dar = $_POST['dar']; $soubor = fopen ("stats.txt","w"); fwrite ($soubor,$dar); fclose($soubor); //vytáhne data $zsoubor2 = fopen ("anketa.txt","r"); //vytáhne 1 řádek $celkem = fread($zsoubor2, 1); fclose($zsoubor2); //navýší hlas $soubor2 = fopen ("anketa.txt","w"); fwrite ($soubor2,$celkem+1); fclose($soubor2); echo "Hlas byl zapsán.Celkem již hlasovalo ".$celkem.""; } } ?> Pokud někdo dá hlas tak se hodnota hlasu zapíše do souboru stats.txt a dokud nikdo nebude hlasovat znova bude hlas zabrán a hlas se započítá do anketa.txt. Pokud by jsi chtěl dary mít zabrané navždy vytvořil bych si spíše nějakou tabulku v databázi záleží na co to chceš používat. kecám //vytáhne 1 řádek $celkem = fread($zsoubor2, 1); fclose($zsoubor2); //počet znaků $celkem = fread($zsoubor2, 10); fclose($zsoubor2); |
||
Časová prodleva: 4 dny
|
|||
Timefine Profil * |
#7 · Zasláno: 15. 5. 2012, 13:21:57
Tak jsem to nějak vyřešil podle svých představ :) Je tam ale pár bugů se kterými potřebuji radu.
První jsou tyto upozornění: Notice: Undefined index: dar in C:\wamp\www\vyber.php on line 12 Call Stack # Time Memory Function Location 1 0.0007 693712 {main}( ) ..\vyber.php:0 ( ! ) Notice: Undefined index: in C:\wamp\www\vyber.php on line 18 Call Stack # Time Memory Function Location 1 0.0007 693712 {main}( ) ..\vyber.php:0 kod je tady :) případně mě prosím upozorněte na problémy nebo jak to řešit elegantněji <?php if (File_Exists ("stats.txt")): $fp = FOpen ("stats.txt", "r"); $stats = Explode ("#", FRead ($fp, filesize("stats.txt"))); FClose ($fp); else: for ($i = 1; $i <= 5; $i++) $stats[$i] = 0; endif; $id=$_GET["dar"]; $soubor=fopen("stats.txt", "r"); $data=fread($soubor, filesize("stats.txt")); fclose($soubor); $hlas = explode("#",$data); $hlas[$id]=$hlas[$id]+1; $fp = FOpen ("stats.txt", "w"); FWrite ($fp, Implode ($hlas, "#")); FClose ($fp); ?> <form name="dary" method="POST" action=""> <?php if ($stats[1] == 1){ ?> Dar je již rezervován! <br> <?php } else { ?> <input name="dar" type="radio" value="1"> Bla bal<br> <?php } if ($stats[2] == 1){ ?> Dar je již rezervován! <br> <?php } else { ?> <input name="dar" type="radio" value="2"> Bla bal<br> <?php } if ($stats[3] == 1){ ?> Dar je již rezervován! <br> <?php } else { ?> <input name="dar" type="radio" value="3"> Bla bal<br> <?php } if ($stats[4] == 1){ ?> Dar je již rezervován! <br> <?php } else { ?> <input name="dar" type="radio" value="4"> Bla bal<br> <?php } ?> <INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Daruj"> </form> |
||
Časová prodleva: 12 let
|
0