Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] zliczenie ilości rekordów
lukash82
post 7.10.2015, 11:14:28
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Witam,

Mam dziwny problem z zliczeniem ilości rekordów w bazie. Robię to tak:

  1. $result1 = mysql_query("SELECT lp FROM posty A, lang_0 B WHERE A.strona='X' AND A.strona=B.id AND B.view='on'") or die(mysql_error());
  2. $row1 = mysql_num_rows($result1);


gdzie X to wartość zmienna ale na tym etapie prawidłowa.

Problem polega na tym, że zlicza mi wszystkie rekordy, nawet te, które mają view=''.

W bazie mam 30 rekordów, z czego 4 mają w kolumnie view pusto. Czyli teoretycznie powinno wyliczyć 26 rekordów.

Jeśli zapytanie zmieniam tak, żeby pokazał mi tylko te rekordy gdzie view ='' to pokazuje ilość = 0.

Na chłopski rozum zapytanie wygląda ok, chyba, że czegoś tu nie widzę. Proszę o pomoc bo nie wiem o co kaman:/ Pozdrawiam, Ł.
Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 11:18:59
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Gdy do zapytania dodajesz 2 tabele, to musisz w warunkach połączyć te dwie tabele ze sobą. Jesli tego nie zrobisz, dostajesz iloczyn kartezjanski, czyli każdy z kazdym, i w wyniku dostajesz glupoty


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lukash82
post 7.10.2015, 11:27:07
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Mam to połączone w tym miejscu:

A.strona=B.id

Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 11:35:41
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




dziwne nazewnictwo... czyli mowisz w kolumnie strona znajduje się ID z tabeli B?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lukash82
post 7.10.2015, 11:45:09
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Każdy ma swoje dziwactwa, hehe. Tak jakoś wyszło na początku i już zostało...

Jest tak jak piszesz, czyli w kolumnie strona jest id z tabeli B.
Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 11:50:36
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to o ile nie mam jakiegoś zacmienia dzisiaj, to zapytanie jest ok.

Pewnie jest blad w danych i źle spojrzales. Mozesz dać zrzut takiego zapytania:
"SELECT A.strona, B.id, B.view FROM posty A, lang_0 B WHERE A.strona='X' AND A.strona=B.id
?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lukash82
post 7.10.2015, 12:17:43
Post #7





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Jak zrobić ten zrzut, o którym piszesz? Próbowałem robić (...) INTO OUTFILE 'zrzut.txt' ale wywala mi Access denied for user '...' (using password: YES)

W każdym bądź razie, pokazuje mi 30 rekordów, czyli wszystkie bez rozróżnienia czy view jest 'on' czy ''.

Zapytanie proste jak konstrukcja cepa, a problemów z nim cała masa...
Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 12:22:36
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jak zrobić ten zrzut, o którym piszesz?
No prosze cie....
ctrl+c, ctrl+v
albo printscreen i wklej tu obrazek


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 7.10.2015, 12:25:25
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


var_dump("SELECT lp FROM posty A, lang_0 B WHERE A.strona='X' AND A.strona=B.id AND B.view='on'")
Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 12:33:11
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Pyton mi chodzilo o zrzut wyniku zapytania a nie doslownie zrzut zapytania wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 7.10.2015, 12:45:46
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


biggrin.gif
Go to the top of the page
+Quote Post
lukash82
post 7.10.2015, 12:45:56
Post #12





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Zrobiłem tak:

  1. var_dump("SELECT lp FROM posty A, lang_0 B WHERE A.strona='".$row0['id']."' AND A.strona=B.id AND B.view='on'");
  2.  
  3. $result1 = mysql_query("SELECT * FROM posty A, lang_0 B WHERE A.strona='".$row0['id']."' AND B.view='on' AND A.strona=B.id") or die(mysql_error());
  4. $row1 = mysql_num_rows($result1);
  5. echo "<br>ile: ".$row1;


A wynik na ekranie jest taki:
string(87) "SELECT lp FROM posty A, lang_0 B WHERE A.strona='204' AND A.strona=B.id AND B.view='on'"
ile: 30

Ten post edytował lukash82 7.10.2015, 12:46:33
Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 12:46:56
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ile jeszcze razy mam napisac:

poprosze o liste rekordow, ktore zwracane są przez zapytanie, ktore podalem

facepalmxd.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lukash82
post 7.10.2015, 12:56:21
Post #14





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Może inaczej, wygląda to tak: /delete/

Postów jest 30, z czego 5 jest ukrytych.

Na każdej podstronie są 3 posty, co daje 25/3 = 8 podstron i na 9 powinien być 1 wpis. I tak jest.

Natomiast paginator jest do 10, czyli tak jakby 30/3=10. Paginacja działa ok, ale dostaje na starcie błędną ilość wszystkich postów bo zliczanie nie uwzględnia postów ukrytych.

Ten post edytował lukash82 7.10.2015, 13:13:11
Go to the top of the page
+Quote Post
Pyton_000
post 7.10.2015, 12:59:13
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


do paginacji masz wykonać count tego samego zapytania co do pobierania wyników tyle że bez limitów
Go to the top of the page
+Quote Post
lukash82
post 7.10.2015, 13:12:33
Post #16





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


W tym przypadku zamiast A.strona=B.id powinno być A.id_all=B.id...

Połączyłem tabele nie z tą kolumną co miałem i kompletnie tego nie zauważyłem bo szukałem problemu w zupełnie innym miejscu...

3h wycięte z życiorysu... Ale dzięki wielkie za pomoc. Pewnie siedziałbym nad tym dalej.

Pozdrawiam, Ł.
Go to the top of the page
+Quote Post
nospor
post 7.10.2015, 13:15:33
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Połączyłem tabele nie z tą kolumną co miałem i kompletnie tego nie zauważyłem bo szukałem problemu w zupełnie innym miejscu...
Byloby to widac juz dawno, gdyby zrobil to o co prosilem.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 12.06.2025 - 13:43