Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wypisywanie danych z bazy danych w tabeli i odwołanie się do nich
owenxpl
post 8.11.2016, 18:08:28
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2016

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


Witam tak jak w temacie mam bazę danych w mysql z której wypisuje dane w postaci tabeli i po kliknięciu w dany wiersz chciałbym się odnieść do id danych z bazy w tym wypadku id_klient tak aby z tą informacją stworzyć kolejne zapytanie sql.




Tak wygląda baza danych. To chcę dostać po kliknięciu


Żeby przejść do kolejnej tabeli




  1. <!DOCTYPE html>
  2. <?php
  3.  
  4.  
  5.  
  6. require_once 'php/connect_tech-bet.php';
  7. require_once 'php/connect.php';
  8.  
  9. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  10. if ($polaczenie->connect_errno!=0)
  11. {
  12. echo 'Error: '.$polaczenie->connect_errno;
  13. }
  14. else
  15. {
  16.  
  17. $rezultat = @$polaczenie->query(sprintf("SELECT * FROM klienci"));
  18.  
  19. }
  20.  
  21. ?>
  22.  
  23.  
  24.  
  25. <html>
  26. <head>
  27.  
  28. <meta charset='utf-8'>
  29.  
  30. </head>
  31.  
  32. <body >
  33.  
  34.  
  35. <table>
  36. <tr>
  37. <th>Nazwa firmy</th>
  38. <th>Nazwa firmy skrĂłt</th>
  39. <th>Miasto</th>
  40. <th>Ulica</th>
  41. <th>Nr.</th>
  42. <th>Kod pocztowy</th>
  43. </tr>
  44.  
  45. <?php
  46. while($wiersz= $rezultat->fetch_assoc())
  47.  
  48. {
  49. echo "<tr>";
  50.  
  51. echo "<td>"."<button id='nazwa_f' type='button' onclick='nazwa_f()'>".$wiersz['nazwa_f_pelna']."</button>"."</td>";
  52. echo "<td>".$wiersz['nazwa_f_skrot']."</td>";
  53. echo "<td>".$wiersz['miasto']."</td>";
  54. echo "<td>".$wiersz['ulica']."</td>";
  55. echo "<td>".$wiersz['nrdomu']."</td>";
  56. echo "<td>".$wiersz['kod']."</td>";
  57. echo "</tr>";
  58.  
  59. $nazwa_f_pelna = $wiersz['nazwa_f_pelna'];
  60.  
  61. ?>
  62.  
  63.  
  64. </body>
  65. </html>
Go to the top of the page
+Quote Post
Shou
post 8.11.2016, 18:21:13
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 4
Dołączył: 6.11.2016

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


Ale co konkretnie ma się dziać po kliknięciu? Wyświetlenie listy budów danego klienta? I ma to być na tej samej stronie czy osobnej? Z przeładowaniem strony czy koniecznie bez (to drugie komplikuje nieco sprawę)?
Go to the top of the page
+Quote Post
owenxpl
post 8.11.2016, 19:33:18
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2016

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


Tak chce wyświetlić listę budów dla danego klienta. A co do wyświetlania to fajnie by było gdyby odpaliło się na tej samej stronie a co do przeladowania to może przeładować. Tylko jeszcze tak jak to będzie na jednej stronie to będę musiał dodać jeszcze przycisk żeby powrócić do widoku klientów.

Ps. To będzie rozbudowane o jeszcze jedną tabele (oferty) więc będzie trzy stopniowe ale jak już będę miał wzorzec to sobie chyba poradzę ;-)

Ten post edytował owenxpl 8.11.2016, 19:39:33
Go to the top of the page
+Quote Post
Shou
post 8.11.2016, 21:34:16
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 4
Dołączył: 6.11.2016

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


Chciałem zaproponować coś prostszego i lepszego w obyciu, ale jak mówisz, że będzie jeszcze jedno zagłębienie, to sam nie wiem. Mianowicie od razu pobierasz wszystkie dane z tabel i je wyświetlasz tak, jak chcesz, żeby były widoczne po kliknięciu. Następnie za pomocą stylów ustawiasz im display:none (będą niewidoczne), a za pomocą JavaScript włączasz wyświetlanie po kliknięciu. Ale to zależy, ile łącznie będzie tych danych, żeby nie przeciążyć strony.

A opcja z przeładowaniem to mniej więcej coś takiego:
  1. echo "<tr onclick='window.location=\"?id=".$wiersz['id_klient']."\";' style='cursor:pointer'>"; // aktywuje kliknięcie wiersza

  1. $rezultat_budowy = @$polaczenie->query(sprintf("SELECT * FROM budowy WHERE id_klient = %d", $polaczenie->real_escape_string($_GET['id']))); // lepiej przerobić to na prepare + bind_param

Następnie po </tr> sprawdzasz, czy ($wiersz['id_klient'] == $_GET['id']) i jeśli tak, to dodajesz takiego while'a jak ten, co już masz, ale z tym nowym zapytaniem pobierającym budowy. Gotowca nie dałem, ale jeśli zrozumiesz, jak to działa, to powinieneś sobie poradzić.
Go to the top of the page
+Quote Post
owenxpl
post 8.11.2016, 21:42:24
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2016

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


Dzięki wielkie Shou jutro przetestuję. Tak BTW to ciekawy pomysł z tym display none sam bym nie wpadł. Ja chciałem z ajaxem kombinować ale jeszcze nie ten stopień wtajemniczenia haha.gif

Ten post edytował owenxpl 9.11.2016, 08:46:59
Go to the top of the page
+Quote Post
rad11
post 9.11.2016, 09:35:15
Post #6





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Ja bym to zrobił trochę inaczej przy lekkim użyciu js:

  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  2. <?php
  3. try {
  4. $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
  5. } catch (PDOException $e) {
  6. echo 'Błąd: ' . $e->getMessage();
  7. }
  8. $stmt = $pdo->query("SELECT k.id_klienta as k_id_klienta, b.id_budowy as b_id_budowy, k.nazwa_f_pelna as k_nazwa_f_pelna, k.nazwa_f_skrot as k_nazwa_f_skrot, k.miasto as k_miasto, k.ulica as k_ulica, k.nrdomu as k_nrdomu, k.kod as k_kod,
  9. b.nazwa_bud_pelna as b_nazwa_bud_pelna, b.nazwa_bud_skrot as b_nazwa_bud_skrot, b.miasto as b_miasto, b.ulica as b_ulica, b.nrbudynku as b_nrbudynku, b.kod as b_kod
  10. FROM klienci k
  11. LEFT JOIN budowy b ON k.id_klienta=b.id_klienta");
  12.  
  13. $data = [];
  14.  
  15. foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
  16. $data[$row['k_id_klienta']]['klient'] = [
  17. 'id_klienta' => $row['k_id_klienta'],
  18. 'nazwa_f_pelna' => $row['k_nazwa_f_pelna'],
  19. 'nazwa_f_skrot' => $row['k_nazwa_f_skrot'],
  20. 'miasto' => $row['k_miasto'],
  21. 'ulica' => $row['k_ulica'],
  22. 'nrdomu' => $row['k_nrdomu'],
  23. 'kod' => $row['k_kod'],
  24. ];
  25. if ($row['b_id_budowy']) {
  26. $data[$row['k_id_klienta']]['budowy_klienta'][$row['b_id_budowy']] = [
  27. 'id_budowy' => $row['b_id_budowy'],
  28. 'nazwa_bud_pelna' => $row['b_nazwa_bud_pelna'],
  29. 'nazwa_bud_skrot' => $row['b_nazwa_bud_skrot'],
  30. 'miasto' => $row['b_miasto'],
  31. 'ulica' => $row['b_ulica'],
  32. 'nrbudynku' => $row['b_nrbudynku'],
  33. 'kod' => $row['b_kod'],
  34. ];
  35. }
  36. }
  37.  
  38. ?>
  39. <table>
  40. <thead>
  41. <tr>
  42. <th>Nazwa firmy</th>
  43. <th>Nazwa firmy skrot</th>
  44. <th>Miasto</th>
  45. <th>Ulica</th>
  46. <th>Nr.</th>
  47. <th>Kod pocztowy</th>
  48. <th></th>
  49. </tr>
  50. </thead>
  51. <tbody>
  52.  
  53. <?php foreach ($data as $row) : ?>
  54. <tr>
  55. <td><?php echo $row['klient']['nazwa_f_pelna'] ?></td>
  56. <td><?php echo $row['klient']['nazwa_f_skrot'] ?></td>
  57. <td><?php echo $row['klient']['miasto'] ?></td>
  58. <td><?php echo $row['klient']['ulica'] ?></td>
  59. <td><?php echo $row['klient']['nrdomu'] ?></td>
  60. <td><?php echo $row['klient']['kod'] ?></td>
  61. <?php if (!empty($row['budowy_klienta'])): ?>
  62. <td><a href='' class='pokaz-budowy-klienta' data-id-klienta='<?php echo $row['klient']['id_klienta']; ?>'>Pokaz budowy klienta</a></td>
  63. <?php else: ?>
  64. <td><span>-</span></td>
  65. <?php endif; ?>
  66. </tr>
  67. <tr data-id-klienta="<?php echo $row['klient']['id_klienta']; ?>" style="display:none;">
  68. <td colspan="100%">
  69. <table>
  70. <thead>
  71. <tr>
  72. <th>Nazwa budowy</th>
  73. <th>Nazwa budowy skrot</th>
  74. <th>Miasto</th>
  75. <th>Ulica</th>
  76. <th>Nr.</th>
  77. <th>Kod pocztowy</th>
  78. </tr>
  79. </thead>
  80. <tbody>
  81. <?php foreach ($row['budowy_klienta'] as $budowyKlienta): ?>
  82. <tr>
  83. <td><?php echo $budowyKlienta['nazwa_bud_pelna']; ?></td>
  84. <td><?php echo $budowyKlienta['nazwa_bud_skrot']; ?></td>
  85. <td><?php echo $budowyKlienta['miasto']; ?></td>
  86. <td><?php echo $budowyKlienta['ulica']; ?></td>
  87. <td><?php echo $budowyKlienta['nrbudynku']; ?></td>
  88. <td><?php echo $budowyKlienta['kod']; ?></td>
  89. </tr>
  90. <?php endforeach; ?>
  91. </tbody>
  92. </table>
  93. </td>
  94. </tr>
  95. <?php endforeach; ?>
  96. </tbody>
  97. </table>
  98.  
  99. <script>
  100. $('.pokaz-budowy-klienta').on('click', function (e) {
  101. e.preventDefault();
  102. var idBudowy = $(this).attr('data-id-klienta');
  103. $('table tr[data-id-klienta="' + idBudowy + '"]').toggle();
  104. });
  105. </script>


Ten post edytował rad11 9.11.2016, 09:36:54
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: 19.04.2024 - 23:03