Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dzielenie Zapytania Na Strony, Wiem że było masę razy :(
Fibolg
post
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:
  1. <?php
  2. include(&#092;"dbconf.php\");
  3. mysql_connect($hostname,$dbuser,$dbpassword);
  4. mysql_select_db($dbname);
  5. $zapytanie = &#092;"SELECT * FROM logowanie ORDER BY login ASC\";
  6. $wykonaj = mysql_query ($zapytanie);
  7.  
  8. $id=1;
  9. echo(&#092;"<table border=\"1\"> \");
  10. echo &#092;"<tr>
  11. <td width=&#092;"30px\" align=\"center\"><B>Lp.</B></td>
  12. <div style=&#092;"display: none\"><B>Id.</B></div>
  13. <td width=&#092;"200px\" align=\"center\"><B>Login</B></td>
  14. <td width=&#092;"150px\" align=\"center\"><B>Grupa</B></td>
  15. <td width=&#092;"100px\" align=\"center\"><B>Modyfikacja</B></td>
  16. <td width=&#092;"100px\" align=\"center\"><B>Usuwanie</B></td>
  17. </tr>&#092;";
  18.  
  19. while($wiersz=mysql_fetch_array ($wykonaj)) {
  20.     
  21.     $zapyt = &#092;"SELECT status FROM logowanie, kontrolne WHERE logowanie.kontrolne=kontrolne
    .
  22. d AND logowanie.login='\".$wiersz['LOGIN'].\"'\";
  23.     $wyk1 = mysql_query ($zapyt);
  24.     $wier1=mysql_fetch_array ($wyk1);
  25.     //echo($wier1[0]);
  26.     
  27.     $zapyt2 = \"SELECT barwa FROM kolory, kontrolne, logowanie WHERE kontrolne.kolor=kolory.
  28. d AND kontrolne.status='$wier1[0]'\";
  29.     $wyk2 = mysql_query ($zapyt2);
  30.     $wier2=mysql_fetch_array ($wyk2);
  31.     //echo($wier2[0]);
  32.  
  33. echo \"<tr>
  34. <td width=&#092;"30px\" align=\"right\">\".$id.\"</td>
  35. <div style=&#092;"display: none\">\".$wiersz['ID'].\"</div>
  36. <td width=&#092;"200px\"><font color=\"$wier2[0]\">&nbsp;\".$wiersz['LOGIN'].\"</font></td>
  37. <td width=&#092;"150px\"><font color=\"$wier2[0]\">&nbsp;\".$wier1[0].\"</font></td>
  38. <td width=&#092;"100px\" align=\"center\"><a href=\"users.php?stan=modyf&idmodyf=\".$wiersz['ID'].\"\">Modyfikuj</a></td>\";
  39. if ($wiersz['ID']!=1){ 
  40. echo &#092;"<td width=\"100px\" align=\"center\"><a href=\"users.php?stan=usun&idusun=\".$wiersz['ID'].\"\">Usuń</a></td>
  41. </tr>&#092;";} else{ echo \" <td width=\"100px\" align=\"center\">&nbsp;</td>\";}
  42.  
  43. $id++;
  44. }
  45. echo (&#092;"</table><BR>\");
  46. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pianandrill
post
Post #2





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
  1. $sql = "select *
  2. from k_ksiazki WHERE id_ksiazki
  3. BETWEEN $LIMIT 0 AND $limit";


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:
  1. <?php
  2. $stron = ceil($ilosc_rzedow / $max) //$max oznacza ilosc elementow na stronie, można ją pozniej latwo zmieniać
  3. ?>

Mamy już wartosc $stron i $strona (aktualna). Okreslic trzeba teraz dla zapytania od którego elementu ma pobrac dane:
  1. <?php
  2. $start = ($strona - 1) * $max;
  3. ?>

zaytanie wyglada tak:
  1. SELECT * FROM ksiazki WHERE (costam) LIMIT $start, $max

teraz wynik zapytania zawiera tylko te krotki które mają być wyswietlone na stronie
Przechodzimy do tworzenia linków
  1. <?php
  2.  
  3. if ($stron > 1)
  4. {
  5. $nav = (($strona == 1)?' << ':' <a href=index.php?id=ksiazki&s='.($strona-1).'><<</a> ').' ';
  6. for($i=1; $i<=$stron; $i++)
  7. $nav.= (($i == $strona)?' ['.$i.'] ':' <a href=index.php?id=ksiazki&s='.$i.'>['.$i.']</a> ');
  8. $nav.= ' '.(($strona == $stron)?' >> ':' <a href=index.php?id=ksiazki&s='.($strona+=1).'>>></a> ');
  9. echo $nav;
  10. }
  11. ?>


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.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 16.10.2025 - 07:30