Od pewnego czasu walczę z tym problemem; Spróbuję wyjaśnić to tutaj tak prosto, jak to tylko możliwe.Pojedyncza tablica HTML z wielu tabel MySQL
Rozważmy tę tabelę MySQL:
+----------+-----------+---------+--------+
|status_id |session_id |pilot_id |present |
+----------+-----------+---------+--------+
|1 |61 |901 |1 |
|2 |63 |901 |1 |
|3 |62 |901 |0 |
|4 |62 |902 |1 |
|5 |63 |903 |1 |
+----------+-----------+---------+--------+
Zarówno session_id
i pilot_id
są obce klucze odniesień do klucza podstawowego w innej tabeli. Ten sam kod pilot_id
może być powiązany z innym session_id
, ale każda kombinacja jest unikatowa.
muszę zrobić tabelę HTML (w PHP), które wyświetla dane w ten sposób:
+----------+---------+---------+---------+
| |61 |62 |63 |
+----------+---------+---------+---------+
|901 |X | |X |
|902 | |X | |
|903 | | |X |
+----------+---------+---------+---------+
Stąd wiersze i kolumny są pilot_id
są session_id
. Gdy kombinacja - session_id
ma wartość 1, należy sprawdzić odpowiednią komórkę. (tzn. gdy kombinacja wierszy wynosi zero lub kombinacja nie istnieje w tabeli MySQL, nic nie powinno pojawić się w tabeli HTML)
Uff.
Wszelkie pomysły?
Dzięki!
Próbowałem odpowiedzi zaproponowanej przez firmę erisco, ale jestem bardzo zdezorientowany. (pole komentarza jest o wiele za małe dla mojego wyjaśnienia, stąd ta aktualizacja mojego pytania).
Jest to rzeczywiste dane pracuję z:
+----------+-----------+---------+--------+
|status_id |session_id |pilot_id |present |
+----------+-----------+---------+--------+
|7 |65 |33 |1 |
|8 |66 |33 |1 |
|9 |65 |17 |0 |
|10 |66 |16 |1 |
+----------+-----------+---------+--------+
używam $rows = mysqli_fetch_array($result);
. Potwierdziłem, że zapytanie zwraca właściwe dane.
Jednakże, kiedy używam odpowiedzi zaproponowanej przez ericso, otrzymuję pozornie arbitralne dane. Poniżej znajduje się tabela generowane HTML:
+----------+---------+---------+---------+---------+
| |1 |3 |6 |7 |
+----------+---------+---------+---------+---------+
|1 |X | | | |
|3 | | | | |
|6 | | | | |
|7 | | | | |
+----------+---------+---------+---------+---------+
Ponadto stanowisko „X” pozostaje taka sama bez związku z present
wartości.
Jakieś pomysły, dlaczego tak się dzieje?
Dzięki!
Jeśli zmienna_dump będzie miała twoje $ wiersze w porównaniu z wierszami, które posiadam, prawdopodobnie zobaczysz różnice. Spróbowałbym użyć '$ rows = mysqli_fetch_all ($ result, MYSQLI_ASSOC);' – erisco
Ah, yes. Widzę, że coś jest nie tak.Kiedy użyciu mysqli_fetch_assoc uzyskać: matryca (4) { [ "status_id"] => łańcuchowe (1) "7" [ "pilot_id"] => sznurek (2) "33" [ "session_id"] => ciąg (2) "65" ["obecny"] => ciąg (1) "1"} Co to jest tylko pierwszy wiersz ... Dlaczego? W każdym razie $ rows = mysqli_fetch_all ($ result, MYSQLI_ASSOC) nie zadziałało, chociaż ... (z tego, co zrobiłem, nie mam Mysqlnd - którego nie mogę zainstalować na moim udostępnionym serwerze). Oto błąd: Błąd krytyczny: wywołanie niezdefiniowanej funkcji mysqli_fetch_all(). Dzięki! –
Właśnie skończyłem robiąc to: $ rows = array(); podczas gdy ($ rawRow = mysqli_fetch_assoc ($ result)) { $ rows [] = $ rawRow; } –