![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Wiem, że było masę razy, ale ta wyświetlająca petla while rozbija wszystkie moje próby powodując brak pomysłu na wykorzystanie jej do dopisywania zmiennych... Pomóżcie jakoś.... może jakaś podpowiedź?
Oto fragment skryptu:
I jeszcze jedno pytanie... wiem, że są tam potrzebne dwie zmienne sterujące $od_ktorego i $co_ile. Chciałbym, żeby te i inne zmienne sterujące stroną były gdzieś zapisywane... Jak Wy sobie z tym radzicie? 1) Zapisujecie je normalnie w skypcie, a potem przy zmianie w nim grzebiecie? Trochę to chyba nie teges, bo czasem można zrobić filtrowanie np. za pomocą combo i zmienna taka musi się zmieniać... czyli 2) Zapisywanie w pliku *.txt... też mnie nie przekonuje, nie po to używam bazy, żeby bawić się jeszcze w pliki tekstowe 3) W osobnej tabeli MySQL... No OK ale zawsze ta tabela będzie miała 1 (słownie: jeden) wiersz! (Chyba, że ktoś sobie pozapisuje konfiguracje rózne). Jak sobie z tym radzicie? Wchodzę właśnie w ten etap strony i nie wiem jak rozwiązać ten temat (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) z góry Thx ogromne Ten post edytował Fibolg 6.09.2004, 11:08:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
wiem coś w stylu:
ale chodzi o to, że trzeba tam zastosować pętlę, która będzie sprawdzała ilość wierszy itd. a mam juz jednego WHILE, który miesza mi szyki... gdzie ją zastosować? (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) =============================================== AAA ludzie pomóżcie coś bo dostaję białej gorączki (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Nie działa mi (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował Fibolg 6.09.2004, 12:52:46 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 21.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Nie możesz zrobić tego po prostu tak:
a zliczyć wiersze tego zapytanie mozesz przez uzycie na resource mysql_num_rows. Jezeli chcesz policzyć wszystkich userów to
i fetch'em wyciągasz ilość, także jako tablica zapisane. Poza tym wewnątrz while'a masz chyba niepotrzebne zapytania. Zauważ ze dla kazdego logowania bedziesz mial dodatkowe 2 zapytania co raczej nie jest wydajne Spróbuj przed pentlą wykonać te dwa zapytania umieszczając wszystko w tablicy asocjacyjnej gdzie kluczem jest login. Później w while sprawdzasz tylko:
tak mozna zrobić dla jednego i drugiego zapytania sprowadzając je do tablic które php szybciej przetwarza niż sql pobiera. Z tymi zmiennymi sterującymi to nie bardzo wiem o co chodzi... chodzi ci o jakies porcjowanie? ale na podstawie czego? Troszeczke wiecej opisz czego się spodziewasz to postaram sie w miarę możliwości odpowiedzieć. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Cytat Poza tym wewnątrz while'a masz chyba niepotrzebne zapytania Są potrzebne wszystkie. W petli While musi być za każdym wykonaniem jej nowe odwołanie do zapytania. Ohh jutro się jeszcze pomęczę, ale nie mogę znaleźć jak na złość nawet jakiegoś porządnego przykładu w necie (tak to jest - jak człowiek nie szuka to się tego penta na pęczki). (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) Cytat Z tymi zmiennymi sterującymi to nie bardzo wiem o co chodzi... Hmm wiem, że namieszałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ciężko mi zawsze powiedzieć o co mi chodzi. Dajmy na to masz sobie wyświetloną tablicę userów. U góry masz selecta, gdzie wybierasz jak ma filtrować... Wg Loginu, grupy, daty logowania... Wszystko ładnie, pięknie... ale gdzie zapisujesz te możliwości? W pliku txt, bazie? Czy użyć zwykłego Case? Jak tak, to gdzie i jak zapisać co akurat wybrał... Oh zakręciłem się już sam (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Chodzi ogólnie o wszystkie ustawienia strony, które zmieniać może sam user np w spoosobie jej wyświetlania. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 22.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Fibolg @ 2004-09-06 21:31:52) Są potrzebne wszystkie. W petli While musi być za każdym wykonaniem jej nowe odwołanie do zapytania. Zaryzykuje stwierdzenie, że dało by się w jednym zapytaniu wyciągnąć wszystko co potrzeba. Być może wycofam sie z tego. Podaj dokładnie co chcesz uzyskać oraz struktury tabel. Dodatkowo jak podajesz fragmenty swoich skryptów to usuwaj takie rzeczy jak:
To całe formatowanie jest mało czytelne. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 21.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Są potrzebne? no to patrz:
zapytania:
Teraz mamy 3 tablice: $loginy, $status, $barwa. Zamiast wykonywać za kazdym razem po 2 dodatkowe zapytania dla kazdego loginu przeszukaj tablice pod kontem odpowiedniej zmiennej.
Teraz masz dla kazdego loginu ustawione zmienne $statys_logowania i $kolor. Oczywiescie wewnątrz pętli foreach( $loginy as $login ) musisz umieścić kod tabelki i zmienne ww wyświetlać w odpowiednim miejscu danego rzędu. Takie rozwiązanie jest dużo szybsze i na pewno lepsze, jeżeli chcesz uzyc LIMIT to pamietaj ze tylko na tabeli logowanie inaczej wyjdą głupoty. PS: - po co tutaj tabela logowanie? Nie jestem pewien ale masz chyba troszkę burdel w relacji. Jeżeli pokażesz strukturę tych tabelek z krótkim opisem co w nich przechowujesz to powiem dlaczego mi się tak wydawalo. Od razu mówię, ze nie sprawdzalem tego czy to dziala, pisalem z glowy z ww. powodu (nie znam struktury tabelki) więc pewnie odrobinkę będziesz musial może to zmodyfikować. ale ogólna zasada jest pokazana. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Pianandrill, dzięki za zainteresowanie tematem... Wiesz co do burdelu to rzeczywiście - mam nie tylko w skryptach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wiesz dopiero zaczynam zajmować się php tak na dobre i wziąłem się za skrypt logowania, który będzie odpowiadał moim potrzebom. Dlatego mam tabele jak w skrypcie:
Kilka słów wyjaśnienia: tabela logowanie to tablica userów. W głównym zamyśle to admin ma jedynie możliwość zakładania kont userów, którzy podzieleni będą na grupy. Np grupa Administrator będzie miała dostęp do wszystkich opcji, grupa Użytkownik, do określonych, moderator do określonych... Wszystko później chcę oprzeć na sesjach. Grupę usera sprawdza pole kontrolne w tablicy logowanie. Za pomocą relacji jeden - wielu sprawdzam jaka to grupa, zaś jeden do wielu grupa/kolor sprawdzam jej kolor... i tyle. Co do porządku skryptu, to narazie jestem na etapie zrobienia, żeby działało (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Może jak się trochę wprawię, to będę tworzył takie pętle w pętlach itd, a idea tablic assocjacyjnych zostanie na pewno przeze mnie przemyślana. Z góry dziękuję za pomoc, ale może jeszcze pomożesz krok dalej i powiesz w którym miejscu tego Twojego skryptu zrobić odwołanie do stron userów? <-- [1] 2 3 ... --> |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 22.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli dobrze zrozumiałem to chcesz uzyskać listę użytkowników wraz ze statusem z tablicy KONTROLNE oraz barwą z tablicy KOLORY.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 24.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Pokażę Ci, jak ja to rozwiązałem
Jestem jeszcze lamerem jeśli chodzi o php, ale z tym udało mi się i myślę, że sposób jest w miarę prosty. Stworzyłem dwa identyczne pliki. W pierwszym select wybiera pierwszą partię rekordów z mysql, w drugim pliku pozostałe partie. ****W pierwszym pliku**** Zdefiniowałem dwie zmienne: $limit = 30; $limit0 = ($limit - 30); W poleceniu SELECT wstawiłem zakres danych:
Potem wstawiłem link do strony drugiej:
(Strona jest modułem CMSa.) ****W drugim pliku**** Zdefiniowałem zmienne: $limit1 = ($limit + 30); $limit0 = (limit1 - 30); Polecenie SQL w tym pliku wygląda tak:
Potem jeszcze link do tej samej strony, ale przy limit=$limit1
Nie jest to może zbyt piękne i eleganckie, ale działa i jest proste w użyciu. Poza tym wykorzystuję też zmienne w treści strony, żeby poinformować użytkowników, jakie rekordy są aktualnie wyświetlane.
Pozdr |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 21.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Tak jak myślalem masz o jedną tabelkę za dużo. Upewnij się ze potrzebujesz tabelki kolory, po co przechowywać to w osobnej tabelce
ten sposób na pewno nie jest dobry chociazby z tego powodu, ze nie pozwala na wyswietlanie równej ilości ksiązek na kazdej stronie. Co sie stanie jak 20 ksiązek zostanie usunięte? id bedą nieuzywane a brane pod uwagę. Może sie zdazyc ze bedziesz mial 2 strony puste! Musisz zdefiniować dwie wartości: $strona i $stron. Wartość $strona możesz opbrac np. z linka a jeżeli w linku nic niema to strona = 1 (lub ostatnia ale to pozniej) Zmienną $stron definiujesz zliczając np. funkcją mysql_num_rows('Select count(id) from ksiazki'); pozniej wyciagając z tamtąd zwróconą liczbę robisz tak:
Mamy już wartosc $stron i $strona (aktualna). Okreslic trzeba teraz dla zapytania od którego elementu ma pobrac dane:
zaytanie wyglada tak:
teraz wynik zapytania zawiera tylko te krotki które mają być wyswietlone na stronie Przechodzimy do tworzenia linków
Ustalenie ilości wierszy możesz wykonać przed tworzeniem tablic userów i calej reszty. Ten warunek wyrzej umieść tam gdzie ma być menu nawigacyjne. Możesz to zrobić przed wyswietlaniem wpisów albo po. Albo jedno i drugie. Po wykonaniu tego warunku masz już zmienną $nav wiec możesz drugi raz tylko sprawdzić czy nie jest ona pusta i wyświetlić ją - żeby nie liczyć ponownie tego samego. Jeżeli jest tylko 1 strona to nawigacja się nie wyswietli bo po co? Dodatkowo link do aktualnej strony jest nieaktywny, bo po co? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Po prawej i lewej stronie sa linki do nastepnej i poprzedniej strony. Pozostaje jeszcze na pewno kilka kwesti do przemyslenia, jak np. co zrobic kiedy okazuje się ze mamy 40 stron? takie menu nawigacyjne jest nieczytelne. Ale z tym tez raczej niema problemu. Cytat Grupę usera sprawdza pole kontrolne w tablicy logowanie. Za pomocą relacji jeden - wielu sprawdzam jaka to grupa, zaś jeden do wielu grupa/kolor sprawdzam jej kolor... Czyli zakladasz ze jeden user może być przypisany do kilku grup, ok., ale dlaczego zakladasz ze kolor może być przypisany rózny dla kazdej grupy? chyba ze do czegos innego wykorzystujesz jeszcze tabele kolor. Zastanów się czy nie wystarczy ze w tabeli kontrolne (może łatwiej będzie ją nazwać grupa albo uprawnienia) zdefiniować dla kazdej grupy kolor. W końcu nie kolor definiuje grupę (chyba) albo usera... bo tez nie wiem. Pewnie nie wyczerpałem wszystkich możliwości, jak coś jest jeszcze nie jasne to pisz. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 20:51 |