jareks
17.03.2004, 21:56:22
Witam.
Napisalem formularz, z ktorego dane wysylane sa do bazy danych. Na jednej stronie html jest formularz (method="get") i wyniki z przed glosowania pobrane z bazy. Po wyslaniu danych formularzem, wyskakuje mi nowe okienko (action=akcja.php).
Chcialbym zrobic to inaczej. Chcialbym by po wcisnieciu "submit" cala akcja dziala sie na tej samej stronie na ktorej jest formularz (co mam wpisac w action?), z wyswietleniem wynikow (zaktualizowanych) po glosowaniu, jakas informacja typu "Oddales glos na x, dziekujemy". Jak mam to zrobic?
Z gory dziekuje.
lucek
17.03.2004, 22:05:14
O to kod, w ktorym w jednym pliku masz i formularz i skrypt wykonujacy formularz, a takze komunikat.
[php:1:1a3e204ba1]<?php
<?php
print'<form action="'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'" method="post" >';
?>
<INPUT size=5 name="ile" VALUE="">
............................
dalsze pola formularza
<INPUT TYPE="Submit" VALUE="Wyslij" name="wstaw>
<INPUT TYPE="RESET" VALUE="Wyczy¶ć">
</form>
<?
if (isset($wstaw))
{
$pyt = "INSERT INTO tablea VALUES (0, '$2pole', '$3pole')";
$wykonaj = @mysql_query($pyt) or die ('Wyst±pił bł±d: '.mysql_error() );
}
echo"<b>Wpisy zostały dodane !!!";
echo"<head><meta http-equiv="refresh" content="1;url=?go=index.php"></head>";
}
?>[/php:1:1a3e204ba1]
jareks
18.03.2004, 00:08:06
Dzięki serdeczne - dokładnie o to mi chodziło
Skoro uzyskałem pomoc raz, pójdę za ciosem...
Mianowicie, chciałem zablokować powtórne głosowanie w tej sondzie z tego samego komputera. Podejrzewam, że chodzi tu o "ciasteczka", ale szczerze mówiąc gdybym sam miał dojść do tego jak to zrobić, pewnie zejdzie mi do świąt. Co powinienem dopisać? Proszę o pomoc.
Z góry dziękuję.
jareks
18.03.2004, 00:34:58
W zasadzie to mam jeszcze jedno pytanie.
Zastosowanie
[php:1:1763697fd9]<?php
echo"<head><meta http-equiv="refresh" content="1;url=?go=index.php"></head>";
?>[/php:1:1763697fd9]
powoduje, że komunikat "podziękowania za oddanie głosu" znika
Czy da się to jakoś poprawić?
lucek
18.03.2004, 08:15:28
Jak chcesz aby komunikat zostawal a nie znikal to usun powyzsza linijke.
Zas jesli chcesz aby komunikat byl pokazywany np. przez 3 sekundy to pwisz tak:
Kod
content="3
Jesli chodzi o ciastka to zrob na poczatku skryptu ktory zapisuje dane do bazy
[php:1:d74cac11fd]
<?php
if(empty($_COOKIE['sonda']))
{
setcookie("sonda","1",time()+3600);
....................moj kod wrzucajacy dane do bazy
}
else
{
echo('oddałeś już swój głos');
}
?>[/php:1:d74cac11fd]
zalew
18.03.2004, 10:06:51
[php:1:b30b3c2b02]<?php
<form action="'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'"
method="post" >';
?>[/php:1:b30b3c2b02]
prosciej
[xml:1:b30b3c2b02]<form method="POST">[/xml:1:b30b3c2b02]
jareks
18.03.2004, 14:22:11
Kolejny problem.
Sonda ktora pisze, bedzie "wrzucona" w serwisie postawionym na nuke'u. Po zastosowaniu wskazowwk co do ciastek, wyskoczyl mi taki blad:
Warning: Cannot modify header information - headers already sent by (output started at /home/kszo/public_html/themes/yacapa2/ theme.php:4) in /home/kszo/public_html/html/pilkarz/wiosna2004_Piast.htm on line 66
w lini 66 jest:
[php:1:2cb0abd7a9]<?php setcookie("pilkarz","1",time()+7*86400);
?>[/php:1:2cb0abd7a9]
Jak rozwiazac ten problem? Pomozcie, z gory dziekuje.
kszychu
18.03.2004, 14:27:08
Musisz to ustawić zanim cokolwiek wyślesz (echo, print, ...) do przeglądarki.
jareks
18.03.2004, 16:40:04
Strona z formularzem wczytuje się w serwisie w ramce, zatem przeniesienie kodu setcookies na poczatek strony z kodem formularza nic nie dało, poza wyrzuceniem ostrzeżenia w innej linii. Nie chciałbym blokować tu ip po przez tworznie bazy ip z których już głosowano, bo to jak sądze da fatalny efekt w postaci możliwości jednorazowego głosowania z sieci. Czy muszę ciastka ustawić w onnym pliku i czy wogóle w ten sposób mogę tu postapić? Proszę o jakieś wskazówki. Z góry dziękuję.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.