Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nie działające sprawdzanie formularza - problem z tablicą w $_POST
Forum PHP.pl > Forum > Przedszkole
hyhyhy
Witam,

Piszę sobię klasę sprawdzającą formularz (z racji, że z OOP dopiero zaczynam, proszę się nie dziwić, że ten kod jakiś śmieszny może być) w każdym razie - mam wyraźne problem z odbiorem zmiennych $_POST. Najpierw kod czytał mi że $_POST[form[$x]] jest puste, gdy nei było i odwrotnie. Zamieniłem miejscami w instrukcji, ale teraz jest coś innego - nie chce mi zapisać jako value inputa zmienna z $_POST. Będę wdzięczny, jeżeli ktoś zerknie i mnie nakieruje, co trzebaby poprawić, chhyba, że to jest totalnie do d smile.gif

  1.  
  2. <?php
  3.  
  4. class formularz
  5. {
  6.  
  7. var $formularz = array();
  8.  
  9.  
  10.  
  11. private function createInput($type, $name, $value, $size, $style, $maxlength, $opis)
  12. {
  13. echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" size="'.$size.'" style="'.$style.'" maxlength="'.$maxlength.'" /> '.$opis;
  14. }
  15.  
  16.  
  17.  
  18.  
  19. function showForm()
  20. { echo '<form action=class_form1.php method=post>';
  21. for ($v=0;$v<count($this->formularz);$v++)
  22. {
  23. $elementy = explode (",",$this->formularz[$v]);
  24. $this->createInput($elementy[0],$elementy[1],$elementy[2],$elementy[3],$elementy[4],$elementy[5],$elementy[6]);
  25. echo '<br /><br />';
  26. }
  27. echo '</form>';
  28. }
  29.  
  30. public function spr()
  31. {
  32. for ($v=0;$v<(count($this->formularz)-2);$v++)
  33. {
  34. if (!empty($_POST["form[".$v."]"]))
  35. {
  36. return true;
  37. echo 'TRUE';
  38. }else{
  39. return false;
  40. echo 'FALSE';
  41. break;
  42. }
  43. }return true;
  44. echo 'TRUE';
  45. }
  46.  
  47.  
  48. public function wypiszGdyNiepelny()
  49. { echo '<form action=class_form1.php method=post>';
  50. print_r($_POST);
  51.  
  52. for ($i=0;$i<count($this->formularz);$i++)
  53. {
  54. echo '<font size="6">'.$i.'</font>';
  55. $elementy = explode (",",$this->formularz[$i]);
  56. if (empty($_POST["form[".$i."]"])) {
  57.  
  58. echo 'niepuste';
  59. echo $_POST["form[".$i."]"];
  60. $this->createInput($elementy[0],$elementy[1],$_POST["form[".$i."]"],$elementy[3],$elementy[4],$elementy[5],$elementy[6]);
  61. echo '<br /><br />';
  62.  
  63.  
  64. }else{
  65.  
  66. echo 'puste';
  67. $this->createInput($elementy[0],$elementy[1],' UZUPELNIJ ',$elementy[3],'background-color: #F09E9E;',$elementy[5],$elementy[6]);
  68. echo 'Proszę uzupełnić to pole.<br /><br />';
  69.  
  70. }
  71. }
  72. echo '</form>';
  73. }
  74. } //END CLASS
  75.  
  76. $zarejestruj = new formularz;
  77. $zarejestruj->formularz[0] = 'text, form[0], tu wpisz imie, 60, , 60, Tu wpisz swoje imie';
  78. $zarejestruj->formularz[1] = 'text, form[1], tu wpisz nazwisko, 60, , 60, Tu wpisz swoje nazwisko';
  79. $zarejestruj->formularz[2] = 'hidden, form[2], wyslano, , , , ,';
  80. $zarejestruj->formularz[3] = 'submit, form[3], Wyślij!, , , , ,';
  81.  
  82.  
  83.  
  84. if (!empty($_POST))
  85. {
  86.  
  87. $zarejestruj->spr();
  88. if ($zarejestruj->spr() == true) { echo 'Zapis do bazy, FENKS'; }
  89. else{
  90. $zarejestruj->wypiszGdyNiepelny();
  91. }
  92. }else{
  93. $zarejestruj->showForm();
  94. }
  95.  
  96.  
  97.  
  98.  
  99.  
  100. ?>
nospor
Cytat
z racji, że z OOP dopiero zaczynam, proszę się nie dziwić, że ten kod jakiś śmieszny może być
Bez urazy, ale śmiem twierdzić, że dopiero za php się zabierasz wink.gif

Dałeś:
print_r($_POST);
super - napisz proszę co to zwraca. Bo w teorii taka konstrukcja: $_POST[form[$x]] nie ma prawa bytu.
gac3k
poczytaj też o pętli foreach, bo ona jednak po coś została stworzona.
hyhyhy
racja, zapomniałem
print_r($_POST):
Array ( [form] => Array ( [0] => tu wpisz imie [1] => tu wpisz nazwisko [2] => wyslano [3] => Wyślij! ) )



Generalnie dzisiaj chwilę posiedziałem, i problem sprowadza mi się do funkcji, która sie nie wykonuje.


  1. public function spr()
  2. {
  3. for ($v=0;$v<(count($this->formularz)-2);$v++)
  4. {
  5. if (!empty($_POST["form[".$v."]"]))
  6. {
  7. return true;
  8. echo 'TRUE';
  9. }else{
  10. return false;
  11. echo 'FALSE';
  12. break;
  13. }
  14. }return true;
  15. echo 'TRUE';
  16. }


Cytat
Bo w teorii taka konstrukcja: $_POST[form[$x]] nie ma prawa bytu.

Sczerze mówiąc, pierwszy raz pojawił mi się taki pomysł, żeby w post przesyłać całą tablicę. Więć problem jest w tym, że PHP nie obsługuje takiego rozwiązania?
nospor
php obsługuje takie rozwiązanie ale nie obsługuje głupotek które piszesz wink.gif
$_POST[form[$x]] - to jest źle
$_POST[form][$x] - to jest dobrze, to jest tablica wielowymiarowa
jak widać po print_r($_POST) dostajesz tablicę wielowymiarową więc do pól dopierasz się tak:
$_POST['form'][0], $_POST['form'][1],....

Polecam zapoznanie się z podstawami:
http://pl.php.net/manual/pl/language.types.array.php
hyhyhy
Fak, że też o tym nie pomyślałem, no ale mózg wyprany przez sesję widocznie słabo działa... dzięki wielkie!
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.