Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlanie użytkowników z bazy
LucKy_skiLL
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 4.03.2012

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


Mam taki skrypt na wyświetlywanie userów z bazy

  1. <?php
  2. echo "<div id='srodek'><div id='tlo'><center><b>Użytkownicy</b></center></div></div><br/><br/><br/><br/><br/>";
  3.  
  4. $wynik = mysql_query('SELECT admin FROM uzytkownik WHERE login ="'.$_SESSION['login'].'"');
  5. $wynik = mysql_fetch_row($wynik); // Zamiana wyniku na tablice
  6.  
  7.  
  8. if (($wynik[0] == 1) and (isset($_SESSION['login']))) { // dostęp dla zalogowanego użytkownika
  9.  
  10. $result = mysql_query("SELECT Count(id) FROM uzytkownik");
  11. $row = mysql_fetch_row($result);
  12. $count_users = $row[0];
  13.  
  14. if ($count_users > 0) {
  15. $result = mysql_query("SELECT * FROM uzytkownik");
  16. while ($row = mysql_fetch_assoc($result)) {
  17. if (($row['status']) == 1) {
  18. $row['status'] = 'Tak';
  19. } else {
  20. $row['status'] = 'Nie';
  21. }
  22.  
  23. if (($row['admin']) == 1) {
  24. $row['admin'] = 'Tak';
  25. } else {
  26. $row['admin'] = 'Nie';
  27. }
  28. echo "<div id='srodek'><div id='tlo'><table width='98%' align='center' cellpadding='5' cellspacing='0'>
  29. <tr><th><div align='center'>ID</div></th><th><div align='center'>Login</div></th><th><div align='center'>GG</div></th><th><div align='center'>E-Mail</div></th><th><div align='center'>Aktywny</div></th><th><div align='center'>Admin</div></th></tr>
  30. <tr>
  31. <td><div align='center'><font size='2'>".$row['id']."</font></div></td>
  32. <td><div align='center'><font size='2'>".$row['login']."</font></div></td>
  33. <td><div align='center'><font size='2'>".$row['gg']."</font></div></td>
  34. <td><div align='center'><font size='2'>".$row['email']."</font></div></td>
  35. <td><div align='center'><font size='2'>".$row['status']."</font></div></td>
  36. <td><div align='center'><font size='2'>".$row['admin']."</font></div></td>
  37. </tr>\n
  38. </table></div></div>";
  39. }
  40. }
  41. } else {
  42. echo "<div id='srodek'><div id='tlo'><center>Musisz być zalogowany</center></div></div>";
  43. }
  44.  
  45. ?>


I wszystko jest fajnie, ale wyświetla tylko jednego użytkownika, a w bazie jest ich więcej.

(IMG:http://ss-host.pl/images/1vcv.png)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LucKy_skiLL
post
Post #2





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 4.03.2012

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


"Widzę tam na początku autoryzacje - po jakiego grzyba zapytanie do bazy zamiast po prostu sprawdzić czy istnieje w sesji."

Niby tak, ale może być zalogowany i nie być adminem, i wtedy miał by dostęp, a tego nie chcę.


  1. <?php
  2. echo "<div id='srodek'><div id='tlo'><center><b>Użytkownicy</b></center></div></div><br/><br/><br/><br/><br/>";
  3.  
  4. $wynik = mysql_query('SELECT admin FROM uzytkownik WHERE login ="'.$_SESSION['login'].'"');
  5. $wynik = mysql_fetch_row($wynik); // Zamiana wyniku na tablice
  6.  
  7.  
  8. if (($wynik[0] == 1) and (isset($_SESSION['login']))) { // dostęp dla zalogowanego użytkownika
  9.  
  10. $result = mysql_query("SELECT Count(id) FROM uzytkownik");
  11. $row = mysql_fetch_row($result);
  12. $count_users = $row[0];
  13.  
  14. if ($count_users > 0) {
  15. $result = mysql_query("SELECT * FROM uzytkownik");
  16.  
  17. while ($row = mysql_fetch_assoc($result)) {
  18. if (($row['status']) == 1) {
  19. $row['status'] = 'Tak';
  20. } else {
  21. $row['status'] = 'Nie';
  22. }
  23.  
  24. if (($row['admin']) == 1) {
  25. $row['admin'] = 'Tak';
  26. } else {
  27. $row['admin'] = 'Nie';
  28. }
  29. echo "<div id='srodek'><div id='tlo'><table width='98%' align='center' cellpadding='5' cellspacing='0'>
  30. <tr><th><div align='center'>ID</div></th><th><div align='center'>Login</div></th><th><div align='center'>GG</div></th><th><div align='center'>E-Mail</div></th><th><div align='center'>Aktywny</div></th><th><div align='center'>Admin</div></th></tr>
  31. <tr>
  32. <td><div align='center'><font size='2'>".$row['id']."</font></div></td>
  33. <td><div align='center'><font size='2'>".$row['login']."</font></div></td>
  34. <td><div align='center'><font size='2'>".$row['gg']."</font></div></td>
  35. <td><div align='center'><font size='2'>".$row['email']."</font></div></td>
  36. <td><div align='center'><font size='2'>".$row['status']."</font></div></td>
  37. <td><div align='center'><font size='2'>".$row['admin']."</font></div></td>
  38. </tr>\n
  39. </table></div></div>";
  40. }
  41. }
  42. } else {
  43. echo "<div id='srodek'><div id='tlo'><center>Musisz być zalogowany</center></div></div>";
  44. }
  45.  
  46. ?>


Ten post edytował LucKy_skiLL 15.07.2012, 20:30:37
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(LucKy_skiLL @ 15.07.2012, 21:24:16 ) *
"Widzę tam na początku autoryzacje - po jakiego grzyba zapytanie do bazy zamiast po prostu sprawdzić czy istnieje w sesji."

Niby tak, ale może być zalogowany i nie być adminem, i wtedy miał by dostęp, a tego nie chcę.


Komentarz przy warunku mówi zupełnie o czym innym.
Sprawdzanie "czy admin" faktycznie ma sens ale ubrałbym to po pierwsze w funkcje, po drugie wystarczy to sprawdzić za pomocą count.

  1. function isAdmin($username) {
  2.  
  3. $result = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM FROM `uzytkownik` WHERE login = '$username' AND `admin` = 1"));
  4. return (boolean)$result[0];
  5.  
  6. }


Kolejny błąd to zliczanie użytkowników - skoro oglądasz wynik skryptu masz admina, a skoro masz admina to jesteś też użytkownikiem, skoro jesteś użytkownikiem to jest chociaż jeden rekord. Więc błędne koło i zapytanie zupełnie zbyteczne. Jeżeli już przyjmiemy jakieś zmiany w skrypcie to pobrałbym raz wszystkich userów, zliczył mysql_num_rows. Nie stosuje się go do liczenia bo pobiera wszystkie rekordy, ale i tak będą pobierane przecież do listy userów.

Nadal kod wygląda beznadziejne pod względem HTML/CSS.



Ten post edytował markonix 16.07.2012, 10:05:45
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: 27.12.2025 - 17:35