Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Walidacja - zmiana
Forum PHP.pl > Forum > Przedszkole
em-ba
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 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. ?>
Shili
wyrażenie reguralne

coś w stylu ^([a-zA-Z0-9]*)?$
em-ba
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 "/"
Shili
Proponowałaś

Podałam samą składnię, nie dopasowaną do żadnej funkcji żadnego języka 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 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 winksmiley.jpg
em-ba
ok, dzieki
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.