Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyświetlenie z BD w tabelce, Złączenie kitabel mysql i wyświetlenie w odpowiedniej formie na stroni
aisha
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 14.02.2017

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


Dzień dobry, z góry przepraszam jeśli coś zrobiłam nie tak jak powinnam, ale to pierwszy raz kiedy korzystam z forum.

Mój problem wygląda następująco.
Mam bazę w której jest kilka tabel. Przechowują one dane z normalnej tabelki gdzie są wiersze i kolumny.

Udało mi się napisać zapytanie, które łączy tabele, które są w bazie. W phpmyadmin po wpisaniu kodu sql wydaje mi się,że wygląda wszystko tak jak powinno. Teraz muszę wyświetlić to co jest w bazie na stronie w formie tabelki. I tu pojawia się mój problem, bo nie umiem sobie z tym poradzić. Każda nazwa obiektu i atrybutu powinna pojawić się tylko raz. I każda para obiekt atrybut powinna mieć przypisaną do siebie wartość.


Ogólnie schematycznie tabelka powinna wyglądać tak:

| Nazwa atrybutu | Nazwa atrybutu | Nazwa atrybutu | Nazwa atrybutu
___________________________________________________________
Nazwa obiektu | Nazwa wartości | Nazwa wartości | Nazwa wartości | Nazwa wartości |
Nazwa obiektu | Nazwa wartości | Nazwa wartości | Nazwa wartości | Nazwa wartości |
Nazwa obiektu | Nazwa wartości | Nazwa wartości | Nazwa wartości | Nazwa wartości |
Nazwa obiektu | Nazwa wartości | Nazwa wartości | Nazwa wartości | Nazwa wartości |
Nazwa obiektu | Nazwa wartości | Nazwa wartości | Nazwa wartości | Nazwa wartości |
Nazwa obiektu | Nazwa wartości | Nazwa wartości | Nazwa wartości | Nazwa wartości |


Tutaj są screeny konkretów
Wynik zapytania mysql

Wygąd po wyświetleniu na stronie


Na chwile obecną żeby wyświetlić nazwę obiektu i nazwę atrybutu z bazy używam osobnych dwóch zapytań, bo inaczej nie potrafię.


Prosiła bym o:
- powiedzenie mi czy to zapytanie waszym zdaniem jest poprawne żeby wyświetlić to w takiej formie jak potrzebuję?
- jakieś wskazówki/wytłumaczenie odnośnie tego jak to wyświetlić w tabelce za pomocą php i htmla. Proszę o pisanie na chłopski rozum gdyż niestety w tej tematyce dopiero raczkuje (IMG:style_emoticons/default/sad.gif)

Jeżeli zapomniałam coś dopisać lub napisałam niezrozumiale proszę mnie poinformować

Z góry dziękuje za każdą pomoc.




  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php
  2. echo'<table class="table table-bordered">';
  3. echo'<table class="table table-striped">';
  4. echo"<tbody>";
  5.  
  6. /*
  7. $zapytanie = "select nazwa_atrybutu, nazwa_obiektu, nazwa_wartosci from atrybut
  8. join pozycja on atrybut.id_atrybutu=pozycja.atrybut_id_atrybutu
  9. join obiekt on
  10. obiekt.id_obiektu= pozycja.obiekt_id_obiektu
  11. join wartosc on wartosc.id_wartosci=pozycja.wartosc_id_wartosci ";
  12. */
  13.  
  14.  
  15.  
  16. $zapytanie = "select nazwa_obiektu, nazwa_atrybutu,`wartosc_num`, nazwa_wartosci,nr_kolumny from atrybut
  17. left join pozycja on atrybut.id_atrybutu=pozycja.atrybut_id_atrybutu
  18. left join obiekt on obiekt.id_obiektu= pozycja.obiekt_id_obiektu
  19. left join wartosc on wartosc.id_wartosci=pozycja.wartosc_id_wartosci
  20. where nr_kolumny = wartosc_num";
  21.  
  22.  
  23.  
  24. $wynik = mysql_query($zapytanie);
  25.  
  26. $ilosc_wszystkich_wierszy = mysql_num_rows($wynik);
  27. echo "Ilosc wszytskich wierszy dla zapytania: $ilosc_wszystkich_wierszy";
  28. echo "</br>";
  29.  
  30. $zapytanie_liczba_obiektow = "select * from obiekt";
  31.  
  32. $wynik_obiekty = mysql_query($zapytanie_liczba_obiektow);
  33. $ilosc_obiektow = mysql_num_rows($wynik_obiekty);
  34. echo "Ilosc obiektow:  $ilosc_obiektow";
  35. echo "</br>";
  36.  
  37. $zapytanie_liczba_atrybutow = "select * from atrybut";
  38.  
  39. $wynik_atrybuty = mysql_query($zapytanie_liczba_atrybutow);
  40. $ilosc_atrybutow = mysql_num_rows($wynik_atrybuty);
  41.  
  42.  
  43.  
  44. echo "Ilosc atrybutow: $ilosc_atrybutow";
  45. echo "</br>";
  46. echo "</br>";
  47.  
  48. echo '<tr>';    
  49. echo '<th>';    
  50.  
  51. while ($row = mysql_fetch_assoc($wynik_atrybuty)){
  52.  
  53.  
  54.  
  55. echo "<td>{$row['nazwa_atrybutu']}</td>\n";
  56.     
  57. }
  58. echo '</th>';
  59. echo '</tr>';    
  60.  
  61. while ($row = mysql_fetch_assoc($wynik_obiekty)){    
  62.  
  63. echo '<tr>';    
  64. echo "<th>{$row['nazwa_obiektu']}</th>\n";
  65.  
  66. while ($row = mysql_fetch_assoc($wynik)){    
  67.  
  68. echo  "<td>{$row['nazwa_wartosci']}</td>";    
  69.  
  70. }
  71.  
  72.  
  73. echo '</tr>';    
  74. }
  75.  
  76.  
  77.  
  78. echo"</tbody>";
  79. echo" </table>";
  80. echo" </table>";
  81.  
  82. ?><!--c2--></div><!--ec2-->
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Trudno określić co w tych tabelach siedzi, zazwyczaj podanie struktury tabel to pierwsze co robią ludzie szukający pomocy. Zwłaszcza jeśli wyniki ze screena z phpmyadmina wyglądają podejrzanie jeśli chodzi o wartosc_num. Może to miały być numeryczne odpowiedniki słów TAK NIE WYSOKA itp? W ogóle to zapytanie wygląda dziwnie, choć bez struktury ciężko powiedzieć.

Ogólnie do wyświetlania takich tabelek należałoby dodać sortowanie w zapytaniu typu ORDER BY wiersz,kolumna czyli przykładowo ORDER BY nazwa_obiektu, nr_kolumny po czym ciągnąc z bazy poszczególne rekordy przy zmianie nazwy obiektu wstawiamy htmlowy koniec i początek nowego wiersza tabelki. Ewentualnie znając konkretne ilości można dwie pętle jedna w drugiej zrobić. Ale to pod warunkiem absolutnej pewności że jest dokładnie tyle ile trzeba w bazie.

Do wyciągania ilości rekordów lepiej używać zapytań typu "SELECT COUNT(*) FROM obiekt" niż brać wszystko z tabeli i odczytywać num_rows.

Jeśli się uczysz to staraj się unikać funkcji mysql_ , które są mocno przestarzałe i od razu ucz się przynajmniej mysqli_ , nawet jeśli obiektowe podejście wydaje się na początku niezrozumiałe. Do znalezienia w sieci jest masę poradników z gotowymi kawałkami kodu do podstawowych operacji na bazie.
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 - 08:21