Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Formularz - weryfikacja na tej samej stronie
Forum PHP.pl > Forum > Przedszkole
-piotrek-
Witam, mam takie pytanie. Chciałbym aby w momencie gdy nic nie zostanie wpisane w pole imię wyświetlił się obok napis podaj imę, na tym samym formularzu. Wiem jak zrobić odsyłanie do skryptu który będzie sprawdzał poprawność, ale nie chcę żeby to się działo na innej stronie ale na tej samej, żeby przykładowa osoba która nie wpisze nic w to pole będzie mogła zobaczyć obok o które pole chodzi. Niżej zamieszczam kod z kawałkiem skryptu, ale niestety nei spełnia swojej funkcji . Ma ktoś może pomysł co powiniennem zrobić?


  1. <form action="zakladanie_konta.php" id="formularzyk" method="post">
  2. <h2>Dane Klienta</h2>
  3. <table class="danepodstawowe">
  4. <tr>
  5. <td class="label"><label for="firstname">Imie:</label></td>
  6. <td class="value"><input type="text" name="firstname" value="" id="firstname"/></td>
  7. <td class="remarks">wymagane<br/>
  8. <span class="errors">
  9. <?php
  10. if(strlen($firstname) == 0)
  11. echo "<font color='red'>podaj imie</font>";
  12. ?>
  13. </span>
  14.  
  15.  
  16. </td>
  17. </tr>
  18.  
  19.  
  20. </table>
  21. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  22. </form>
Babcia@Stefa
  1. <form action="<?php echo $_SERVER['PHP_SELF'];?>?action=check" id="formularzyk" method="post">
  2. <h2>Dane Klienta</h2>
  3. <table class="danepodstawowe">
  4. <tr>
  5. <td class="label"><label for="firstname">Imie:</label></td>
  6. <td class="value"><input type="text" name="firstname" value="" id="firstname"/></td>
  7. <td class="remarks">wymagane<br/>
  8. <span class="errors">
  9. <?php
  10. if(strlen($firstname) == 0 AND $_GET['action'] == 'check')
  11. echo "<font color='red'>podaj imie</font>";
  12. ?>
  13. </span>
  14.  
  15.  
  16. </td>
  17. </tr>
  18.  
  19.  
  20. </table>
  21. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  22. </form>


Być może o to chodziło.
piotrooo89
tu jest sprawdzanie wpisania wartości do pola przez javescript http://www.google.pl/search?q=sprawdzanie+...lient=firefox-a

a jak chcesz to zrobić za pomocą tylko php:

  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" id="formularzyk" method="post">
  2. <h2>Dane Klienta</h2>
  3. <table class="danepodstawowe">
  4. <tr>
  5. <td class="label"><label for="firstname">Imie:</label></td>
  6. <td class="value"><input type="text" name="firstname" value="" id="firstname"/></td>
  7. <td class="remarks">wymagane<br/>
  8. </td>
  9. </tr>
  10. </table>
  11. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  12. </form>
  13.  
  14. // i teraz sprawdzasz po kliknięciu na zaloz
  15. if (empty($_post['firstname']))
  16. {
  17. echo 'puste';
  18. }
-Piotrek-
Super!!! Naprawdę mi pomogło, wczoraj zacząłem pisać w php i dzisiaj spędziłem 4 godziny szukając rozwiązania, a tu cyk napisałem na forum i eleganckie rozwiązanie. Teraz moje pytanie dotyczy optymalizacji. Napewno można zrobić to inaczej niż dla każdego pola formularza tj. imie, nazwisko , wiek itd...trzeba powtarzać ten kod. Ma ktoś pomysł jak to można by polepszyć?

2. piotrooo89 napisałeś żeby stworzyć ten warunek z funkcją empty(rozumiem logikę)..ale nie bardzo czuję gdzie go mogę wstawić?

Dzięki
piotrooo89
pewnie dane z formularza będą wstawiane do bazy. i wstawiasz to wszystko w jednym pliku php.

a żeby zrobić dla kilku pól wystarczy:

  1. <?php
  2. if ( (empty($_post['firstname'])) && (empty($_post['lastname'])) ) //itd...
  3. ?>
-Piotrek-
Piotrooo89 Ja rozumiem bardzo dobrze ten warunek, ale jedna rzecz mi nie pasuje w tym. Ponieważ chcę żęby przy każdym polu wypisywało żę jest źle a nie ogólnikowo. Przy każdej danej żeby był czerwony napis. (ale to już wiem jak zrobić dzięki postowi Babcia@Stefa
2. Czy jest możliwość stworzenia jakiegoś obiektu kontroli albo jakiejś funkcji która była by odpowiedzialna za to i nie trzeba by było powtarzać kod
piotrooo89
javascript i sprawdzasz od razu czy wpisane.
-Piotrek-
Rozumiem że JavaScript, ale wiem że nie wszystkie przeglądarki obsługują javascript i to jest pierwszy powód, a drugim jest to że chciałbym się tego nauczyć.
piotrooo89
nie wiem czy dobrze myśle ale może coś takiego:

  1. <?php
  2. function check ($ciag)
  3. {
  4. if(strlen($ciag) == 0 && $_GET['action'] == 'check')
  5. echo "<font color='red'>podaj imie</font>";
  6. }
  7. ?>


i później już w kodzie:
  1. <form action="<?php echo $_SERVER['PHP_SELF'];?>?action=check" id="formularzyk" method="post">
  2. <h2>Dane Klienta</h2>
  3. <table class="danepodstawowe">
  4. <tr>
  5. <td class="label"><label for="firstname">Imie:</label></td>
  6. <td class="value"><input type="text" name="firstname" value="" id="firstname"/></td>
  7. <td class="remarks">wymagane<br/>
  8. <span class="errors">
  9. <?php
  10. check($firstname);
  11. ?>
  12. </span>
  13.  
  14.  
  15. </td>
  16. </tr>
  17.  
  18.  
  19. </table>
  20. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  21. </form>


pisane z palca może nie działać
erix
Cytat
2. Czy jest możliwość stworzenia jakiegoś obiektu kontroli albo jakiejś funkcji która była by odpowiedzialna za to i nie trzeba by było powtarzać kod


Jest takie rozszerzenie, jak filter" title="Zobacz w manualu PHP" target="_manual, ale tylko niektóre serwery mają włączone.

Dobre efekty możesz osiągnąć łącząc sprawdzanie przez PHP i JS (dla JS sprawdź: http://www.drlongghost.com/validanguage.php). Jeśli chodzi o PHP, to możesz spróbować takie rozwiązania, jak: http://www.phpclasses.org/browse/package/4425.html.
-Piotrek-
Tak dokładnie o to mi chodziło, tylko że to trochę źle zaczeło działać. Gdy jest tak jak poniższy kod to
1. Pierwsze wczytanie jest zakładaniekonta.php i nic się nie wyświela(tzn podaj imie na czerwono)
2. wpisze dane ... nic nie wyskakuje
3. Nie wpisze danych wsykakuje czerwony napis podaj imie
_____________________________________________________
Gdy wklejam Twoj kod ( funkcje wklejam na samym poczatku po body, też miałem się o to zapytać czy zawsze takie funkcje wklejać na początku czy też dołączać z jakimś plikiem a jak tak to jak biggrin.gif? .
1. Pierwsze wczytanie jest zakładaniekonta.php i nic się nie wyświela(tzn podaj imie na czerwono)
2. Wpisze dane....a tu ciach wyskakuje czerwony napis
3. Nie wpisze tez wyskakuje
questionmark.gif?
  1. <div id="formularze">
  2. <form action="<?php echo $_SERVER['PHP_SELF'];?>?action=check" id="formularzyk" method="post">
  3. <h2>Dane Klienta</h2>
  4. <table class="danepodstawowe">
  5. <tr>
  6. <td class="label"><label for="firstname">Imie:</label></td>
  7. <td class="value"><input type="text" name="firstname" value="" id="firstname"/></td>
  8. <td class="remarks">wymagane
  9. <span class="errors">
  10. <?php
  11.  
  12. if(strlen($_POST['firstname']) == 0 AND $_GET['action'] == 'check')
  13. echo "podaj imie";
  14.  
  15. ?>
  16. </span>
  17. </tr>
  18.  
  19.  
  20. </table>
  21. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  22. </form>
-Piotrek-
Wszystko już pięknie działa, jeżeli chodzi o skrypt piotrooo89 to ja źle wpisałem zmienną. Dzięki za pomoc i 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.