Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Lista Administracji
Forum PHP.pl > Forum > Przedszkole
xGlenor
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
Tomplus
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. }
xGlenor
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>
Tomplus
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.


xGlenor
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


Tomplus
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.


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.