Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][JavaScript]Wyrażenie Regularne
kuba_pilach
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Witam, a więc tak... czytałem trochę o wyrażeniu regularnym w javascript... i mam formularz, w którym wpisuję oceny po przecinku i w następnym pliku przetwarzam i dodaję oceny do bazy danych... to działa, ale wyrażenie regularne miałoby sprawdzać, czy nie użytkownik nie wpisuje sobie: 6+.7-,2,9+ (2 może ale chodzi o ciąg...)...
Podejrzewać tylko mogę, że pojawi się jakaś zmienna lub coś, ale dokładnie nie wiem co ;]
Więc jak to zrobić?
Dzięki z góry...

Bardzo proszę o zainteresowanie się tym tematem! Pilne!

Ten post edytował kuba_pilach 21.02.2011, 18:50:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Valdi_B
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

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


Poniżej kompletny przykład obróbki ocen i w JS i w PHP.
JavaScript nie ma "własnej" funkcji trim, więc trzeba ją zaprogramować samemu.
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  3. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  5. <head>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. <title>Oceny</title>
  8. <script type="text/javascript">
  9. // <![CDATA[
  10. function trim(str) {
  11. return str.replace(/^\s+/, '').replace(/\s+$/, '');
  12. } // trim
  13.  
  14. function Sprawdz() { // sprawdź oceny
  15. // Czy podano ucznia?
  16. var tt = trim(document.getElementsByName("ucz")[0].value);
  17. if (tt.length == 0) { // pole puste lub same spacje
  18. alert("Podaj dane ucznia");
  19. document.getElementsByName("ucz")[0].focus();
  20. return false;
  21. }
  22. // Czy podano oceny?
  23. tt = trim(document.getElementsByName("oc")[0].value);
  24. if (tt.length == 0) { // pole puste lub same spacje
  25. alert("Podaj oceny");
  26. document.getElementsByName("oc")[0].focus();
  27. return false;
  28. }
  29. var tbl = tt.split(","); // podziel oceny na "fragmenty"
  30. // wyrażenie regułowe
  31. var patt = new RegExp("^2[\+]?$|^[3-5][+-]?$|^6[\-]?$");
  32. var l_oc = 0; // licznik ocen
  33. // pętla przetw. ocen
  34. for (n in tbl) {
  35. var el = trim(tbl[n]); // kolejna ocena z tablicy
  36. l_oc++; // zliczaj oceny
  37. if (!patt.test(el)) { // nie pasuje do wzorca
  38. alert("Błędna ocena nr " + l_oc + ": " + el);
  39. document.getElementsByName("oc")[0].focus();
  40. return false; // blokuj submit
  41. }
  42. }
  43. return true; // OK
  44. } // Sprawdz
  45. // ]]>
  46. </script>
  47. </head>
  48.  
  49. <body>
  50. <?php
  51. // Jak wywołano stronę
  52. $rqm = $_SERVER['REQUEST_METHOD'];
  53.  
  54. if ($rqm == 'POST') {
  55. // Czytaj dane z formularza
  56. $ucz = $_POST['ucz']; // uczeń
  57. $oc = $_POST['oc']; // oceny (wszystkie)
  58.  
  59. $t_oc = split(',', $oc); // tablica ocen
  60. // Treść do wydruku
  61. $tt = 'Uczeń: ' . $ucz . '. Oceny: ';
  62.  
  63. foreach ($t_oc as $el) { // pętla przetw. ocen
  64. $oc1 = trim($el); // pojedyncza ocena (bez ew. spacji)
  65. $tt .= $oc1 . ' / '; // dopisz ocenę do string'u
  66. }
  67. echo $tt; // wydrukuj
  68. }
  69. ?>
  70. <h2>Oceny</h2>
  71. <form method="post" name="frm1"
  72. action="<?php echo $_SERVER['PHP_SELF']; ?>"
  73. onsubmit="return Sprawdz();" ><table>
  74. <tr><td>Uczeń :</td>
  75. <td><input type="text" size="15" name="ucz"
  76. value="<?php echo $ucz; ?>" /></td></tr>
  77. <tr><td>Oceny:</td>
  78. <td><input type="text" size="20" name="oc"
  79. value="<?php echo $oc; ?>" /></td></tr>
  80. <tr><td>&nbsp;</td>
  81. <td><input type="submit" value="Zapisz" /></td></tr>
  82. </table></form>
  83. </body>
  84. </html>
Oczywiście - fragment dot. "skonsumowania" ocen musisz przerobić wg swoich potrzeb.

Ten post edytował Valdi_B 23.02.2011, 10:04:27
Go to the top of the page
+Quote Post

Posty w temacie


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: 2.10.2025 - 22:17