Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z walidacją php
Forum PHP.pl > Forum > Przedszkole
barthezpl
Witam serdecznie. Mam mały problem z walidacją formularza. Otóż pisze skrypt dla hurtowni gdzie przy każdej pozycji wybieramy ilość sztuk danego towaru.Otóż nie wiem jak zrobić walidację tych pól( załóżmy że użytkownik wybiera 10 towarów i w dwóch zamiast liczb wpisał cyfry).Jak to rozgryźć, oto kody:
java script:
  1. <script type="text/javascript">
  2. function waliduj(formularz)
  3. {
  4.  
  5. if (formularz.ILOSC.value.replace(/[0-9]+/,'')!='')
  6. {
  7. alert('Pole musi zawierac liczbe');
  8. return false;
  9. }
  10.  
  11. return true;
  12. }


funkcja wyświetlająca towary:
  1. <?php
  2. function wyswietl_towary_z_cena()
  3.  {
  4.  
  5. include("config.php");
  6. include("db.php");
  7. $zapytanie_towar = "select * from B2VTOWAR ('$FIRMA','".$_SESSION['KONTOODB']."','','','','',$TowStrMax*($TowNr-1)+1,$TowStrMax)  ";
  8. $towar_odpowiedz=ibase_query($zapytanie_towar);
  9. $max=2000;
  10.  
  11.  echo '<table width =100% border=1 rules=rows align=center cellspacing=0 >';
  12.  echo '<tr>
  13.  <th width=30 align=left>Lp.</th>
  14.  <th width=20 align=left>Grupa</th>
  15.  <th width=50 align=left>Kod</th>
  16.  <th width=300 align=left>Nazwa</th>
  17.  <th width=30 align=center>Stan</th>
  18.  <th width=40 align=center>Jed</th>
  19.  <th width=50 align=center>Cena</th>
  20.  <th width=30 align=center>Cena<br> odbiorcy</th>
  21.  <th width=30 align=right>Ile sztuk</th></tr>';
  22.  echo '<form action="dodano_towary_do_kosza.php" method="post" onSubmit="return waliduj(this)">';
  23.  
  24.  
  25. for($b=1; $b<=$max; $b++)
  26.  {
  27. while($rzad = ibase_fetch_assoc($towar_odpowiedz))
  28.  {
  29.  
  30.  
  31. if ($rzad['KOD'] > '')
  32.  {
  33.  
  34.  
  35.  
  36.  echo '<tr valign=left><td width=30 align=left>'.$rzad['REKORD'].'</td>
  37.  <td width=20 align=left>' .$rzad['GRUPA'].'</td>
  38.  <td width=50 align=left><input type=hidden name=KOD[] value=' .$rzad['KOD'].' /><a href="pokaz_notatnik.php?kodproduktu='.$rzad['KOD'].'" onclick="popUp(this.href, 'elastic', 300, 600); return false;" rel="external">'.$rzad['KOD'].'</a></td>
  39.  <td width=300 align=left>' .$rzad['NAZWA'].'</td>
  40.  <td width=30 align=right>';
  41. if($rzad['STAN'] > 0) {
  42. echo '<b><font color=blue>'. number_format ($rzad['STAN'], 2, ',', ' ').'</b></font>'; }
  43.  if($rzad['STAN'] <= 0) {
  44.  echo '<b><font color=red>'.number_format ($rzad['STAN'], 2, ',', ' ').'</b></font>' ;}
  45.  echo '</td><td width=40 align=center><input type=hidden name=JM[] value=' .$rzad['JM'].' />' .$rzad['JM'].'</td>
  46.  <td width=30 align=right>' .$rzad['CENA'].'</td>
  47.  <td width=30 align=right>' .$rzad['CENAODB'].'</td>
  48.  <td width=30 align=right><input type=text size=5 name=ILOSC[] id= "'.$rzad['KOD'].'" value="" ></td></tr>';
  49.  }
  50. else
  51.  {
  52. $ile = $rzad['REKORD']-1;
  53.  
  54. break;
  55.  
  56.  }
  57.  }
  58.  }
  59.  echo '</table>';
  60.  
  61. echo '<table border=0 bgcolor=#0000FF width=100% height=20 align=center><tr><td align=right><input type="submit" value="zapisz " ></form></td></tr></table><br>';
  62.  echo '<table border=0 bgcolor=#0000FF width=100% height=20 align=center><tr><td> <p align=right><b><font size=2 color=red>Wyszukano</b> '.$ile.' rekordów</b></font></p></td></tr></table> ';
  63.  
  64.  
  65.  
  66.  
  67. $iloscstron=ceil($ile/$TowStrMax);
  68.  
  69. echo '<table border=0 bgcolor=#COD9D9 width=80% height=20 align=center>';
  70.  echo '<tr><td>';
  71. if($_GET['page']>1){
  72.  
  73.  echo '<a href="?page='.($_GET['page']-1).'">Poprzednie</a> ';
  74.  }
  75. echo '</td><td>';
  76. for($a=1; $a<=$iloscstron; $a++)
  77.  
  78.  {
  79.  
  80.  echo '[<a href=index2.php?page='.$a.'>'.$a.'</a>]';
  81.  
  82.  }
  83.  echo '</td><td>';
  84. if($_GET['page']<$iloscstron)
  85.  
  86.  {
  87.  echo '<a href="?page='.($_GET['page']+1).'">Następne</a> ';
  88.  }
  89. echo '</td></tr></table>';
  90.  }
  91. ?>


Zrobiłem takie małe javascript ale mi nie chodzi...
kossa
Masz błąd w funkcji javascript bo ona zawsze Tobie zwróci true i formularz zostanie wysłany

  1. function waliduj(formularz)
  2. {
  3.  
  4. ret=true;
  5.  
  6. if (formularz.ILOSC.value.replace(/[0-9]+/,'')!='')
  7. {
  8. alert('Pole musi zawierac liczbe');
  9. ret=false;
  10. }
  11.  
  12. return ret;
  13. }


a dalej kodu nie analizowałem i w sama funkcje js się też nie zagłębiałem

no i to nie php a javascript więc nie ta grupa na forum

Łukasz
tsharek
@kossa: wcale nie, funkcja javascript jest dobrze napisana (przynajmniej ta część z returnem). Return to return - nie jest wykonywana dalsza część kodu, tylko wychodzi z funkcji. Tak więc takie przepisanie jest nadmiarowe.

Po krótkiej analizie kodu chyba wiem co jest grane. Otórz w formularzu definiujesz tablicę ILOSCI[], a sprawdzasz jakby to była zwykła zmienna. Dlatego potrzeba będzie dołożenia pętli:
  1. function waliduj(formularz)
  2. {
  3.  
  4. for(i=0; i<formularz.ILOSC.length; i++)
  5. {
  6. if (formularz.ILOSC[i].value.replace(/[0-9]+/,'')!='')
  7. {
  8. alert('Pole musi zawierac liczbe');
  9. return false;
  10. }
  11. }
  12.  
  13. return true;
  14. }


Mogą byś też inne błędy, daj znać jak to nie będzie działać.
Aha: nie muszę chyba mówić że walidacja po stronie przeglądarki jest NIC nie warta? Może ona pełnić rolę "user-friendly", czyli wyświetla się błąd bez przeładowania strony, natomiast jest to żadne zabezpieczenie
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.