Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wykonanie dwóch pętli foreach i for
Czapla
post 20.10.2008, 17:21:15
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


Piszę prostą klasę do obsługi widoku. Chodzi oto że po wrzuceniu 400 plików html czy php, zostaną wygenerowane [na podstawie ścieżki] linki.
Ścieżki przerobię potem na nazwy zakładek za pomocą wyrażeń regularnych. Każdy link posiada swój wygenerowany numer. Stroan jest wyświetlana za pomocą tego parametru w case'ie.

Narazie napisałem tak, wersja wstępna wymaga optymalizacji smile.gif
  1. <?php
  2. class tworzWidok
  3. {
  4.  function pokazMenu()
  5.   {
  6.    foreach (glob("./strona/*.php") as $np_nazwa_pliku)
  7.    {
  8.     $ls_liczba_stron = count($np_nazwa_pliku);
  9.      for ($i = 1; $i <= $ls_liczba_stron; $i++)
  10.      {
  11.        print '<a href=index.php?strona='.$i.'>'.$np_nazwa_pliku.'</a>';
  12.      }
  13.    }
  14.  }
  15.  
  16.  function pokazStrona($s_strona)
  17.   {
  18.    $ls_liczba_stron = count(glob("./strona/*.php"));
  19.    for ($j = 1; $j <= ls_liczba_stron; $j++)
  20.     {
  21.      switch ($s_strona) {
  22.        case $j:
  23.         include ("./strona/".$s_strona.".php");
  24.         break;
  25.      
  26.        //default:
  27.        //print "Brak strony o podanej nazwie";
  28.       }
  29.     }
  30.   }
  31. }
  32. ?>


Problem leży w metodzie tworzWidok rozbijam tablice z funkcji glob na części i zapisuje do zmiennej. Zliczam element z tablicy za pomocą count() zapisuje do innej zmiennej i wykorzystuje w pętli for aby wygenerować nr w przedziale od 1 do n dla każdego linku. Problem jest taki że o ile wygenerowane zostają prawidłowo nawy do poszczególnych plików to już ścieżka zawsze posiada numer 1. Każdy z linków ma adres: localhost/index.php?strona=1 W jaki sposób zrobić aby każdy z linków miał swój wygenerowany numer?

Mam nadzieje że dobrze się wysłowiłem.

Pozdrawiam

Ten post edytował Czapla 20.10.2008, 17:23:50


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
hiszpanespaniol
post 20.10.2008, 18:10:51
Post #2





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


z tego co widzę, to kazdy plik zeruje Ci wartość np_nazwa_pliku.

chyba powinno być tak:

  1. <?php
  2. function pokazMenu()
  3.   {
  4.   $np_nazwa_pliku = array();
  5.    foreach (glob("./strona/*.php") as $np)
  6.    {
  7.        $np_nazwa_pliku[] = $np;
  8.    }
  9.    $ls_liczba_stron = count($np_nazwa_pliku);
  10.    for ($i = 1; $i <= $ls_liczba_stron; $i++)
  11.        {
  12.            print '<a href=index.php?strona='.$i.'>'.$np_nazwa_pliku.'</a>';
  13.        }
  14.  }
  15. ?>


coś w tym stylu na pewo


--------------------
Go to the top of the page
+Quote Post
Czapla
post 20.10.2008, 18:44:23
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


Tablica jest dobra

print_r()
  1. <?php
  2. Array ( [0] => ./strona/1.php [1] => ./strona/2.php [2] => ./strona/3.php )
  3. ?>


var_dump()
  1. <?php
  2. array(3) { [0]=> string(14) "./strona/1.php" [1]=> string(14) "./strona/2.php" [2]=> string(14) "./strona/3.php" }
  3. ?>


ale teraz wyświetla mi na ekranie zamiast nazw linków słowa "Array"

Pozdrawiam


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
hiszpanespaniol
post 20.10.2008, 18:51:31
Post #4





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


  1. <?php
  2. print '<a href=index.php?strona='.$i.'>'.$np_nazwa_pliku[$i].'</a>';
  3. ?>


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 08:41