Dziwne zachowanie funkcji count() |
Dziwne zachowanie funkcji count() |
29.01.2016, 04:56:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 28.08.2015 Ostrzeżenie: (0%) |
Witam,
Mam taki problem i już mi się pomysły kończą. Chcę użyć funkcji count() w wyszukiwarce aby w razie znalezienia wyników je pokazała, a w razie ich braku pokazała echo "Nic nie znaleziono". Niby proste ale jak używam count() to w przypadku znalezienia wielu rekordów pokazuje tylko jeden, pierwszy. W przypadku braku rekordów pokazuje co należy. W ogóle to dziwne co pokazuje print_r(count($row)): 12. Przecież aktualnie mógł znaleźć max 2 rekordy bo tak by to filtrowało. Baza składa się z 5 tabel, gdzie jedna z nich zawiera relacje w 4 pozostałymi. Czyli wiele do jednej. Linie odpowiedzialne za count:
Cały kod:
|
|
|
29.01.2016, 07:05:07
Post
#2
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 13 Dołączył: 16.06.2007 Ostrzeżenie: (0%) |
Ten count powinien być przed pętlą foreach bo jak $stmt będzie puste to pętla i tak się nie wykona.
Zrzuć jeszcze otrzymany SQL. |
|
|
29.01.2016, 07:22:50
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Tak na logikę: counta robisz na zmiennej $row, która przechowuje dane pojedynczego wiersza. Wniosek: liczysz kolumny wiersza, których zawsze jest 12 (klucze asocjscyjne i numeryczne czyli po 2 klucze z tą samąwartością w wyniku) a nie ilość rekordów w wyniku.
Ten post edytował lukaskolista 29.01.2016, 07:25:33 |
|
|
30.01.2016, 02:13:04
Post
#4
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 28.08.2015 Ostrzeżenie: (0%) |
A istnieje jakiś sposób żeby zamiast po kolumnach iterować po wierszach? Bo tak się nad tym zastanawiam i nie mogę wpaść na to jak...
Co ciekawe, nawet jak dodam jedynie var_dump(count($row)) tak:
to też pokazuje tylko jeden wynik chociaż powinien znaleźć dwa. W przypadku istnienia dwóch ogłoszeń o podanych kryteriach var_dump daje: int(12)int(12), w przypadku jednego daje int(12). Otrzymany SQL przy wybraniu jednego pola:
Ten post edytował Panicz74 30.01.2016, 02:15:42 |
|
|
30.01.2016, 09:05:49
Post
#5
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Jak się klamer nie używa to pokazuje tylko 1 (ostatni) Zapomniałeś użyć { ... }
|
|
|
30.01.2016, 22:10:18
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 28.08.2015 Ostrzeżenie: (0%) |
No tak... Teraz działa:
Dlaczego potrafię zrozumieć coś takiego jak tworzenie i bindowanie tablicy przez execute() a łapię się na takich pierdołach? To już nie pierwszy raz. Też mieliście takie problemy kiedyś |
|
|
31.01.2016, 10:19:41
Post
#7
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Tak, jak się nie formatuje porządnie kodu, to tak jest
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 21:32 |