Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Źle zliczana ilość rekordów count()
Danielcom
post 30.12.2009, 23:51:23
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 6.10.2008

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


Witam

piszę skrypt do porcjowania wyników na stronie. Problem pojawił się gdy ten kod:

  1. $max = 'SELECT id FROM sol_szybowce';
  2. $zapytanie_max = mysql_query($max);
  3. // $r_max zawiera ilosc wszystkich rekordow w tabeli
  4. $r_max = mysql_num_rows($zapytanie_max);


chcę zastąpić (moim zdaniem lepszym rozwiązaniem)

  1. $sql = 'SELECT count(id) FROM `sol_szybowce`';


count() podaje całkowicie inną wartość niż jest w MySQL, ale tylko w PHP w MySQL jest poprawnie.
W efekcie cały skrypt się sypie dry.gif

Proszę o pomoc
Go to the top of the page
+Quote Post
darko
post 30.12.2009, 23:56:24
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Pewnie wartość $r_max wynosi 1. W przypadku select count(id) spróbuj mysql_fetch_row zamiast mysql_num_rows

Ten post edytował darko 30.12.2009, 23:56:41


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Danielcom
post 30.12.2009, 23:59:34
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 6.10.2008

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


Właściwie to wartość jest większą od 1. W bazie mam 12 rekordów a
  1. $sql = 'SELECT COUNT(*) FROM sol_szybowce';
  2. $result = mysql_query($sql);
  3. $r_max = mysql_result($result,0);


pokazuje 16 rekordów czyli o 4 więcej.

Ten post edytował Danielcom 31.12.2009, 00:05:11
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 00:08:02
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


sprawdź czy:
- łączysz się z tą bazą co trzeba
- nie robisz po drodze od przypisania wartości do wyświetlenia czegoś ze zmienną $r_max
- nie lepiej będzie jednak tak:
  1. $max = 'SELECT count(id) FROM sol_szybowce';
  2. $zapytanie_max = mysql_query($max) or die(mysql_error());
  3. $temp = mysql_fetch_row($zapytanie_max);
  4. $r_max = $temp[0];


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
erix
post 31.12.2009, 00:13:52
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
chcę zastąpić (moim zdaniem lepszym rozwiązaniem)

Masz jeszcze lepsze:
  1. SELECT SQL_CALC_ROWS * FROM tabela LIMIT 0,10

  1. $wszystkie = (wyciągnij z: SELECT FOUND_ROWS())


A jeśli chodzi o przekłamania: podaj wersję MySQL i PHP.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Danielcom
post 31.12.2009, 00:35:47
Post #6





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 6.10.2008

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


- baza jest ok
- takiej zmiennej nie mam w systemie (system jest dosłownie ogromny, więc wszystkie zmienne mam spisane na papierze smile.gif )
- zmieniłem ten kod, nadal jest to samo

hmm.. pewnie będę musiał sprawdzić kilka funkcji odpowiadających za łączenie i pobieranie danych z MySQL.

Na razie dziękuję za pomoc, do końca skryptu jeszcze daleko więc jak coś to będę pisał.


Pewnie dziwnie to zabrzmi ale to prawda.

Vista zainstalowała aktualizację i męczyła mnie o restart. Po restarcie systemu, a co za tym idzie i wamp serwera wszystko działa:)
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: 31.07.2025 - 09:51