Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz(przycisk) + Walidacja[JS] + [PHP] = Problem
Forum PHP.pl > Forum > PHP
Vanquish89
Witam wszystkich, jest to mój pierwszy post więc proszę o wyrozumiałość. Otóż borykam się z tym problemem, że próbuję połączyć formularz z weryfikacją napisaną w JavaScript wypełnionych pól. W php mam napisane zapisywanie do pliku tekstowego i odczyt. I teraz w czym tkwi problem. W momencie gdy odświeżę stronę lub po prostu na nią wejdę już są dopisywane puste pola do pliku tekstowego i wyświetlane na stronie mimo że nie wcisnąłem przycisku do wysłania... Czy jest ktoś w stanie mi z tym pomóc? Poniżej zamieszczam kody poszczególnych sekcji, czyli przycisku formularza, walidacji w JS i zapisu do pliku w php.

Przycisk
CODE
<button onClick="validation()" type="submit" name="wyslij" value="Wyslij">Wyslij</button>


Walidacja w JS
CODE
<script language="JavaScript">
function validation ()
{
if (document.getElementById("imie").value == "")
<------>{
<------>alert ("Wpisz imie!");
<------>return false;
<------>}
if (document.getElementById("nazwisko").value =="")
<------>{
<------>alert ("Wpisz nazwisko!");
<------>return false;
<------>}
if (document.getElementById("telefon").value =="")
<------>{
<------>alert ("Wpisz telefon!");
<------>return false;
<------>}
if (document.getElementById("miesiac").value =="")
<------>{
<------>alert ("Wybierz miesiac!");
<------>return false;
<------>}
if (document.getElementById("dzien").value =="")
<------>{
<------>alert ("Podaj dzien!");
<------>return false;
<------>}
<------>else
<------>{
<------>document.wyslij.submit();
<------>return true;
<------>}
<------>
....
}

</script>


Zapis do pliku i odczyt na stronę
CODE
<?

$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$telefon = $_POST['telefon'];
$miesiac = $_POST['miesiac'];
$dzien = $_POST['dzien'];
$uwagi = $_POST['uwagi'];
$wyslij = $_POST['wyslij'];
if (isset($wyslij))
{
$plik = fopen('dane.txt', 'a');
fwrite ($plik, "Dane rezerwacji: ".$imie.", ".$nazwisko.", ".$telefon." w dniu: ".$dzien." ".$mie
fwrite ($plik, "Wyslales formularz dnia ".date("Y-m-d")." "." o godzinie ".date("H:i:s")."\n");
fclose($plik);
}
?>

<?
$wyniki = file ("dane.txt");
foreach ($wyniki as $element)
{
echo ($element."<br>");
}

?>


Jakby były jakieś niejasności to pytajcie. Bardzo mi zależy żeby to napisać bo jest to projekt do strony. Pozdrawiam.
Blame
Myślę że wystarczy, jak za każdym razem przed zapisem sprawdzisz czy pola są niepuste.
Nattfarinn
Dziwne zachowanie... Kod jest napisany poprawnie. Spróbuj dla testów zamienić ten warunek:
  1. if (isset($wyslij)) {

Na np.
  1. if (!empty($_POST)) {

Możesz też spróbować, tuż przed samym warunkiem wstawić linijkę:
  1. var_dump($_POST);

I zobaczyć co w zmiennej piszczy winksmiley.jpg
Vanquish89
Z tym już próbowałem:
  1. if (!empty($wyslij)) {


oczywiście po wejściu już nie wpisuje od razu do pliku, ale jak pola są puste i wcisnę "Wyślij" to pokazuje mi się okienko że dane pole jest puste, ale jak wezmę ok na tym alercie to tak i tak mi zapisuje puste pola do pliku...
Nattfarinn
Kod
<button onClick="validation()" type="submit" name="wyslij" value="Wyslij">Wyslij</button>

Nie mam w tej chwili możliwości przetestowania czegokolwiek, ale dopisz return do onClick, czyli:
Kod
<button onClick="return validation()" type="submit" name="wyslij" value="Wyslij">Wyslij</button>
Vanquish89
Nattfarinn, dzięki za pomoc, return załatwiło sprawę smile.gif Bardzo dziękuję smile.gif Oczywiście leci pomógł smile.gif Pozdrawiam
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.