Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML][PHP]walidacja nr rachunku bankowego
Forum PHP.pl > Forum > Przedszkole
kakkarot
Witam, posiadam formularz w którym znajduje się pole nr rachunku. Formularz generuje plik CSV. Posiadam także skrypt JS, w którym są zapisane funkcje walidacji innych pól.
Chciałbym, aby po wklejeniu nr rachunku w pole formularza, w dowolnie jakiej formie(ze spacjami albo bez nich), odpowiednia funkcja, sprawdzała by, czy podany rachunek jest prawdziwy czy nie(wywala błąd), oraz żeby eksportowała dane z tego pola(nr rachunku) do pliku csv w formie bez spacji, czyli same cyfry.

Kod pliku JS (walidacja):
  1. function Validate(obj)
  2. {
  3. this.obj = obj;
  4.  
  5. this.empty = function()
  6. {
  7. return obj.val().length;
  8. }
  9.  
  10. this.zip = function()
  11. {
  12. var pattern = /^[0-9]{2}\-[0-9]{3}$/;
  13.  
  14. return pattern.test(obj.val());
  15. }
  16.  
  17. this.phone = function()
  18. {
  19. var pattern = /^[0-9]{9}$/;
  20.  
  21. return pattern.test(obj.val());
  22. }
  23.  
  24. this.check = function()
  25. {
  26. if (this.empty())
  27. {
  28. if (obj.hasClass('r-zip') && ! this.zip())
  29. {
  30. alert('Pole ' + obj.attr('name') + ' nie jest poprawnym kodem pocztowym! Schemat: XX-YYY.');
  31. return false;
  32. }
  33.  
  34. if (obj.hasClass('r-phone') && ! this.phone())
  35. {
  36. alert('Pole ' + obj.attr('name') + ' nie jest poprawnym numerem telefonu! Schemat: XXXYYYZZZ.');
  37. return false;
  38. }
  39. }
  40. else
  41. {
  42. alert('Pole ' + obj.attr('name') + ' nie może być puste!');
  43. return false;
  44. }
  45.  
  46. return true;
  47. }
  48. }


Kod pola w formularzu:
  1. <p class="hidden cash-on">
  2. <label>Rachunek bankowy pobrania:</label>
  3. <input type="text" name="U_RACH_POBRANIA" data-late-required="true" maxlength="32" />
  4. </p>


Kod odpowiedzialny za csv:
  1. // CREATE FILE
  2. touch('results/'.$id.'.csv');
  3. $file = fopen('results/'.$id.'.csv', 'w');
  4.  
  5. $col = array();
  6. $col[0] = array();
  7. $col[1] = array();
  8.  
  9. foreach ($array as $key => $value)
  10. {
  11. if ( ! empty($value))
  12. {
  13. if ($key == 'POBRANIE') continue;
  14. if ($key == 'U_RACH_POBRANIA') $value = trim($value);
  15. if ($key == 'CK' AND $array['PLATNIK'] != 'ZL') $key = substr($array['PLATNIK'], 1).'_CK';
  16. else if ($key == 'CK' AND $array['PLATNIK'] == 'ZL') continue;
  17.  
  18. $col[0][] = $key;
  19. $col[1][] = $value;
  20. }
  21. }
  22.  
  23. $col[0][] = 'N_OS_NADAJACA';
  24. $col[1][] = "xxxxxxx";
  25.  
  26. fputcsv($file, $col[0], ';');
  27. fputcsv($file, $col[1], ';');
  28.  
  29. fclose($file);



Proszę o pomoc..muszę zrobić taką walidację, bo wywala mi błąd przy imporcie gdy ktos wklei ze spacjami albo pomyli się z jakąś cyferką, a póki co nie mam pojęcia jak mam to zrobić..

Z góry dzięki.
b4rt3kk
Tak jak testujesz pole chociażby dla telefonu zrób dla nr rachunku (nie wiem jak on powinien wyglądać, więc nie podam gotowego patternu), poprzedzając to usunięciem spacji. Np.

  1. var nrRachunku = object.val().replace(/ /g, '');
  2. var pattern = '/^[0-9]{12}$/';
  3. pattern.test(nrRachunku);
kakkarot
nie bardzo wiem jak mam to użyć... a jest taka możliwość, by w inpucie ustawić aby znajdowały się tak tylko cyfry. czyli jak ktoś wklei nr konta ze spacjami, to automatycznie je usunie?
kakkarot
czytałem to wcześniej, ale czy mógłbyś mi pomóc "wkleić" to w mój skrypt?..
abort
To jest bardzo proste - numer rachunku bankowego to 26 cyfr, czasami dla czytelności oddzielanych spacjami czwórkami (jak żołnierze z Westerplatte). smile.gif
Najprostszy kod sprawdzający, czy dany input MA SZANSE być numerem rachunku mógłby wyglądać np. tak:
  1. $input = $_POST['rachunek']; // z formularza
  2. $rachunek = preg_replace ('/\D/', '', $input); // wyrzucamy z $input wszystko co nie jest cyfrą
  3. if (strlen ($rachunek) == 26) {
  4. echo $rachunek . ' jest prawidłowym numerem rachunku bankowego';
  5. } else {
  6. echo $rachunek . ' nie jest prawidłowym numerem rachunku bankowego';
  7. }

kakkarot
super, myślę, że jako walidacja takie coś by wystarczyło, tylko gdzie ja mam to wkleić?
jak też rozumiem ten kod mi sprawdzi, czy dany numer może być nr rachunku, ale jak zrobić, żeby po wklejeniu nr ze spacjami, jakaś funkcja by usunęła odstępy między znakami?
abort
W linii drugiej kodu który wrzuciłem jest komentarz o treści: "wyrzucamy z $input wszystko co nie jest cyfrą". Ty myślisz, że ja ten komentarz "tak sobie" tam napisałem?
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.