Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dane o stronach
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


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?

Ten post edytował Asmox 4.03.2009, 18:02:45


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A tablica wielowymiarowa?

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


Ale baza byłaby tu najlepsza.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Kildyt
post
Post #3





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


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.

Ten post edytował Kildyt 4.03.2009, 18:21:53


--------------------
Go to the top of the page
+Quote Post
Asmox
post
Post #4





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


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ć


--------------------
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




return?
Go to the top of the page
+Quote Post
Asmox
post
Post #6





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


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.


--------------------
Go to the top of the page
+Quote Post
Kildyt
post
Post #7





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


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?

Ten post edytował Kildyt 5.03.2009, 21:56:46


--------------------
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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).
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 Aktualny czas: 21.08.2025 - 00:27