Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dane o stronach
Forum PHP.pl > Forum > PHP
Asmox
Postanowiłem stworzyć pewną "listę" stron, które są na mojej stronie i za pomocą pewnej funkcji sprawdzać całą tę listę i wybierać z niej odpowiednie adresy na ten przykład. Funkcja razem z tą "listą" wygląda tak:
  1. <?php
  2. $strony = array(
  3. /*0*/'wprowadzenie',
  4. /*1*/'znaczniki',
  5. );
  6. $lekcje = array(
  7. /*0*/1,
  8. /*1*/2,
  9. );
  10. $adresy = array(
  11. /*0*/$MASTER_ROOT.'kursy-online/kurs-html/wprowadzenie.html',
  12. /*1*/$MASTER_ROOT.'kursy-online/kurs-html/znaczniki.html',
  13. );
  14. $kategorie = array(
  15. /*0*/'kurs-html',
  16. /*1*/'kurs-html',
  17. );
  18. $edycje = array(
  19. /*0*/'04-03-2009',
  20. /*1*/'04-03-2009',
  21. );
  22. function getpage ($id) {
  23. $strony = $GLOBALS['strony'];
  24. $lekcje = $GLOBALS['lekcje'];
  25. $adresy = $GLOBALS['adresy'];
  26. $kategorie = $GLOBALS['kategorie'];
  27. $edycje = $GLOBALS['edycje'];
  28.  
  29. $tablica = array(
  30. "strona" => $strony[$id],
  31. "lekcja" => $lekcje[$id],
  32. "adres" => $adresy[$id],
  33. "kategoria" => $kategorie[$id],
  34. "last_mod" => $edycje[$id],
  35. );
  36. return $tablica;
  37. }
  38. ?>

Doszedłem do wniosku, że niestety przy większej liczbie stron będzie się w tym można nieźle pogubić. Głównie dlatego, że łatwo mogą się pomylić numery wierszy, a przy okazji zależy mi, żeby strony nie miały przetasowanych kategorii. Czy macie jakiś pomysł, jakby można było zastąpić tę listę czymś innym?
Dobrze by było, aby nie używać do tego celu baz danych. Może klasy by były odpowiednie?
erix
A tablica wielowymiarowa?

  1. <?php
  2. $linki = array(
  3.   0=>array('url'=>'asd', 'kategoria'=>'asdasdasdasd' ...)
  4. )
  5. ?>


Ale baza byłaby tu najlepsza.
Kildyt
Ja już się pogubiłem w kodzie bez tabulacji.
Zrób tak jak erix.
Ja osobiście radziłbym zastosować w skrypcie podstawy programowania obiektowego. Globale to IMHO niedobra rzecz do takiego skryptu.
Nie stwarzaj niepotrzebnych zmiennych. Tylko męczysz parser.

PS Zdecydowanie, baza najlepsza.
Asmox
Ok, zrobiłem te rzeczy w bazie. Jednak czasami muszę je jakoś wyciągać przypisując je do zmiennych. Zrobiłem taką funkcję:
  1. <?php
  2. function kursy_z_kursu($kurs) {
  3. $query = ("SELECT * FROM baza_linki WHERE KATEGORIA='$kurs';");
  4. $make = mysql_query($query);
  5.  
  6. $i = 0;
  7. while($wynik = mysql_fetch_row($make)){
  8. ${$kurs . $i} = new kurs ($wynik[1], $wynik[2], $wynik[3], $wynik[4], $wynik[5]);
  9. $GLOBALS[{$kurs . $i}] //Wywala błąd Parse error: syntax error, unexpected '{', expecting ']' in D:WebServhttpdworld_webphpmwbd.php on line 26
  10. }
  11. }
  12.  
  13. kursy_z_kursu("HTML");
  14. $HTML0->writeall();
  15. ?>

Przy próbie wykonania ostatniej linijki zwracany jest błąd - to chyba normalne, ponieważ zmienne z wnętrza funkcji nie są dostępne poza nią. Czy macie jakiś sposób na ominięcie tego problemu? Najlepiej, jeśli dałoby się bez użycia zmiennych globalnych. Oczywiście jeśli nie ma innego wyjścia, to niech będą te zmienne globalne. Tylko nie wiem jak je zrobić
phpion
return?
Asmox
Niestety nie chodzi mi tutaj o return, ponieważ funkcja ma sama z siebie utworzyć te zmienne. Jak na pewno zauważyłeś, jest tam pętla, która ma za zadanie utworzyć kolejne zmienne. Chciałbym aby funkcja po ich zrobieniu "upubliczniła" je.
@EDIT: PHPION, jeżeli return ma taką możliwość to napisz, ale mi się wydaje, że chyba nie.
Kildyt
Słyszałeś kiedykolwiek słowo tabulacja?

Po co Ci $i = 0? Nawet tej wartości nie zwiększasz. Staraj się używasz angielskich słów w nazwach funkcji.

Szczerze, to nie rozumiem za bardzo Twojego ostatniego problemu.

  1. <?php
  2. $GLOBALS[{$kurs . $i}]
  3. ?>
Co to w ogóle za kod? Gdzie średnik, co on w ogóle oznacza?


Po co chcesz upubliczniać zmienne? Do czego one Ci są potrzebne?
phpion
Cytat(Asmox @ 5.03.2009, 23:54:38 ) *
@EDIT: PHPION, jeżeli return ma taką możliwość to napisz, ale mi się wydaje, że chyba nie.

W funkcji zapisujesz dane do tablicy, którą na końcu zwracasz (można powiedzieć, że "upubliczniasz" dane).
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.