Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP]Lista Administracji
xGlenor
post 5.08.2019, 23:51:35
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 16.07.2019

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


Hej, chciałbym na swojej stronie zrobić listę administracji która działa na jednej tabeli w MySQL
Tabela wygląda tak: http://prntscr.com/ooss0m
Efekt który mam teraz wygląda tak: http://prntscr.com/ooss4x

Tak wygląda cały kod:
  1. <div class="tekststrony">
  2. <?php
  3. $sql = "SELECT displayname, kolor FROM Administracja WHERE id_rangi=0";
  4. $sql1 = "SELECT nick, skin FROM Administracja WHERE id_rangi=1";
  5.  
  6. $res_data1 = mysqli_query($conn,$sql1);
  7. $res_data = mysqli_query($conn,$sql);
  8. while($lista = mysqli_fetch_array($res_data)){ ?>
  9.  
  10. <p style="text-align: center; color: <?php echo $lista['kolor']?>; font-weight: bold;"><?php echo $lista['displayname']?></p>
  11.  
  12. <div class="blok-box-admin">
  13.  
  14. <?php while($cos = mysqli_fetch_array($res_data1)){ ?>
  15. <div class="card">
  16. <img src="image/cos.png" style="width:100%">
  17. <div class="container">
  18. <hr>
  19. <p class="p1" style="text-align: center;"><?php echo $cos['nick']?></p>
  20.  
  21. </div>
  22. </div>
  23. <?php } ?>
  24. </div>
  25. <?php } ?>
  26.  
  27.  
  28. </div>


Potrzebuję pomocy, nie jestem jakiś doświadczony w PHP :/
Co potrzebuję? To, aby jakby jednym kodem wyświetlało mi się lista Rang i administracja do nich dopisana tongue.gif
Z góry dziękuje
Go to the top of the page
+Quote Post
Tomplus
post 6.08.2019, 05:21:24
Post #2





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Problem w tym że tworzysz to jako jedna tabela, a powinieneś mieć dwie.
Jedna tabela zawiera jedynie rangi, a druga listę administratorów.

Ale jak już robisz tak jak robisz to:



  1. $listaUzytkownikowSql = "SELECT nick, skin, id_rangi FROM Administracja WHERE id_rangi > 0"; //$sql1
  2. $listaUzytkownikowQuery = mysqli_query($conn,$listaUzytkownikowSql );
  3. while($lista = mysqli_fetch_array($listaUzytkownikowQuery)){
  4. $listaUzytkownikow[$lista['id_rangi']][] = $lista;
  5. }



wtedy w linii 14 dodasz zamiast
  1. while($cos = mysqli_fetch_array($res_data1)){


  1. foreach($listaUzytkownikow[$lista['ranga_id']] as $ranga_id => $dane) {
  2. // .... pętla z użytkownikami np. $dane['nick']
  3. }
Go to the top of the page
+Quote Post
xGlenor
post 6.08.2019, 17:11:47
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 16.07.2019

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


Stosując to co ty wysłałeś jakoś mi nie działało zbytnio :/ Ale wpadłem za to na inny pomysł tongue.gif
Rozwiązanie do jakiego udało mi się dojść wygląda tak:
  1. <div class="tekststrony">
  2. <?php
  3. $sql = "SELECT * FROM Administracja WHERE id_rangi=0";
  4. $res_data = mysqli_query($conn,$sql);
  5. while($lista = mysqli_fetch_array($res_data)){ ?>
  6. <?php $id_rangi = $lista['ranga_id']; echo $id_rangi; ?>
  7.  
  8. <p style="text-align: center; color: <?php echo $lista['kolor']?>; font-weight: bold;"><?php echo $lista['displayname']?></p>
  9.  
  10. <div class="blok-box-admin">
  11.  
  12. <?php
  13. $sql1 = "SELECT nick, skin FROM Administracja WHERE id_rangi=$id_rangi";
  14. $res_data1 = mysqli_query($conn,$sql1);
  15. while($lista1 = mysqli_fetch_array($res_data1)){
  16. ?>
  17. <div class="card">
  18. <img src="image/cos.png" style="width:100%">
  19. <div class="container">
  20. <hr>
  21. <p class="p1" style="text-align: center;"><?php echo $lista1['nick']?></p>
  22.  
  23. </div>
  24. </div>
  25. <?php } ?>
  26. </div>
  27. <?php } ?>
  28.  
  29.  
  30. </div>
Go to the top of the page
+Quote Post
Tomplus
post 6.08.2019, 17:56:02
Post #4





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie działało bo? Ja kod napisałem z palca, nie testowałem, więc ma prawo nie działać, przedstawiam Ci raczej logikę kodu.

A Twoje rozwiązanie jest słabe, pal licho jak jeszcze masz małą stronę, ale jak masz więcej zapytań, to teraz generujesz kilka zapytań do bazy danych zamiast 2.


Go to the top of the page
+Quote Post
xGlenor
post 7.08.2019, 00:42:32
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 16.07.2019

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


A więc tak mając taki kod:
  1. <div class="tekststrony">
  2. <?php
  3. $listaUzytkownikowSql = "SELECT nick, skin, id_rangi FROM Administracja WHERE id_rangi > 0"; //$sql1
  4. $listaUzytkownikowQuery = mysqli_query($conn,$listaUzytkownikowSql );
  5. while($lista = mysqli_fetch_array($listaUzytkownikowQuery)){
  6. $listaUzytkownikow[$lista['id_rangi']][] = $lista;
  7. ?>
  8.  
  9. <p style="text-align: center; color: <?php echo $lista['kolor']?>; font-weight: bold;"><?php echo $lista['displayname']?></p>
  10.  
  11. <div class="blok-box-admin">
  12.  
  13. <?php foreach($listaUzytkownikow[$lista['ranga_id']] as $ranga_id => $dane) { ?>
  14. <div class="card">
  15. <img src="image/cos.png" style="width:100%">
  16. <div class="container">
  17. <hr>
  18. <p class="p1" style="text-align: center;"><?php echo $dane['nick']?></p>
  19.  
  20. </div>
  21. </div>
  22. <?php } ?>
  23. </div>
  24. <?php } ?>
  25.  
  26. </div>


Otrzymałem taki wynik: https://prnt.sc/opat3k


Go to the top of the page
+Quote Post
Tomplus
post 7.08.2019, 08:14:39
Post #6





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


I widzisz, jak bezmyślnie skopiowałeś mój kod.
Powiedz mi, gdzie ja tą pętlą while okalam kod HTML?

Pierwsza pętla, while ma na celu stworzenie poprawną tablicę: $listaUzytkownikow

A potem masz swoją pętlę while gdzie masz także tablicę $lista i własnie w linii 13. - do tej Twojej zmiennej tablicy kieruję się umieszczając foreach($listaUzytkownikow[$lista['ranga_id']])

Zresztą błędy także dużo mówią. Czyli skoro ja tworzę tablicę gdzie są odpowiednie klucze, a potem Ty odnosisz się do jeszcze nie utworzonych rekordów tablicy, to wywala błąd.


Postaraj się dobrze nazywać zmienne:
Ja np. $sql1 nazwałem jako $listaUzytkownikowSql - czyli wiem że zapytanie ma pobrać tylko i wyłącznie listę użytkowników z tablicy.

$sql - powinno nazywać sie $listaGrupSql albo $listaRangSql albo $listaPoziomowSql - wiesz później że ta tablica zawiera zapytanie które pobierze Ci tylko statusy rang użytkowników.


Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 10:40