Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
cv65
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


  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. while ($wynik = mysql_fetch_assoc($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. ?>


Pętla while

Ten post edytował cv65 13.07.2012, 14:03:31
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #3





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

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


Gdzie jej użyć ?
Go to the top of the page
+Quote Post
cv65
post
Post #4





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


Dałem Ci gotowca

  1. $wynik = mysql_fetch_row($wynik);
zwraca tylko jeden wynik
zaś

  1. while ($wynik = mysql_fetch_assoc($wynik))
  2. {
  3. echo $wynik[1];
  4. }


To jest przykład, pętla zwróci wszystkie wartości

Ten post edytował cv65 13.07.2012, 14:03:13
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #5





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

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


No, ale ja wyświetlam rekordy tak

<td><div align='center'><font size='2'>".$row['id']."</font></div></td>
<td><div align='center'><font size='2'>".$row['login']."</font></div></td>
<td><div align='center'><font size='2'>".$row['gg']."</font></div></td>
<td><div align='center'><font size='2'>".$row['email']."</font></div></td>
<td><div align='center'><font size='2'>".$row['status']."</font></div></td>
<td><div align='center'><font size='2'>".$row['admin']."</font></div></td>

Go to the top of the page
+Quote Post
markonix
post
Post #6





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

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


Czemu ten skrypt wykonuje aż 3 zapytania do tabeli `uzytkownik`?

Widzę tam na początku autoryzacje - po jakiego grzyba zapytanie do bazy zamiast po prostu sprawdzić czy istnieje w sesji.
Po co te zapytanie "autoryzujące" jest w pętli?
O css ktoś tu chyba nie słyszał.
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #7





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

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


Odświeżam, jak zastosować te pętle ?
Go to the top of the page
+Quote Post
markonix
post
Post #8





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

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


Zamiast odświeżania może byś zamieścił poprawiony kod zgodnie z sugestiami?
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #9





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 #10





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
LucKy_skiLL
post
Post #11





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

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


Zrobiłem tak

  1. $all_1 = mysql_query("SELECT * from uzytkownik ORDER BY id DESC, login DESC LIMIT 0, 50")or die(mysql_error()); while ($users_row = mysql_fetch_array($all_1))
  2. {
  3. $numer++
  4. echo <<< HTML
  5. <tr>
  6. <td>{$users_row['login']}</td>
  7. </tr>
  8. HTML;
  9. }



I ładnie wyświetla mi dwóch użytkowników których mam, moje pytanie brzmi, jak wyświetlić ich w mojej tabelce, robiąc tak, wyświetla mi tylko jedną osobe.


  1. <table width='98%' align='center' cellpadding='5' cellspacing='0'>
  2. <tr>
  3. <th><div align='center'>ID</div></th>
  4. <th><div align='center'>Login</div></th>
  5. <th><div align='center'>GG</div></th>
  6. <th><div align='center'>E-Mail</div></th>
  7. <th><div align='center'>Aktywny</div></th>
  8. <th><div align='center'>Admin</div></th>
  9. </tr>
  10. <tr>
  11. <td><div align='center'><font size='2'>".$users_row['id']."</font></div></td>
  12. <td><div align='center'><font size='2'>".$users_row['login']."</font></div></td>
  13. <td><div align='center'><font size='2'>".$users_row['gg']."</font></div></td>
  14. <td><div align='center'><font size='2'>".$users_row['email']."</font></div></td>
  15. <td><div align='center'><font size='2'>".$users_row['status']."</font></div></td>
  16. <td><div align='center'><font size='2'>".$users_row['admin']."</font></div></td>
  17. </tr>
  18. </table>
Go to the top of the page
+Quote Post
markonix
post
Post #12





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

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


Zależy co chcesz osiągnąć - jeżeli ma powtarzać wiersz nagłówkowy to w pętli powinny się zawrzeć oba wiersze <tr>, jeżeli tylko konkretne dane to wiersz drugi.
I popraw ten HTML i zastosuj CSS bo nie można na to patrzeć!
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #13





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

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


Tak jak pisałem wcześniej, mam taki kod na tabele która ładnie wyświetla to co chce, ale wyświetla tylko jednego użytkownika, drugiego nie, tak więc pytam, jak i co zastosować, aby osiągnąć ten efekt.


  1. <table width='98%' align='center' cellpadding='5' cellspacing='0'>
  2. <tr>
  3. <th><div align='center'>ID</div></th>
  4. <th><div align='center'>Login</div></th>
  5. <th><div align='center'>GG</div></th>
  6. <th><div align='center'>E-Mail</div></th>
  7. <th><div align='center'>Aktywny</div></th>
  8. <th><div align='center'>Admin</div></th>
  9. </tr>
  10. <tr>
  11. <td><div align='center'><font size='2'>".$users_row['id']."</font></div></td>
  12. <td><div align='center'><font size='2'>".$users_row['login']."</font></div></td>
  13. <td><div align='center'><font size='2'>".$users_row['gg']."</font></div></td>
  14. <td><div align='center'><font size='2'>".$users_row['email']."</font></div></td>
  15. <td><div align='center'><font size='2'>".$users_row['status']."</font></div></td>
  16. <td><div align='center'><font size='2'>".$users_row['admin']."</font></div></td>
  17. </tr>
  18. </table>
Go to the top of the page
+Quote Post
markonix
post
Post #14





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

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


Po pierwsze poprawić ten badziewiasty kod HTML co powtarzam po raz 3.

Co do samego wyświetlania użytkowników przecież napisałem co trzeba zrobić, potrafisz czytać?
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #15





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

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


Już sobie sam poradziłem.
Go to the top of the page
+Quote Post
markonix
post
Post #16





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

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


Cytat(LucKy_skiLL @ 17.07.2012, 13:42:55 ) *
Już sobie sam poradziłem.

To jest taka niepisana tradycja, że umieszcza się zwykle rozwiązanie dla potomnych.
Go to the top of the page
+Quote Post
LucKy_skiLL
post
Post #17





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

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


Tutaj znalazłem w sumie gotowca.


http://www.w3schools.com/php/php_mysql_select.asp
Go to the top of the page
+Quote Post

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: 24.08.2025 - 22:11