Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Zasięg zmiennych [$_GET]
Forum PHP.pl > Forum > Przedszkole
jenova
Witam.
Pytanie możliwe, że banalne, jakkolwiek nie znalazłem na nie odpowiedzi. Mój problem polega na 'zerowaniu zagnieżdżonej' macierzy. Wyświetlam menu, po kliknięciu przesyłam wartość np. ?id=1 do "index.php" i w <div> wyświetlam kod z "graphics.php" [ <- generuje w nim listę z linkami do stron w podanym katalogu].
Kod: index.php.
  1. <!-- menu -->
  2. <ul class="main_menu">
  3. <li><a href="?id=1">Graphics</a></li>
  4. </ul>
  5. <!-- end menu-->

  1. <div>
  2. <?php
  3. $idg = $_GET['idg']; //graphics.php linki do artykułów
  4. $id = $_GET['id']; //linki do 'generatorów' stron
  5.    $fileList = array();
  6.    switch($id){
  7.        case"1":include("graphics.php");break;
  8.    }    
  9.    if($fileList[$idg] != null){
  10.        include 'articles/'.$fileList[$idg];
  11.    }
  12.    var_dump($fileList); //dla testu
  13. ?></div>


Listuje katalog i generuje listę z linkami do artykułów [pliki .php] w podanym katalogu. Dla każdego pliku wygenerowany jest ?idg=$l (np. ?idg=0).
Kod: graphics.php.
  1. <?php
  2.  global $fileList; //nazwy plików z artami
  3.  ...
  4.  if($line == 3) echo '<li><a href="?idg='.$l.'">'.$buffer.'</a></li>'; // generuje linki dla plików
  5. ?>

W tym momencie mam w "index.php" -> <div> include graphics.php</div> i po kliknięciu na link z tego <div'a> chcę "includować" w nim daną stronę, o odpowiednim $idg (np. <div> include artykul1.php</div>). Niestety w momencie gdy klikam na link macierz $fileList się zeruje.
Robię to w tak 'zagmatwany sposób' ponieważ chcę automatycznie generować listę tych linków na bazie ilości plików (artykułów) w danym katalogu.
Testując var_dump($fileList) macierz jest zerowa w "index.php", po kliknięciu na link do "graphics.php" zostaje wypełniona, po kliknięciu na linka z <div'a> znowu zeruje się (include oczywiście zwraca błąd, że dany 'plik' 'articles/' nie może zostać otworzony).

Z góry dziękuję za wszelkie sugestie, linki itp.
Z poważaniem
vokiel
Trochę to zagmatwałeś winksmiley.jpg
1. index.php generuje linki z $_GET['id'], po wybraniu 1 dołącza plik graphics.php
2. graphics.php generuje linki z $_GET['idg'], które są linkami do artykułów
tak?
  1. <?php
  2. $fileList = array(); // to możesz wywalić
  3. //graphic.php
  4. if($line == 3) echo '<li><a href="?id=1&idg='.$l.'">'.$buffer.'</a></li>'; // generuje linki dla plików, wraz z kategorią
  5. // w linku musisz też przekazywać samo id, żeby skrypt dołączył plik graphic.php
  6. ?>
jenova
Dokładnie tak jak napisałeś smile.gif.
Chciałem opisać problem najdokładniej jak tylko potrafiłem, stąd to zagmatwanie smile.gif
Twoje rozwiązanie działa, tylko problem w tym, że chcę 'podmienić' zawartość tego <div'a>. Tzn. postępując według Twojej wskazówki lista plików mi nie znika, a zawartość poszczególnego artykułu jest dodawana do <div'a>.

Natomiast nie wiem, czemu w momencie kliknięcia na linka z $idg (artykuły) wartość $fileList się zeruje? Próbowałem podmienić $id na wskazujący na pusty plik, lecz objawy takie same jak opisałem wcześniej.

Może istnieje jakieś alternatywne rozwiązanie?

PS. masz/macie może jakieś dobre opracowanie wpływu zmiennych i ich relacje pomiędzy różnymi plikami php. (php man jest mało pomocny, albo po prostu źle szukam)

Pozdrawiam
vokiel
Heh, no to znów troche zagmatwałeś ;-)
Pokaż jakiś link do strony, rozrysuj co gdzie ma się pojawiać, w jakiej kolejności. Bo teraz to na prawdę jest cięzko 'załapać' co gdzie ma się podmieniać, co ma być widoczne, a co nie.
Jakiego div'a ? Div'a z menu, czy diva z listą generowaną przez graphic.php?
Jeśli to drugie to tak:
  1. <?php
  2. $fileList = array(); // mam nadzieje, że masz to gdzieś poza graphics.php
  3. $idsList = array(1=>"graphics.php");
  4. $idg = intval($_GET['idg']);
  5. $id = intval($_GET['id']);
  6. if ($idg){
  7.    if($fileList[$idg] != null){
  8.        include 'articles/'.$fileList[$idg];
  9.    }
  10. }else if ($id){
  11.    include  $idsList[$id];
  12. }else{
  13.   echo 'Nic nie wybrałeś, wybierz chociaż coś z głównego menu';
  14. }
  15. ?>
jenova
Witam.
Cytat
Jakiego div'a ? Div'a z menu, czy diva z listą generowaną przez graphic.php?

Wygląda to tak:
1. id - link od menu, do 'glownych' podstron
2. idg - link do konkretnych artow. Po kliknieciu chce aby zawartosc tej strony wyswietlila sie w miejscu gdzie obecnie jest lista linkow [czyli <div>]


Całość kodu do "includowania" trzymam w "index.php" w owym div'ie gdzie chcę odpowiednie strony wyświetlić.
Kod który podałeś w poprzednim poście nie działa w ten sposób jak chciałbym. Tzn. dalej pozostaje lista z np. "graphics.php" a zawartość poszczególnych artykułów jest dodawana do <div'a>.

Dziękuję za wsparcie z Twojej strony.
Pozdrowienia

[EDIT]
Znalazłem błąd w moim rozumowaniu [odrobina snu i posty vokiel'a w głównej mierze przyczyniły się do tego smile.gif ]. Powinienem od razu zapytać [lub, co jest oczywiste, w pierwszej kolejności przeczytać] o czas życia zmiennych w php (nie mam pojęcia jak coś tak oczywistego umknęło mej uwadze ^^'''). A mój "problem" wynika z tego, iż zmienne odpowiedzialne za generowania url'i do artykułów generowane są dla $id=1/2 [include graphics.php] więc oczywiście są one zerowe jeśli ich nie wywołam.
Eh... bycie początkującym [ekhm... noobem dry.gif ] zawsze jest ciężkie. Jeszcze raz dziękuję.
Temat można zamknąć.
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.