Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Walidacja - zmiana, ulepszenie walidacji
em-ba
post
Post #1





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


Witam, mam w formularzu walidację.. Problem jest z numerem mieszkania "mi", tzn. do tej pory korzystałem z takiego zabezpieczenia, że można było wpisać tylko cyfry i litery (i było to pole wymagane do wpisania).. teraz zmieniłem tak, że nie jest to pole wymagane do wypełnienia nie mam żadnej walidacji..
Jak mam zrobić taką walidację, która będzie pozwalała na to, że..
1. jeżeli ktoś wpisze "$%^$" w polu "mi" w formularzu - to żeby wyskoczyła inf.. "mi - podaj same cyfry i litery"
2. jeżeli ktoś nic nie poda w polu "mi" w formularzu - to zeby NIE wyskakiwała inf "mi - podaj same cyfry i litery", tylko poprostu zeby nic nie wyskakiwało i zeby dodało pozostałe dane do bazy (potrzebne to jest, gdyż nie każda osoba posiada nr. mieszkania (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) )

trochę to zagmatwane ale mam nadzieję, ze chociaż trochę jasno to opisałem

Kod
<div>
    <label class="mi" for="mi">mi:</label>
    <input id="mi" name="mi" class="mi" type="text" size="5" "maxlength="4" value="<?=$mi;?>"  />
</div>

  1. <?php
  2. $pol = @mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fix') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. function alpha_numeric($str)
  6. {
  7. return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
  8. }
  9.  
  10. if ($_POST['mi']=='' || alpha_numeric($_POST['mi'])==FALSE)
  11. {
  12. $errors[] = 'mi - podaj same cyfry i litery';
  13. }
  14.  
  15.  if(is_array($errors) && !empty($errors))
  16. {
  17. echo '<br><p class="error">Formularz napotkał błędy</p>';
  18. while (list($key,$value) = each($errors))
  19. {
  20.  
  21. echo '<span class="error">'.$value.'</span><br />';
  22. }
  23. }
  24. else { 
  25. $m = htmlspecialchars($_POST["mi"], ENT_QUOTES);
  26.  
  27. $qr = "INSERT INTO `kortyc` (`mi`)
  28. VALUES('".$mi."')"; //lub VALUES('')
  29. $wy = mysql_query ($qr) or die(mysql_error());
  30.  
  31. echo 'ok';
  32. }
  33.  
  34. }
  35.  
  36. ?>
Go to the top of the page
+Quote Post
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


wyrażenie reguralne

coś w stylu ^([a-zA-Z0-9]*)?$
Go to the top of the page
+Quote Post
em-ba
post
Post #3





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


jak wstawiłem jak napisałes to wywala mi inf pod formularzem tak jak wtedy - ze "mi moze zawierac jedynie..."

dla jasnosci wpisałem coś takiego
  1. <?php
  2. function regular($str)
  3. {
  4. return ( ! preg_match("/^([a-zA-Z0-9]*)?$/i", $str)) ? FALSE : TRUE;
  5. }
  6.  
  7. if ($_POST['mi']=='' || regular($_POST['mi'])==FALSE)
  8. {
  9. $errors[] = 'mi może zawierać jedynie liczby i litery';
  10. }
  11. ?>


jak dałem identycznie jak proponowałes to wywalało mi błąd preg_match dotyczący "/"
Go to the top of the page
+Quote Post
Shili
post
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Proponowałaś

Podałam samą składnię, nie dopasowaną do żadnej funkcji żadnego języka (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Wyrażenie regularne które podałam zwraca TRUE jeśli ciąg jest pusty, bo o to chyba również chodziło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zwróć uwagę na swojego if'a. Chcesz, żeby przy pustym ciągu nie ustawiało errora, a w ifie masz:
Wypisz error jeśli wyrażenie regularne zwróci FALSE lub jeśli pole jest puste.

Usuń to sprawdzanie pustego pola i bazuj na samym wyrażeniu regularnym.

Jeśli masz jakieś wątpliwości odnośnie samego wyrażenia śmiało pytaj (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Shili 17.06.2008, 12:45:02
Go to the top of the page
+Quote Post
em-ba
post
Post #5





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


ok, dzieki
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.12.2025 - 16:58