Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] sprawdzanie czy pole formularza nie jest puste
Forum PHP.pl > Forum > Przedszkole
mispolarny
mam taki kod:
  1. $nazwa_f = $_POST['nazwa_f'];
  2. $place = $_POST['place'];
  3. $www = $_POST['www'];
  4. $os_kontakt = $_POST['os_kontakt'];
  5. $email = $_POST['email'];
  6.  
  7. if($nazwa_f and $place and $www and $os_kontakt and $email) {
  8.  
  9. // dodajemy rekord do bazy
  10. $ins = @mysql_query("INSERT INTO potencjalni SET nazwa_f='$nazwa_f', place='$place', www='$www', os_kontakt='$os_kontakt', 
  11. email='$email', added='$added'");
  12. ?>
  13. <br />
  14. <?php
  15. if($ins) echo "Rekord został dodany poprawnie";
  16. else echo "Błąd nie udało się dodać nowego rekordu";
  17.  
  18. }


pierwsze pytanie to czy if jest dobrze napisany? bo jak ktores pole jest niewypelnione to nie wyswietla tego else echo "Błąd nie udało się dodać nowego rekordu";
a po drugie jak ktos zostawi puste pole to zeby nie czyscilo formularza tylko wracalo do niego i np. czerwona gwiazdka (oczywiscie moze to uwydataniac w jakikolwiek sposob, byleby bylo wiadomo o co chodzi) zaznaczalo miejsce ktore jeszcze nalezy uzupelnic?
Shili
if(empty($zmienna)) sprawdza czy zmienna ma pustą wartość

a dane spowrotem możesz przekazać przez sesję. I tam zaznaczać które są niepoprawne.
mispolarny
a moglbys cos blizej napisac?
piotrooo89
  1. <?php
  2. if(!empty($nazwa_f && $place && $www && $os_kontakt && $email))
  3. ?>



btw. Shili to kobieta winksmiley.jpg
mispolarny
Cytat(piotrooo89 @ 11.07.2008, 13:48:41 ) *
  1. <?php
  2. if(!empty($nazwa_f && $place && $www && $os_kontakt && $email))
  3. ?>

btw. Shili to kobieta winksmiley.jpg


przepraszam w takim razie smile.gif
a po wrzuceniu tej linijki wyswietla biala strone smile.gif
piotrooo89
  1. <?php
  2. if( (!empty($nazwa_f)) && (!empty($place)) && (!empty($www)) && (!empty($os_kontakt)) && (!empty($email)) )
  3. ?>


tak Ci chyba źle podałem... sry.
mispolarny
  1. <?php
  2. if( (!empty($nazwa_f)) && (!empty($place)) && (!empty($www)) && (!empty($os_kontakt)) && (!empty($email)) ) {
  3.  
  4. // dodajemy rekord do bazy
  5. $ins = @mysql_query("INSERT INTO potencjalni SET nazwa_f='$nazwa_f', place='$place', www='$www', os_kontakt='$os_kontakt', email='$email', 
  6. added='$added', interest='$interest'");
  7. ?>
  8. <br />
  9. <?php
  10. if($ins) echo "Rekord został dodany poprawnie";
  11. else echo "Błąd nie udało się dodać nowego rekordu";
  12.  
  13. }
  14. ?>


jesli nie uzupelnie wszystkich pol to nie pojawia mi sie komunikat o bledzie...
i jak zrobic zeby zapamietowala sie sesja z wartosciami w polach?
piotrooo89
co do pierwszego będzie się tak działo ponieważ masz && czyli i. zmień sobie na || czyli or.
nospor
Cytat
jesli nie uzupelnie wszystkich pol to nie pojawia mi sie komunikat o bledzie...
bo przeciez komunikat o bledzie wyswietlasz wlasnie tylko wtedy, gdy uzupelnisz wszystkie i nie powiedzie sie zapytanie. Masz ze tak powiem sprzeczne zalozenia winksmiley.jpg
piotrooo89
kurcze nie zauważyłem że tam nie ma elsa... zrób jak mówi nospor
mispolarny
fakt smile.gif
poprawilem, ale teraz za kazdym razem gdy odswiezam strone to wyskakuje komunikat...
  1. <?php
  2. if( (!empty($nazwa_f)) || (!empty($place)) || (!empty($www)) || (!empty($os_kontakt)) || (!empty($email)) ) {
  3.  
  4. // dodajemy rekord do bazy
  5. $ins = @mysql_query("INSERT INTO potencjalni SET nazwa_f='$nazwa_f', place='$place', www='$www', os_kontakt='$os_kontakt', email='$email', 
  6. added='$added', interest='$interest'");
  7. ?>
  8. <br />
  9. <?php
  10. if($ins) echo "Rekord został dodany poprawnie";
  11. else echo "Błąd nie udało się dodać nowego rekordu";
  12.  
  13. }
  14. else echo "Błąd nie udało się dodać nowego rekordu";


jak to obejsc?
i co z tym zachowywaniem danych?
piotrooo89
pewnie nic w zmiennych nie masz więc będzie komunikat.
mispolarny
no dokladnie nie mam nic w zmiennych, ale jak zrobic tak zeby ten komunikat sie nie wyswietlal a wszystko chodzilo ladnie smile.gif
piotrooo89
musisz wpisać coś w formularzu z którego przesyłasz dane... to chyba jest proste...
nospor
raz marudzisz ze nie wyswietla, raz marudzisz ze sie wyswietla... zdecyduj sie bo z taką hustawką nastrojów to nas dobijesz winksmiley.jpg

Jak chcesz by to wszystko sie dzialo tylko po wyslaniu forma, to obejmij to wszystko jeszcze jednym ifem:
if (!empty($_POST)){
....
}
mispolarny
Cytat(nospor @ 11.07.2008, 14:33:10 ) *
raz marudzisz ze nie wyswietla, raz marudzisz ze sie wyswietla... zdecyduj sie bo z taką hustawką nastrojów to nas dobijesz winksmiley.jpg

Jak chcesz by to wszystko sie dzialo tylko po wyslaniu forma, to obejmij to wszystko jeszcze jednym ifem:
if (!empty($_POST)){
....
}


hehe
coz dzis widocznie jak kobieta jestem tongue.gif
dzieki, o to chodzilo smile.gif
a teraz jak przechowac w sesji te dane ktore sie wprowadzilo? zeby np. jak ktos nie wpisze czegos do forma to mu to wszystko nie zniklo i zeby nie musial wprowadzac tego jeszcze raz...
nospor
sesja tu nie potrzebna

  1. <?php
  2. echo '<input name="cos" value="'.$_POST['cos'].'" />';
  3. ?>

tak w skrocie
Pilsener
1. Robisz templat formularza, który wygląda mniej więcej tak:
  1. <form action="index.php" method="post">
  2. <input type="text" name="nazwisko"{V_NAZWISKO} />
  3. </form>
- trzymasz to sobie w pliku lub bazie

2. Wyświetlasz normalnie formularz na stronie, za {} podstawiając odpowiednie zmienne (może to być np. tytuł, numer etc.)
3. Odbierasz dane i parsujesz je:
  1. <?php
  2. $nazwisko = $_POST['nazwisko'];
  3. if(empty($nazwisko)){
  4.  $error[] = 'wypełnij pole nazwisko';
  5. }
  6. ?>
- sprawdzasz poprawność danych i generujesz tablice błędów/warningów

3. Dodajesz do bazy lub odrzucasz:
  1. <?php
  2. if(empty($error)){
  3.  //kod dodający do bazy, jeśli tablica błędów jest pusta
  4. }else{
  5.  $tresc_naglowek .= '<h4 class="error">Formularz zawiera błędy: '.join(", ",$error).'</h4>'; //doklejasz błędy do treści
  6.  $v_nazwisko = ' value="'.$nazwisko.'"'; //generujesz dodatkowe zmienne do formularza
  7.  //tutaj ponownie wyświetlasz formularz podstawiając za {V_NAZWISKO} odpowiednie wa
    rtości. Można np. zrobić value="wypełnij to pole" etc.
  8. }
  9. ?>


Przykład działania: brydz.ugu.pl (dodawanie komentarzy do newsów). Możesz wszystko zrobić na jednej stronie (action do tej samej strony), wtedy dodatkowo musisz sprawdzać, czy tablica $_POST jest pusta. Jeśli jest, wyświetlasz formularz, jak nie to dodajesz.
mispolarny
Cytat(nospor @ 11.07.2008, 14:39:40 ) *
sesja tu nie potrzebna

  1. <?php
  2. echo '<input name="cos" value="'.$_POST['cos'].'" />';
  3. ?>

tak w skrocie


fajne to rozwiazanie bo proste smile.gif
a powiedz mi teraz jak wyczyscic formularz? smile.gif

bo mam tak: <input type="reset" value="Wyczyść formularz" />
ale teraz to nie dziala...
piotrooo89
robisz pole:
<input type="reset" value="Wyczysc" />
nospor
ano niedziala bo reset czysci do ustawionych wartosci. a skoro ustawiasz wartosci z posta.... winksmiley.jpg

Musisz napisac js, ktory przeleci po polach forma i je wyczysci
mispolarny
no wlasnie tak mam smile.gif
ale to w tym przypadku nie zadziala bo POST przechowuje wczesniej wprowadzone dane
jakies inne propozyjce?
nospor
no przeciez napisalem iine propozycje winksmiley.jpg
mispolarny
dopiero zobaczylem po napisaniu posta:)
ale o JS nie mam pojecia, wiec moze jakies gotowe rozwiazanie?
Shili
Kod
<form>
    <input type="text" value="kwa" />
    <input type="text" value="costam" />
    <input type="button" value="wyczysc" onclick="for(i=0;i<this.form.length;i++) if(this.form[i].type!='submit' && this.form[i].type!='button') this.form[i].value='';" />
    <input type="submit" name="submit" value="wyślij" />
</form>
Taki mały przykład
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.