Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz - mega problem, jeśli pole nie wypełnione...
SzErI
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.04.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ć


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SzErI
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.04.2005

Ostrzeżenie: (0%)
-----


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ł? :/
Go to the top of the page
+Quote Post
_Mateo
post
Post #4





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.03.2005
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


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

Ten post edytował _Mateo 12.04.2005, 17:53:29


--------------------
Go to the top of the page
+Quote Post
vik-ing
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.03.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował vik-ing 12.04.2005, 20:57:28
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SzErI
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.04.2005

Ostrzeżenie: (0%)
-----


Gdzie mógłbym poczytać o tych klasach do formularzy? tongue.gif
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




google biggrin.gif
dużo klas jest na http://www.phpclasses.org/
musisz tylko tam poszukać


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:43