[PHP] Problem pobierania danych z bazy danych, Dane z dwóch ostatnio dodanych rekordów niemożliwe do wczytania |
[PHP] Problem pobierania danych z bazy danych, Dane z dwóch ostatnio dodanych rekordów niemożliwe do wczytania |
12.09.2017, 19:33:09
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) |
Kłaniam się.
Otrzymałem do sprawdzenia pewien skrypt, który w żaden sposób niemodyfikowany przez wiele lat nagle przestał wczytywać dane, ale tylko z dwóch ostatnio dodanych do bazy rekordów. Chodzi o to, że wczytuje on dane z konkretnej tabeli, aby je wyświetlić na podstronie ze szczegółami ogłoszenia. Co się okazuje z dwóch ostatnio dodanych ogłoszeń do bazy dane nie chcą się wczytywać na podstronie ze szczegółami. Kiedy dodam nowe ogłoszenie, to dane z ogłoszenia, które przed dodaniem było drugim ostatnio dodanym ogłoszeniem nagle się wczytują, a nowo dodane ogłoszenie stając się ostatnio dodanym ogłoszeniem przejmuje jakby jego rolę i na podstronie ze swoimi szczegółami dane się nie wyświetlają. Na podstronie nie wyskakują żadne błedy sygnalizowane przez PHP. Po prostu skrypt jakby do momentu, gdy ma wyświetlić to co wczytuje, wszystko widzi, ale "wydrukować" już nie chce. Dzieje się to zawsze tylko w przypadku dwóch ostatnio dodanych do bazy danych ogłoszeń. Tutaj zapytanie MySQL w PHP:
oraz skrawek HTML gdzie powinny wyświetlić się dane Czy ktokolwiek z Was miał kiedyś taki problem? Skrypt przez kilka lat działa normalnie, nikt w żaden sposób w niego nie ingeruje, a tu nagle nie potrafi "wydrukować" danych z dwóch najnowszych rzędów tabeli SQL. Nie wiem jak to ugryźć, bo trudno nawet szukać błędu skoro nawet PHP niczego nie podpowiada. Może potrzebujecie jakiś danych dotyczących tabeli, aby mieć pełniejszy obraz problemu? Ten post edytował wbeatn 12.09.2017, 19:34:18 |
|
|
12.09.2017, 19:47:20
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
pokaz
var_dump($rezultat); dla niewczytywanego ogloszenia -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
12.09.2017, 20:45:27
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) |
pokaz var_dump($rezultat); dla niewczytywanego ogloszenia
Tak jak napisałem, nie wyskakują żadne błędy. W samej bazie danych w rekordzie o ID 8757 (ostatnie dodane ogłoszenie) są dane, które powinny być wczytane na stronie, ale skrypt na stronie ich nie wyświetla. Jeśli dodam dwa kolejne, to nagle na podstronie ze szczegółami tego samego ogłoszenia dane będa się wyświetlać, ale na podstronach ze szczegółami tych dwóch najnowszych ogłoszeń już wyświetlać się nie będą. I tak w kołko. |
|
|
12.09.2017, 20:51:25
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
JOINujesz wiele innych tabel, moze ktorys znich nie zawiera danych jakie powinien zawierac? Sprobuj zamienic te wszyskie JOIN na LEFT JOIN tak by sie tylko upewnic ze to nie to
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
12.09.2017, 22:18:45
Post
#5
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) |
JOINujesz wiele innych tabel, moze ktorys znich nie zawiera danych jakie powinien zawierac? Sprobuj zamienic te wszyskie JOIN na LEFT JOIN tak by sie tylko upewnic ze to nie to Dzięki za pomoc. Wymiana JOIN na LEFT JOIN nie była potrzebna, bo jak słusznie wskazałeś problem był w zapytaniu.
Jak widać w obu przypadkach podłączania tabel, przywołane jest odniesienie do kolumny `id_zaladunku`, a prawidłowo powinno być tak, że w przypadku podłączania tabeli `rozladunek` odniesienie powinno być do kolumny `wl.id_rozladunku`. Zastanawia mnie tylko dlaczego komplikacje przy tak błędnym kodzie były tylko w przypadku dwóch najnowszych rekordów z bazy danych, a w pozostałych dane wyświetlały się poprawnie. |
|
|
12.09.2017, 22:39:40
Post
#6
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
Zapewne dlatego, że dla wcześniejszych rekordów id_zaladunek oraz id_rozladunek pokrywało się z id_zaladunku. To, że robiło JOINa (bo ID wartościowo się pokrywało), nie oznacza, że dostarczało Ci prawidłowe wyniki, a jeśli nawet, to w ramach przypadku.
|
|
|
12.09.2017, 22:47:56
Post
#7
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) |
Zapewne dlatego, że dla wcześniejszych rekordów id_zaladunek oraz id_rozladunek pokrywało się z id_zaladunku. To, że robiło JOINa (bo ID wartościowo się pokrywało), nie oznacza, że dostarczało Ci prawidłowe wyniki, a jeśli nawet, to w ramach przypadku. Jak najbardziej. ) Faktycznie dla każdego ogłoszenia oba ID były identyczne, bo każde ogłoszenie miało swoją grupę danych dot. rozladunku i zaladunku, więc jeśli ogłoszenia były dodawane na bieżaco jedno po drugim, to oba ID zawsze były takie same. Ktoś nie tyle mógł grzebać w skrypcie, a bezpośrednio w bazie danych. |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 07:14 |