Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz - mega problem
Forum PHP.pl > Forum > Przedszkole
SzErI
Jak zrobić formularz, taki że, jeśli będę miał jakieś nie wypełnione pole, to formularz wyświetli mi ponownie siebie i zaznaczy np na czerwono, że pole należy wypełnić. W dodatku ma się wtedy nie wysłać ? :/

Próbuję to zrobić od kilku dni i nie mogę nigdzie tego znaleźć a w pracy już mnie heblują :/. Proszę pomóżcie.
nospor
Wysylaj formularz do tego samego pliku co go tworzy. Nie wiem jak masz u siebie,ale np.:
  1. <?php
  2.  
  3. //poczatek formualrza, należy uwzglednic czy byl formularz
  4. $niewysylaj=false;
  5. if (empty($_POST) || empty($_POST['zmienna']))
  6. {
  7.  echo &#092;"<input type='text' name='zmienna' />\";
  8.  if (!empty($_POST) && empty($_POST['zmienna']))
  9.  echo &#092;"<span style='color:red'>Popraw</span>\";
  10.  $niewysylaj=true;
  11. }
  12.  
  13. if (!$niewysylaj)
  14. {
  15. //wyslij
  16. }
  17.  
  18. //zakonczenie formualrza, należy uwzglednic czy byl formularz
  19.  
  20. ?>


A tak wogole do tego rzeczy są odpowiednie klasy, odpowiadające za formularze. Warto poszukać
SzErI
Hmm :/, tylko, że mój formularz jest bardzo bardzo rozbudowany. W dodatku plik obsługujący formularz jest osobny, czyli mam plik formularz.php - właściwy formularz i wyslij.php - odpowadający za obsługę .

Jeśli chciałbym to zrobić metodą zaproponowaną powyżej bym musiał spędzić nad tym chyba bardzo bardzo bardzo dużo czasu. (bym musiał przeksztacić linijka po linijce kodu na php (by tabelka w której jest formularz nie wysypała się etc.). Czy nie można tego zrobić w jakiś inny sposób? Np poprzez plik obsługujący jeśli będzie mu brakowało jakiejś zmiennej, to żeby cofał do formularza i wtedy zaznaczał na czerwono? Jakiś pomysł? :/
_Mateo
jesli masz to w innym pliku, to nie ma zwiazku ze sprawą - po prostu uzywasz skryptu @nospora w pliku z wyslij.php. W3dług mnie lepiej by było zrobic takie cos w JavaScripcie - wtedy nie trzebaby wysyłać danych na serwer i ich sprawdzac w skrypcie php a wszystko wykonałoby sie po stronie przegladarki. Ale tutaj juz nie pomoge - kompletnie sie nie znam na JS smile.gif
vik-ing
ja mam tak - ma jakies pola textowe i pole typu submit. w formularzu mam : onsubmit="return sprawdzenie()" a funkcja sprawdzenie wyglada tak

Kod
var alert1;
function sprawdzenie(){
    alert1 = "";
    if(document.f1.name.value=="") alert1 = alert1 + "Imię i nazwisko osoby kontaktowej:";
    if(document.f1.firma.value=="") alert1 = alert1 + "Nazwa firmy:";
    if(document.f1.ulica.value=="") alert1 = alert1 + "Ulica:";
    if(document.f1.kod.value=="") alert1 = alert1 + "Kod pocztowy:";
    if(document.f1.miasto.value=="") alert1 = alert1 + "Miasto:";
    if(document.f1.nip.value=="") alert1 = alert1 + "NIP:";
    if(document.f1.telefon.value=="") alert1 = alert1 + "Telefon kontaktowy:";
    if(document.f1.email.value=="") alert1 = alert1 + "Email używany do logowania:";
    if(alert1.length < 1) {
    
      return true;
    }else {
    
    otworzAlert(alert1);
    return false;
    }
}
</script>



natomiast funkcja otworzAlert(alert1) wyswietla okienko, w ktorym napisane jest czego urzytkownik nie wyswietlil. ponadto funkcja zwraca wtedy false wiec formularz sie nie wysle.

Kod
function otworzAlert(t) {
okienko=open("dod_check.php?alert1=" + t,"okno",
  "width=430,height=310,scrollbars=no,menubar=no");
}
</script>

a strona dod_check.php juz zajmuje sie sparsowaniem stringa alert1 i wyswietleniem czego uzytkownik nie wypelnil ( podobine mozesz zrobic sprawdzanie bledow )

pozdr
nospor
js ma jednak jedną poważną wadę. MOżna go wyłączyć. Wówczas nie będzie żadnej walidacji u klienta i na serwer trafią złe dane.

Proponowałbym Ci zaineresować się klasami do formularzy. One załatwiają sprawę walidacji i u klienta i na serwerze. Znacznie przyspieszają prace niezależnie od wielkości formularzy, wręcz bym powiedział że im większy formularz, tym wieksze zalety korzystania z takiej klasy.
SzErI
Gdzie mógłbym poczytać o tych klasach do formularzy? tongue.gif
nospor
google biggrin.gif
dużo klas jest na http://www.phpclasses.org/
musisz tylko tam poszukać
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.