Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> walidacja danych na podstawie warunku z tablicy
ktuvok
post
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 0
Dołączył: 30.11.2003

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


Załóżmy, że jest taka tablica:

  1. <?php
  2.  
  3. $Tablica = array(
  4. '$Zmienna1' => ('$Zmienna1 > 45','Nieprawidłowa wartość!'),
  5. '$Zmienna3' => ('$Zmienna3 != 2005','Nieprawidłowy rok!')
  6. );
  7.  
  8. ?>


Chciałbym napisać pętlę, która dla każdej zmiennej przesłanej POST-em dokona sprawdzenia warunku, zawartego w tablicy i zwróci błąd w przypadku jego nie spełnienia. Zacząłem tak:
  1. <?php
  2.  
  3. foreach($_POST as $k=>$v)
  4. {
  5. if(array_key_exists($k, $_POST))
  6. {
  7. $Warunek = $Tablica[$k][0];
  8. if(eval($Warunek))
  9. {
  10. echo "Dla $k warunek $Warunek spełniony<BR>";
  11. }
  12. else
  13. {
  14. echo "Dla $k warunek $Warunek nie spełniony!<BR>";
  15. }
  16. }
  17. }
  18.  
  19. ?>


ale nie bardzo chce to działać... Proszę o wskazówki, jak to poprawnie napisać.

Pozdrawiam,
K
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ktuvok
post
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 0
Dołączył: 30.11.2003

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


Nie zrozumieliśmy się... Problem nie polega na konstrukcji tablicy, tylko na tym, jak potraktować string w niej zapisany jako wyrażenie, zwracające true albo false.

Dla pewności załączam raz jeszcze cały skrypt:
  1. <?php
  2.  
  3. $Tablica = array(
  4. 'Zmienna1' => array(10,'',''),
  5. 'Zmienna2' => array(10,'$Zmienna2>10','Błąd w wierszu 2')
  6. );
  7.  
  8. if(isset($_POST['submit']))
  9. {
  10. foreach($_POST as $k=>$v)
  11. {
  12. if(array_key_exists($k, $Tablica))
  13. {
  14. $Warunek = $Tablica[$k][1];
  15. if($Warunek != '')
  16. {
  17. if(eval("$Warunek"))
  18. {
  19. echo "Dla $k warunek $Warunek spełniony<BR>";
  20. }
  21. else
  22. {
  23. echo "Dla $k warunek $Warunek nie spełniony<BR>";
  24. }
  25. }
  26. }
  27. }
  28. }
  29.  
  30. ?>

każdorazowo otrzymuję komunikat:
Cytat
Parse error: parse error, unexpected $ in [tu ścieżka do skryptu](24) : eval()'d code on line 1

no i oczywiście false jako rezultat walidacji za każdym razem...

Co robię źle?

Pozdrawiam,
k
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: 15.10.2025 - 07:59