Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][HTML][PHP]walidacja nr rachunku bankowego
kakkarot
post 17.11.2012, 01:24:07
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

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


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.

Ten post edytował kakkarot 17.11.2012, 01:27:29
Go to the top of the page
+Quote Post
b4rt3kk
post 17.11.2012, 01:47:22
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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);


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
kakkarot
post 17.11.2012, 17:35:28
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

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


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?
Go to the top of the page
+Quote Post
d3ut3r
post 17.11.2012, 18:04:41
Post #4





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


http://blog.mmx3.pl/2010/11/16/javascript-...-bankowego-nrb/


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
kakkarot
post 17.11.2012, 18:16:02
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

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


czytałem to wcześniej, ale czy mógłbyś mi pomóc "wkleić" to w mój skrypt?..
Go to the top of the page
+Quote Post
abort
post 17.11.2012, 20:32:07
Post #6





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


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. }

Go to the top of the page
+Quote Post
kakkarot
post 18.11.2012, 11:10:40
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

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


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?
Go to the top of the page
+Quote Post
abort
post 18.11.2012, 17:41:18
Post #8





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


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?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.05.2025 - 05:28