Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz (php+mysql)
Forum PHP.pl > Forum > PHP
jareks
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
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&para;ć">
</form>
<?
if (isset($wstaw))
{
$pyt = "INSERT INTO tablea VALUES (0, '$2pole', '$3pole')";
$wykonaj = @mysql_query($pyt) or die ('Wyst&plusmn;pił bł&plusmn;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
Dzięki serdeczne - dokładnie o to mi chodziło smile.gif

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
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 sad.gif
Czy da się to jakoś poprawić?
lucek
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
[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
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
Musisz to ustawić zanim cokolwiek wyślesz (echo, print, ...) do przeglądarki.
jareks
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.