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%)
-----


Są potrzebne? no to patrz:
zapytania:
  1. <?php
  2. $res1 = mysql_query (&#092;"SELECT * FROM logowanie ORDER BY login ASC\");
  3. while($wiersz1=mysql_fetch_assoc ($res1)) //uzywaj assoc jezeli kozystasz tylko z assoc
  4. {
  5. $loginy[$wiersz['login']] = $wiersz;  //dzieki temu masz tablice do ktorej odwolujesz sie przez login
  6. }
  7.  
  8. $res2 = mysql_query (&#092;"SELECT status, id, kolor FROM logowanie l, kontrolne k WHERE l.kontrolne=k.
    i
  9. \");
  10. while($wiersz2=mysql_fetch_assoc ($res2)) 
  11. {
  12. $status[wiersz['id']] = $wiersz;  
  13. }
  14.  
  15. $res3 = mysql_query (\"SELECT barwa, id FROM kolory, kontrolne WHERE kontrolne.kolor=kolory.id\");
  16. while($wiersz3=mysql_fetch_assoc ($res2)) 
  17. {
  18. $barwa[wiersz['id']] = $wiersz['barwa'];  
  19. }
  20. ?>

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.
  1. <?php
  2.  
  3. if ($loginy) 
  4. {
  5.  foreach ($loginy as $login)
  6. {
  7.  if ( isset($status[$login['kontrolne']]) )
  8.  {
  9. $status_logowania = $status[$login['kontrolne']]['status'];
  10. foreach($status as $s) 
  11.  { 
  12. if ( isset($barwa[$s['kolor']] && $s['status'] == $status_logowania ) $kolor = $barwa[$s['kolor']];
  13.  }
  14.  } else $statys_logowania = 'Nieznany';  
  15.  //tutaj wyświwetlasz rząd tabelki korzystając z aktualnych zmiennych $login['login'], $status_logowania oraz $kolor
  16. }
  17. } else echo &#092;"brak userów\"
  18.  
  19. ?>

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:
  1. SELECT barwa FROM kolory, kontrolne, logowanie WHERE kontrolne.kolor=kolory.id AND kontrolne.STATUS='$wier1[0]'
- 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.
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: 7.10.2025 - 08:39