![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 3.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
witam
postaram się w miarę jasno napisać na czym polega mój problem, otórz mam funkcję
która wypisuje mi linki jako elementy listy, pobiera dane z bazy tak jak chce, w pewnym miejscu w pliku index.php mam:
problem polega na tym jak to sprytnie rozwiązać, żeby liczba case`ów obsługiwała liczbę kategorii znajdujących się w bazie, aby nie trzeba było wpisywać tego na sztywno? pzdr |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 4 Dołączył: 27.07.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
jeżeli używasz tego tylko do wyswietlania to przecież możesz wylistować z bazy podobnie jak masz wyzej
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Najprostszy i jednocześnie bardzo skuteczny sposób, to wyciągnięcie z bazy wszystkich kategorii, umieszczenie ich w tablicy tak, aby kluczem była np jej nazwa (lub identyfikator) a wartością nazwa akcji do wykonania (czyli to, co ma się znaleźć z konkretnym case). Taka tablice można zserializować i trzymać w cache.
Drugi sposób jest podobny, ale bazuje na zapytaniu do bazy danych o rekord konkretnej kategorii. W tym rekordzie w którymś z pól, powinna być zawarta informacja i tym, co ma wyświetlić lub nazwa funkcji do wywołania. Trzecie, najlepsze rozwiązanie to użycie jakiegoś frameworka i nie zawracanie sobie głowy takimi pierdołami ;] Pozdrawiam |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 3.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
zastosowanie funkcji in_array() nie działa tak jak powinno, działa natomiast
a gdy napiszę
to już nic nie wyskakuję, problem nadal pozostaję i rozszerza się o wywołanie odpowiednij akcji w zależności od $_GET['m'] chodzi mi o to by, pobierało $_GET['m'] sprawdzało czy taki element jest w tablicy jeśli tak to uruchamia funkcja($_GET['m']) jeśli nie to wypisuję brak pzdr |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ten kod nie moze dzialac ze wzgledu na linie 3 - kluczem tabeli $arrKategorie jest id a nie nazwa kategorii. Dlatego, tak jak Ci podalem wczesniej:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 3.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
to rozwiązanie nie działa, zastanawiam się czemu zawsze zwraca, że tego elementu nie ma w tablicy, skoro powinien tam być.
To nie działa:
a samo to działa:
dobrze by było choćby ze względu na bezpieczeństwo by pierwsza wersja działała pzdr |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
sprawdz, czy poprawnie tworzy Ci sie zmienna $arrKategorie: przed naszym pseudo-switchem dodaj
- jezeli ta tablica utworzyla sie poprawnie to powinna zawierac wszystkie nazwy kategorii, jakie masz w serwisie. A z tego, co piszesz ona gdzies Ci sie nie tworzy - moze najpierw sie do niej odwolujesz a pozniej wywolujesz wysw_kategorie();, ktora powinna zmienna $arrKategorie wypelnic? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 3.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
hmm ciężka sprawa, niby wszystko działa tak jak bym chciał ale zważszywszy na bezpieczeństwo nadal to niedziała
Array ( [1] => Koszulki [2] => Komplety [3] => Piżamy [4] => XXL [5] => Akcesoria [6] => Bbb [7] => Bddd [8] => Bivv [9] => Klapki [10] => Kozaki [11] => Botki [12] => Koturny [14] => Gaciee [15] => tom ) i gdy nasz 'switch' jest zakomentowany normalnie wyświetla mi produkty z danej kategorii a gdy go aktywuje nie działa |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A eval? Robisz string, w którym dopisujesz w pętli kolejne case i odpalasz to evalem.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 3.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
in_array() zostalo wprowadzone powyzej PHP4 i w tym przypadku na pewno powinno Ci dzialac. Zobacz, co zawiera zmienna $arrKategorie tuz przed sprawdzeniem in_array().
Na pewno nie popelniles jakiejs literowki? Bo z tego, co napisales wynika, ze zmienna $arrKategorie[$_GET['m']] masz pusta (tak powinno byc) a tablice $arrKategorie poprawnie wypelniona wartosciami. W tej sytuacji rozwiazanie, o ktorym dyskutowalismy powinno dzialac. Sprawdz:
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o to, że jeśli to miałoby być przez switch(), można to zrobić tak (chyba, że źle zrozumiałem problem):
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 20:53 |