Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problemy z funkcjami i tablicami
The Night Shadow
post
Post #1





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


Mam funkcję taką:

  1. <?php
  2. function option($rodzaj_opcji, $nazwa_opcji, $zmienna_opcji, $tresci_opcji)
  3. {
  4. }
  5. ?>


Zmienna $opcje przyjmuje za swą wartość tablicę:

  1. <?php
  2. $opcje = array(
  3. 1 => 'loginu',
  4. 2 => 'adresu e-mail',
  5. 3 => 'numeru Gadu-Gadu',
  6. 4 => 'nicku Tlen',
  7. 5 => 'rangi',
  8. 6 => 'statusu',
  9. 7 => 'daty założenia/aktywacji konta',
  10. 8 => 'daty ostatniego logowania',
  11. 9 => 'adresu IP',
  12. );
  13. ?>


Dlaczego jeśli za $tresci_opcji w wywoływaniu funkcji wpiszę:

  1. <?php
  2. $opcje
  3. ?>


Nie działa pętla wewnątrz funkcji wyglądająca tak:

  1. <?php
  2. $zwroc .= '<select name="'.$nazwa_opcji.'">';
  3. $i=1;
  4. foreach($tresci_opcji as $nazwa)
  5. {
  6. $zwroc .= '<option "'; 
  7. if ($zmienna_opcji==$nazwa['$i']) 
  8. { 
  9. $zwroc .= 'selected="selected"'; 
  10. } 
  11. $zwroc .= '>"'.$nazwa['$i'].'"</option>';
  12. $i++;
  13. }
  14. $zwroc .= '</select>';
  15. return $zwroc;
  16. ?>


?
Go to the top of the page
+Quote Post
Kuziu
post
Post #2





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Wewnątrz foreach zmiennej $nazwa powinieneś używać już bez kluczy/indexów przecież forach wyciąga jedną wartość z danej komórki tablicy i przypisuje ją do zmiennej która w tym wypadku jest tekstową więc $nazwa nie jest tablicą.

Linia 11
  1. <?php
  2. $zwroc .= '>"' . $nazwa . '"</option>';
  3. ?>


W 7 masz ten sam błąd.

Dodatkowo nawet gdyby to była tablica to przecież zmienne w apostrofach nie są parsowane więc $nazwa['$i'] nie da żadanego efektu a jedynie $nazwa[$i];

Pozdrawiam

Ten post edytował Kuziu 19.03.2006, 17:09:52
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #3





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


No dobra foreach przypisuje jedną wartość, a co z tablicą typu (chodzi o wykorzystywanie w pętli w jednym miejscu nazwy, a w drugim daty itd.:

zmienna 1 - nazwa data info
zmienna 2 - nazwa data info

Jak mam ją wykorzystać w pętli?

Poza tym jak to $nazwa niejest tablicą skoro tej zmiennej jest przypisana tablica?

Ten post edytował The Night Shadow 20.03.2006, 17:12:05
Go to the top of the page
+Quote Post
Kuziu
post
Post #4





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


$nazwa to nie tablica bo jest jej przypisana 1 komórka tablicy w Twoim wypadki zmienna tekstowa. Gdybyś miał tablicę w tablicy to tak a tutaj masz tablicę stringów i foreach wyciąga Ci kolejne elementy tej tablicy czyli stringi.
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #5





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


  1. <?php
  2. function option($rodzaj_opcji, $nazwa_opcji, $zmienna_opcji, $tresci_opcji)       
  3.     {
  4.         if ($rodzaj==1)
  5.         {
  6.             $zwroc .= '<select name="'.$nazwa_opcji.'">';
  7.             foreach($tresci_opcji as $nazwa)
  8.             {
  9.                 $zwroc .= '<option "'; 
  10.                 if ($zmienna_opcji==$nazwa) 
  11.                 { 
  12.                     $zwroc .= 'selected="selected"'; 
  13.                 } 
  14.                 $zwroc .= '>"'.$nazwa.'"</option>';
  15.             }
  16.             $zwroc .= '</select>';
  17.             return $zwroc;
  18.         }
  19.     }
  20. ?>


Zrobiłem tak i to:

  1. <?php
  2. option('1', 'wedlug', $sortowane_wedlug, $opcje);
  3. ?>


nie działa... dlaczego?

Wcześniej jest to:

  1. <?php
  2. $opcje = array(
  3. 1 => 'loginu',
  4. 2 => 'adresu e-mail',
  5. 3 => 'numeru Gadu-Gadu',
  6. 4 => 'nicku Tlen',
  7. 5 => 'rangi',
  8. 6 => 'statusu',
  9. 7 => 'daty założenia/aktywacji konta',
  10. 8 => 'daty ostatniego logowania',
  11. 9 => 'adresu IP',
  12. );
  13. ?>


I pytanie podpięte... czyli gdyby do 1 podpiąć kolejną tablicę wtedy kluczeindexy były by potrzebne i w jaki sposób należałoby je zaznaczać?

Zmienna $sortowanie_wedlug przyjmuje domyślnie wartość 'login' (z pewnością ni jest pusta)

Ten post edytował The Night Shadow 20.03.2006, 17:29:46
Go to the top of the page
+Quote Post
Kuziu
post
Post #6





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Używasz czasem echo do wyszukiwania błędów ?

Po 1 wstaw sobie echo('a'); po 5 linii ... co zauważysz ... nic więc:
  1. <?php
  2. if ($rodzaj==1)
  3. ?>

Nie działa

Wtedy się zastanawiasz dlaczego i patrzysz że jako parametr wchodzi $rodzaj_opcji i już znasz odpowiedź.

Teraz wszedzie wchodzi dobrze...ale nadal nic nie widać dlaczego ?

Bo masz return $zwroc a nie echo więc albo echo($zwroc) albo

  1. <?php
  2. echo(option('1', 'wedlug', $sortowane_wedlug, $opcje));
  3. ?>
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #7





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


Tak:

  1. <?php
  2. echo(option('1', 'wedlug', $sortowane_wedlug, $opcje));
  3. ?>


też próbowałem... w tej funkcji jest zwróć ponieważ całośc jest dodawana do formularza... mimo echo nadal nie działa... co robić?
Go to the top of the page
+Quote Post
Kuziu
post
Post #8





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Przeczytaj jeszcze raz początek mojego posta (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !!!
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #9





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


Czytałem przecież(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !! ;- pkrzykiem wiele tu nie zdziałasz ;- p szczególnie jeśli chodzi o uświadamianie początkujących.

Co do wyszukiwania błędów zapomocą echo... Ja jestem w tym raczkującym. Wszystko jest przecież w porządku, pierwszt arrgument jest podawany, drugi również, trzeci (za pomocą echo sprawzdałem) przyjmuje wartość login, czwarty to ta tabilca, która przecież podług tego co podawano mi na forum jest podana prawdiłowo (nie wiem na jakiej zasadzie echo wyświetla tablicę - mi wpisało array...) Ot tyle na temat. W samej funkcji przecież podług manuala i tego co sam pisałeś jest to wszystko napisane poprawnie więc nierozumiem.

Może nie tyle nie czytam, co ze względu na to, że jestem początkującym czegoś nie widzę, bo nie mam wystarczającego doświadczenia?
Go to the top of the page
+Quote Post
Kuziu
post
Post #10





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Dokładnie napisałem do którego miejsca dochodzi a gdzie przestaje działać


$rodzaj != $rodzaj_opcji

Echem sprawdzasz do którego miejsca kod działa CI dobrze.
Jeśli nie wchodzi do IF'a mimo że podajesz mu 1 więc jest dobrze to coś nie tak musi być ze zmiennymi i jest.

Masz w definicji funkcji argument $rodzaj_opcji a w if'ie $rodzaj.

Ot i cała prawda.
A krzyczę bo nie lubię jak ktoś czeka na gotowe bo nie chce mu się pokombinować 5 minut, mimo że ktoś mu podpowiada bardzo blisko w której linii ma błąd.

Ale proszę tak przecież bedzie najprościej:

  1. <?php
  2.  
  3. function option($rodzaj_opcji, $nazwa_opcji, $zmienna_opcji, $tresci_opcji)  
  4. {
  5. if ($rodzaj_opcji==1){
  6. $zwroc .= '<select name="'.$nazwa_opcji.'">';
  7. foreach($tresci_opcji as $nazwa)
  8. {
  9.  
  10. $zwroc .= '<option "'; 
  11. if ($zmienna_opcji==$nazwa) 
  12. { 
  13. $zwroc .= 'selected="selected"'; 
  14. } 
  15. $zwroc .= '>"'.$nazwa.'"</option>';
  16. }
  17. $zwroc .= '</select>';
  18. return $zwroc;
  19. }
  20. }
  21.  
  22.  
  23. $opcje = array(
  24. 1 => 'loginu',
  25. 2 => 'adresu e-mail',
  26. 3 => 'numeru Gadu-Gadu',
  27. 4 => 'nicku Tlen',
  28. 5 => 'rangi',
  29. 6 => 'statusu',
  30. 7 => 'daty założenia/aktywacji konta',
  31. 8 => 'daty ostatniego logowania',
  32. 9 => 'adresu IP',
  33. );
  34. echo(option('1', 'wedlug', $sortowane_wedlug, $opcje));
  35.  
  36. ?>


Ten post edytował Kuziu 20.03.2006, 18:17:14
Go to the top of the page
+Quote Post

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: 22.08.2025 - 13:23