Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Składowe obiektu -> nazwy pól formularza
Forum PHP.pl > Forum > PHP
vince
Witam,
mam problem z obiektami w php.
Tworzę sobie obiekt naapisanej przeze mnie klasy, który ma być używany przez wielostronnicową sesję. Chcę na jednej ze stron użyć formularza, aby nadać wartości składowym tego obiektu.
Próby nadania wartości np. tak:
  1. <?php
  2. class myClass {
  3. var $first;
  4. }
  5.  
  6. ?>

a w kodzie strony formularza:
  1. <?php
  2. $myObj = new myClass ();
  3. ?>
  4. <form ...>
  5. <input type=text name='myObj.first'>
  6. </form>

nie udały się.
Zaznaczam, że szukałam na różnych forach zorwiązania tego problemu. Niestety, znajdowałam tylko podobne tematy, ale nigdzie odpowiedzi na moje pytanie.

Będę wdzięczna za wszelką pomoc.
M4chu
Najpierw szukaj odpowiedzi w manualu, pozniej pytaj smile.gif

1. Jesli w pliku chcesz wykozystac cokolwiek z php nie mozesz zapomniec o znaczniku, jesli nie bedzie <? ?> to bedzie to poprostu ignorowane.
2. W php mamy 2 operatory obslugujace klasy: '->' stosowany z obiektem klasy (np $myObj->metoda(), $myObj->pole) oraz '::' z nazwami klas (bez tworzenia obiektu - statyczne wywolywanie metod czy pol) np myClass::$metoda(), myClass::$pole.

pozdro
bela
chyba pomyliło ci się z javaScriptem dry.gif
NuLL
Tak sie tego nie da zrobic sad.gif z tego co sie orietuje - raczej tak predzej
Kod
<input type='text' name="myObjData['first']" value='cos'>

Ja tego inaczej nie widze - poporstu musisz sobie to potem zamienic i tyle
militis
  1. <?php
  2.  
  3. class klasa
  4. {
  5. var $zmienna;
  6.  
  7.  (...)
  8. }
  9.  
  10. //teraz dwa rozwiazania:
  11. $bla=new klasa();
  12. echo('<form (...)>
  13. <input type=text name='.$bla->zmienna.'>
  14. </form>');
  15.  
  16. //albo
  17.  
  18. echo('<form (...)>
  19. <input type=text name='.klasa::$zmienna.'>
  20. </form>');
  21.  
  22.  
  23. ?>
dag
Cytat(militis @ 2004-10-24 11:40:16)
  1. <?php
  2.  
  3. class klasa
  4. {
  5. var $zmienna;
  6.  
  7.  (...)
  8. }
  9.  
  10. //teraz dwa rozwiazania:
  11. $bla=new klasa();
  12. echo('<form (...)>
  13. <input type=text name='.$bla->zmienna.'>
  14. </form>');
  15.  
  16. //albo
  17.  
  18. echo('<form (...)>
  19. <input type=text name='.klasa::$zmienna.'>
  20. </form>');
  21.  
  22.  
  23. ?>

  1. <?php
  2.  
  3. class klasa
  4. {
  5. var $zmienna;
  6.  
  7.  (...)
  8. }
  9.  
  10. //teraz dwa rozwiazania:
  11. $bla=new klasa();
  12. php?>
  13.  
  14. <form (...)>
  15. <input type=text name=\"<?=$bla->zmienna?>\">
  16. </form>
  17. ?>


<?= to to samo co <? echo
Vengeance
dag: moze i to samo ale od daaawna niezalecane. radze porzucic ten sposob ;]
vince
Dzięki za okazaną pomoc.
Niestety, zastosowałam sposoby podane przez daga i militis, ale nie dały one oczekiwanego efektu.
Oto kod:
1) definicja klasy:
  1. <?php
  2. class filtrWpisow {
  3. var $od_dnia;
  4. var $do_dnia;
  5.  
  6. function filtrWpisow () {
  7. $this->od_dnia = '000-00-00';
  8. $this->do_dnia = '000-00-00';
  9. }
  10. }
  11. ?>

2) użycie obiektu klasy w formularzu

  1. <form method=post action=\"filtrujWp.php\">
  2. <?php
  3. $filtr=new filtrWpisow ();
  4. echo &#092;"Data wprowadzenia &nbsp;\";
  5. echo ('od &nbsp;<INPUT type=edit style=\"font-size: 8pt;\" name='.$filtr->od_dnia.' value='.$filtr->od_dnia.' maxlength=10 style=\"width: 3cm;\">'); 
  6. echo ('do &nbsp;<INPUT type=edit style=\"font-size: 8pt;\" name='.$filtr->do_dnia.' value='.$filtr->do_dnia.' maxlength=10 style=\"width: 3cm;\">'); 
  7. ?>
  8. </form>


Kod wygenerowanej stronki formularza wygląda następująco:
  1. Data wprowadzenia &nbsp;
  2. od &nbsp;<INPUT type=edit style="font-size: 8pt;" name=0000-00-00 value=0000-00-00 maxlength=10 style="width: 3cm;">
  3. do &nbsp;<INPUT type=edit style="font-size: 8pt;" name=0000-00-00 value=0000-00-00 maxlength=10 style="width: 3cm;">


Nazwa zmiennej równa jest jej wartości. Jeśli w pliku filtrujWp.php będę chciala odwołać się do zmiennej z formularza, to będę musiała z góry znać jej wartość. np. $_POST['0000-00-00'] (zakładam, że wartości z pól formularza będą pamiętane w sesji i będzie wyświetlana ich aktualna wartość, a nie '0000-00-00' przy każdym wywołaniu formularza) dry.gif .

To już chyba lepiej nazwać pola po prostu 'od_dnia' i 'do_dnia' i w pliku do którego trafią zainicjować ich wartościami składowe klasy filtrWpisow...

Jeszcze raz dzięki za pomoc i czekam na dalsze komentarze smile.gif
dag
Cytat(Vengeance @ 2004-10-24 11:54:57)
dag: moze i to samo ale od daaawna niezalecane. radze porzucic ten sposob ;]

pomijając fakt mniejszej czytelności, i tego, że powinno się oddzielać kod php od reszty (html, css, itp.) to dlaczego nie zalecane (w stosunku do echo)?


Ja już od dawna nie mieszam kodu z html winksmiley.jpg więc radzę innym zrobić tak samo, naprawdę umila to życie ;-) no chyba, że jakieś proste skrypty.
anas
Hej.

Rozwiazanie jakie chcesz zastosowac nie jest zalecane, lepiej zrobic to poprostu tak (rozumiem ze chcesz nadac wartosc atrybutom obiektu utworzonego z Twojej klasy):

Mamy jakis formularz:

  1. <form ...>
  2. <input type=text name='jakiespole'>
  3. </form>


I teraz dobieramy sie do tego w php:

  1. <?php
  2.  
  3. class myClass 
  4. {
  5. var $first;
  6. }
  7.  
  8. $myObj = new myClass();
  9.  
  10. if(isset($_POST['jakiespole']))
  11. {
  12. $myObj->first = $_POST['jakiespole'];
  13. }
  14.  
  15. // przy zalozeniu ze dane z formularza przesylane sa metoda POST
  16. ?>


pozdrowka

anas
vince
Dzięki za pomoc smile.gif
Anas: zastosuję Twoje rozwiązanie.
Pisząc w ten sposób:
  1. <?php
  2. echo ('od &nbsp;<INPUT type=edit style=\"font-size: 8pt;\" name='.$filtr->od_dnia.' value='.$filtr->od_dnia.' maxlength=10 style=\"width: 3cm;\">');
  3. ?>

chciałam pójść na skróty i od razu załadować wartości z formularza do składowych klasy. Ale po dłuższym zastanowieniu się widzę, że nie ma co kombinować.

Jeszcze raz dzięki za pomoc smile.gif
Pozdro
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.