Sql count не работает. Где ошибка помогите пожалуйста.

12 3
seosniks
На сайте с 13.08.2007
Offline
389
3149

и так в таблице lot есть поле tovar_cat

поле имеет например 10 значений platye и одно значение tovar

Пробую посчитать значения platye отдает 0 а надо получить количество этих значений

Подскажите где ошибка?

$q="SELECT count(*) FROM lot  WHERE   tovar_cat='platye'";

$res=mysql_query($q);
$row=mysql_fetch_row($res);
echo $torows=$row[0];
SP
На сайте с 20.05.2008
Offline
56
#1

А если вместь platye подставить tovar?

Попробуйте выполнить этот запрос в phpmyadmin, может где в названии категории ошиблись

Делаю небольшие заказы на php, perl, js/ajax, delphi; парсеры, простые сайты с админкой, установка\настройка sape, wordpress и др. Мой Блог (http://www.seoproger.ru)
J
На сайте с 02.02.2009
Offline
53
#2

Покажите - что выдаёт SELECT DISTINCT tovar_cat FROM lot;

Есть ли там вообще такая категория?

seosniks
На сайте с 13.08.2007
Offline
389
#3
jumash:
Покажите - что выдаёт SELECT DISTINCT tovar_cat FROM lot;

Есть ли там вообще такая категория?

$q="SELECT DISTINCT tovar_cat FROM lot";

$res=mysql_query($q);

$row=mysql_fetch_row($res);

echo $total_rows=$row[0];

отlает nabor

Там еще есть много других значений.

Вот мне надо чтоб посчитать не все

Все считаю так

mysql_query('SET NAMES "'.$set.'"');

$q="SELECT count(*) FROM lot";
$res=mysql_query($q);
$row=mysql_fetch_row($res);
$total_rows=$row[0];

получаю 3500

но 3500 это общее число всех значений . А мне надо только по конкретному условию

Допустим имеем nabor повторяется 10 раз.

значит надо чтоб where отдал 10

имеем musa 20 значит при запросе

WHERE tovar_cat='musa'

получить число повторений тоесть значение 20.

А вот как сделать не пойму.

[Удален]
#4

$query="select * from lot where tovar_cat=\"platye\"";

mysql_query($query);
print "Всего записей: ".mysql_affected_rows();

? :)

seosniks
На сайте с 13.08.2007
Offline
389
#5
Eagle:
$query="select * from lot where tovar_cat=\"platye\"";

mysql_query($query);
print "Всего записей: ".mysql_affected_rows();

? :)

То что надо Спасибо Огромное.

J
На сайте с 02.02.2009
Offline
53
#6
Eagle:
$query="select * from lot where tovar_cat=\"platye\"";
mysql_query($query);
print "Всего записей: ".mysql_affected_rows();

? :)

Не очень хорошее решение - а если там очень много записей?

ТС - чтобы вывести - сколько всего и где -

$query = "SELECT COUNT(*), tovar_cat FROM lot GROUP BY tovar_cat";

$res = mysql_query($query);

while($row = mysql_fetch_row($res)){

echo $row[0]." записей в категории ".$row[1]."<br>";

}

Первый запрос у вас верен - проверьте - есть ли там такая категория в целом.

То есть безошибочно есть - SELECT COUNT(*) from lot WHERE tovar_cat='nabor';

Безошибочно, судя по всему, нет - platye

:)

[Удален]
#7
jumash:
Не очень хорошее решение - а если там очень много записей?
$query = "SELECT COUNT(*), tovar_cat FROM lot GROUP BY tovar_cat";
$res = mysql_query($query);
while($row = mysql_fetch_row($res)){
echo $row[0]." записей в категории ".$row[1]."<br>";
}

Хех, как Вы политкорректно заменили "глупости" :)

Возможно, я не достаточно хорошо разбираюсь в mysql, но чем плоха функция аффектед_роуз()?

seosniks
На сайте с 13.08.2007
Offline
389
#8
jumash:
Не очень хорошее решение - а если там очень много записей?


ТС - чтобы вывести - сколько всего и где -

$query = "SELECT COUNT(*), tovar_cat FROM lot GROUP BY tovar_cat";
$res = mysql_query($query);
while($row = mysql_fetch_row($res)){
echo $row[0]." записей в категории ".$row[1]."<br>";
}


Первый запрос у вас верен - проверьте - есть ли там такая категория в целом.

То есть безошибочно есть - SELECT COUNT(*) from lot WHERE tovar_cat='nabor';

Безошибочно, судя по всему, нет - platye

:)

Ваш код выдает также что нужно

1 записей в категории nabor

2311 записей в категории platie

J
На сайте с 02.02.2009
Offline
53
#9
seosniks:
Ваш код выдает также что нужно

1 записей в категории nabor
2311 записей в категории platie

А вы сами и ответили на вопрос, судя по всему - у вас ошибка в первом топике - в запросе - platye != platie :)

jumash добавил 24.05.2009 в 13:14

Eagle:
Хех, как Вы политкорректно заменили "глупости" :)
Возможно, я не достаточно хорошо разбираюсь в mysql, но чем плоха функция аффектед_роуз()?

Функция волшебна, несомненно

Но вот незадача

mysql_affected_rows() не работает с SELECT -- только с запросами, модифицирующими таблицу. Чтобы получить количество рядов, возвращённых SELECT-запросом, используйте функцию mysql_num_rows().

Проверять лениво - допускается ли с SELECT - но я собственно не поэтому заменил "глупости" - у вас пример хороший, но недоточен. Например, если в таблице будет к примеру 1kk записей - скрипт рискует повесить сервер. Поэтому более красивое в этом случае решение - это использовать SQL_CALC_FOUND_ROWS.

То есть - SELECT SQL_CALC_FOUND_ROWS * FROM lot WHERE ... LIMIT 1;

запрос который выведет количество выбранных рядов -

SELECT FOUND_ROWS();

как-то так - путано, но понятно

seosniks
На сайте с 13.08.2007
Offline
389
#10

Спасибо всем за Вашу помощь. Мн главное получить значения далее я думаю смогу разобраться..

И еще вопрос такой.

Есть у меня пагинатор. Вывводит все страницы на сайте.

Как мне сделать допустим чтоб пагинатор показывал на главной все страницы.

В категории свои страницы?

Я сделал для категории свой пагинатор чтоб проще было. :D

тоесть в категории например про вино есть 100 статей

на страницу вводиться 10 статей

в итоге пагинатор имеет значения 12345678910

Нормально ли это?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий