Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Drzewo PHP + MYSQL + JS
gucio1
post
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

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


Witam,
napisałem mini portal do którego można zarejestrować się podając maila osoby która nas poleciła podczas rejestracji.
Skrypt automatycznie przypisuje naszemu rekordowi w bazie maila tej osoby dzięki której założyliśmy konto.

Nasz rekord w bazie wygląda mniej więcej tak:

Imię Nazwisko Email hasło osobap(emal osoby polecajacej)
Jan Kowalski jak.kowalski@wp.pl jojpoejpfw rysiek.nowak@wp.pl

I teraz tworze drzewo poleceń.
Pobieram maila zalogowanego użytkownika (rysiek.nowak@wp.pl) i wyświetlam pod nim wszystkie maile jeden pod drugim które mają w bazie jako "osobap" email rysiek.nowak@wp.pll i są to osoby które założyły konto dzięki Ryśkowi.

Ale zanim pobiorę wszystkie tę maile po wczytaniu pierwszego rekordu z bazy dajmy na to "Jana" daje następną pętle która sprawdza czy "syn" Ryśka Jan też ma osoby pod sobą i dla nich też wyświetla jego "synów" i tak do 4 poziomów.

Napisałem strasznie słaby skrypt metodą kombinowania żeby tylko działał. Użyłem spacji żeby tworzyła się struktura drzewiasta (IMG:style_emoticons/default/smile.gif) .

Wynik skryptu wygląda tak:

Rysiek twoje drzewo:

jan.kowalski@wp.pl
---------marlena@er.pl
---------jacek.dobry@ert.pl
milena@tralala.pl
andrzej@te.pl
---------michal@rerer.pl
---------grazyna@wewewe.pl
------------------bronislaw@perrt.pl
------------------czarek@resergr.pl
mietek@wp.pl

itd...

Jeszcze jest dodana zmiana koloru wyświetlenia zależnie od tego czy użytkownik jest aktywny czy nie ale to nie jest ważne.

I z góry uprzedzam pytania, tak wiem że to wszystko mogło by być w jednej pętli.

I tak: chciałbym żeby wyświetlenie było bardziej profesjonalne i ruchome. Czyli wyświetlają się tylko użytkownicy pod zalogowanym użytkownikiem i żeby wyświetlić synów tych użytkowników trzeba kliknąć plusik i następny plusik żeby wyświetlić następne poziomy. Wszystko połączone kreskami i ustawione poziomami. Jak np. tutaj: http://domanart.pl/dema/drzewo-plikow/index.php

Wiem że drzew jest pełno w sieci ale działają na zasadzie mam już pewną liczbę użytkowników wyświetlę ich JS'em i albo Ajax'em i jest ładne ruchome drzewo. Ale jeśli nie ma się ustalonej liczby użytkowników i ta liczba ciągle się zmienia to już dla mnie zaczynają się schodki.

Próbowałem przerabiać coś takiego ale nie wiem jak przekazać dane wyciągnięte z bazy do JS'a za pomocą phpa.
Czy w ogóle można łączyć phpa i JS'a?

Poniżej wklejam kod mojego skryptu.
Proszę o podpowiedzi jak z tego wybrnąć.

  1. <?php
  2.  
  3.  
  4.  
  5. //1 obrot
  6. $wynik = $polaczenie->query("SELECT * FROM uzytkownicy WHERE osobap='$email'");
  7. if ($wynik ->num_rows == 0) {
  8. echo "<p><b>".'<div class="error">'."Nikt jesszcze nie założył konta z twojego polecenia".'</div>';
  9. }
  10. else{
  11. echo "Witaj ".$email.", poniżej widzisz osoby które założyły konto z twojego polecenia.<br><br>";
  12. echo "Użytkownik: ".'<span style="color:green;">aktywny</span>/<span style="color:red;">nieaktywny</span><br><br>';
  13. }
  14.  
  15. $wynik = $polaczenie->query("SELECT * FROM uzytkownicy WHERE osobap='$email'");
  16. if ($wynik ->num_rows > 0)
  17. {
  18.  
  19. for($a = 1; $a <= $wynik ->num_rows; $a++) {
  20.  
  21.  
  22.  
  23. $row = $wynik ->fetch_assoc();
  24. if($row["aktywny"]>0){
  25. echo '<div class="zielony"><i class="fa fa-chevron-right" aria-hidden="true"></i> '.$row["email"].' <i class="fa fa-long-arrow-right" aria-hidden="true"></i> 10pkt </div>';
  26. }
  27. else{
  28. echo '<div class="error"><i class="fa fa-chevron-right" aria-hidden="true"></i> '.$row["email"].'</div>';
  29. }
  30. //2obrot
  31.  
  32. $zmienna_email = $row["email"];
  33.  
  34. $wynik_drugi = $polaczenie->query("SELECT * FROM uzytkownicy WHERE osobap='$zmienna_email'");
  35. if ($wynik_drugi ->num_rows > 0)
  36. {
  37. for($i = 1; $i <= $wynik_drugi ->num_rows; $i++) {
  38.  
  39. $row = $wynik_drugi ->fetch_assoc();
  40. if($row["aktywny"]>0){
  41. echo '<div class="zielony">&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;<i class="fa fa-level-down" aria-hidden="true"></i> '.$row["email"].' <i class="fa fa-long-arrow-right" aria-hidden="true"></i> 10pkt </div>';
  42. }
  43. else{
  44. echo '<div class="error">&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;<i class="fa fa-level-down" aria-hidden="true"></i> '.$row["email"].'</div>';
  45. }
  46.  
  47. //3obrot
  48. $zmienna_email3 = $row["email"];
  49.  
  50. $wynik_trzeci = $polaczenie->query("SELECT * FROM uzytkownicy WHERE osobap='$zmienna_email3'");
  51. if ($wynik_trzeci ->num_rows > 0)
  52. {
  53. for($i = 1; $i <= $wynik_trzeci ->num_rows; $i++) {
  54.  
  55. $row = $wynik_trzeci ->fetch_assoc();
  56.  
  57. if($row["aktywny"]>0){
  58. echo '<div class="zielony">&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;<i class="fa fa-level-down" aria-hidden="true"></i> '.$row["email"].' <i class="fa fa-long-arrow-right" aria-hidden="true"></i> 8pkt</div>';
  59. }
  60. else{
  61. echo '<div class="error">&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;<i class="fa fa-level-down" aria-hidden="true"></i> '.$row["email"].'</div>';
  62. }
  63. //4obrot
  64. $zmienna_email4 = $row["email"];
  65.  
  66. $wynik_czwarty = $polaczenie->query("SELECT * FROM uzytkownicy WHERE osobap='$zmienna_email4'");
  67. if ($wynik_czwarty ->num_rows > 0)
  68. {
  69. for($i = 1; $i <= $wynik_czwarty ->num_rows; $i++) {
  70.  
  71. $row = $wynik_czwarty ->fetch_assoc();
  72.  
  73. if($row["aktywny"]>0){
  74. echo '<div class="zielony">&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp&thinsp;&thinsp;&thinsp;&thinsp;<i class="fa fa-level-down" aria-hidden="true"></i> '.$row["email"].' <i class="fa fa-long-arrow-right" aria-hidden="true"></i> 8pkt </div>';
  75. }
  76. else{
  77. echo '<div class="error">&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;&thinsp;<i class="fa fa-level-down" aria-hidden="true"></i> '.$row["email"].'</div>';
  78. }
  79. }
  80. }
  81. }
  82. }
  83.  
  84. }
  85.  
  86.  
  87. }
  88.  
  89.  
  90.  
  91. }
  92. }
  93.  
  94. ?>



Kurcze, nikt nie jest w stanie pomóc?
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: 15.09.2025 - 14:39