Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Dwa zapytania w jednej tabeli
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
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...
KsaR
A jak zmienisz na echo '<tr>', $adventures[$x]['id'], '</tr>'; ?
$player to ta zmienna co wyżej ?
Kshyhoo
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ę.
KsaR
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
Kshyhoo
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
KsaR
  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
Kshyhoo
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.
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.