Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Dwa zapytania w jednej tabeli
Kshyhoo
post 13.09.2016, 19:39:58
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Chciałem wrzucić dwa zapytania do jednej tabeli. W oddzielnych kolumnach. Ale coś mi nie idzie. Oddzielnie działa, razem nie.
Kod:
  1. <?php
  2. $sql2 = "SELECT id, name FROM adventure ORDER BY id";
  3. $result2 = mysqli_query($con, $sql2);
  4. $adventures = array();
  5. while($row2 = mysqli_fetch_assoc($result2)) {
  6. $adventures[] = $row2;
  7. }
  8. ?>
  9. </table>
  10. <?php
  11.  
  12. for ( $x = 0, $cnt = count($adventures); $x < $cnt; $x++ ) {
  13. echo "<tr>".$adventures."</tr>";
  14. $sql = mysqli_query($con, "SELECT name, adv1, adv2, adv3, adv4 FROM users WHERE id='".$player."'");
  15. while ( $row = mysqli_fetch_assoc($sql) ) {
  16. echo "<tr>";
  17. foreach($row as $value)
  18. echo "<td>".$value."</td>";
  19. }
  20. echo '</tr>';
  21. }
  22. ?>
  23. </table>

Linia:
  1. echo "<tr>".$adventures."</tr>";

zwraca mi błąd: Notice: Array to string conversion in, a przecież muszę z tablicy korzystać.
I czy dobrze kombinuję, bo coś mi się wydaje, że dostane 2 wiersze a nie 2 kolumny...


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
KsaR
post 13.09.2016, 19:57:47
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


A jak zmienisz na echo '<tr>', $adventures[$x]['id'], '</tr>'; ?
$player to ta zmienna co wyżej ?

Ten post edytował KsaR 13.09.2016, 20:01:05


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 13.09.2016, 20:07:51
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Tak, to działa. Ale jak się obawiałem, dostałem poziomą tabelę a nie pionową. Ponadto powiela w rzędzie wszystkie wiersze 2giej tabeli wink.gif

$player pobierana z GETa.

Wydaje mi się, że muszę połączyć 2 tabele w jedną i dopiero "wkładać" w tabelkę.


--------------------
Go to the top of the page
+Quote Post
KsaR
post 13.09.2016, 20:15:13
Post #4





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


echo '<tr><td>'.$value.'</td></tr>';
Tak powinno być co do pionu, + skasowanie tr przed i po tej pętli.

Co do powielania - to $player nie widzę zeby się zmieniało w pętli dlatego powiela tongue.gif


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 13.09.2016, 20:27:39
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Pierwsze zapytanie w rzędzie a drugie w kolumnie teraz. Czyli pobiera drugą tyle razy, ile jest rekordów w pierwszej.
$player to tylko dla jednego usera.

Tu chodzi o to (a, b - tabele; 1, 2, 3... rekordy tabel):
  1. a | b
  2. --+---
  3. 1 | 1
  4. 2 | 2
  5. 3 | 3
  6. 4 | 4


--------------------
Go to the top of the page
+Quote Post
KsaR
post 13.09.2016, 20:49:23
Post #6





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


  1. <table>
  2. <?php
  3.  
  4. $sql = mysqli_query($con, "SELECT `name`, `adv1`, `adv2`, `adv3`, `adv4` FROM `users` WHERE `id`='".$player."' LIMIT 1");
  5. $row = mysqli_fetch_assoc($sql);
  6. $rowFull = '<tr><td>'.implode('</td></tr><tr><td>', $row).'</td></tr>';
  7.  
  8. $result2 = mysqli_query($con, 'SELECT `id` FROM `adventure` ORDER BY `id`');
  9. while ($row2 = mysqli_fetch_assoc($result2)) {
  10. echo '<tr>', $row2['id'], '</tr>', $rowFull;
  11. }
  12. ?>
  13. </table>


Po minifikacji ten kod powinien robić (mniej więcej) to samo co twój wraz z poprawkami z poprzednich postów.
__
Nie rozumiem.
A: to będą id z adventures
B: questionmark.gif

Ten post edytował KsaR 13.09.2016, 20:50:05


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 13.09.2016, 20:57:09
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Tak, z "a" łąduję nazwy a z "b" dane.
Twój kod ładuje poziomo 1szą tabelę

i drugą tyle razy, ile rekordów w 1szej.


--------------------
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: 18.07.2025 - 01:41