$result = mysql_query("SELECT * FROM tabl ORDER BY points",$db);
$myrow = mysql_fetch_array ($result);
далее цикл. Задача в следующем: сделать для каждой строки номер с позицией.
т.е. сейчас так,
Спартак 20
ЦСКА 19
Зенит 18,
а нужно,
1. Спартак 20
2. ЦСКА 19
3. Зенит 18
Спустя 3 минуты, 53 секунды (22.06.2010 - 16:29) waldicom написал(а):
Если будет выводиться в HTML, то можно воспользоваться пронумерованным списком. Или в цикле ввести переменную и увеличивать её.
Спустя 5 минут, 39 секунд (22.06.2010 - 16:34) freaky написал(а):
лучше воспользоваться php. Увеличивать переменную это типа в цикле while ?
$a++?
$a++?
Спустя 9 минут, 21 секунда (22.06.2010 - 16:44) waldicom написал(а):
Цитата (freaky @ 22.06.2010 - 15:34) |
лучше воспользоваться php. Увеличивать переменную это типа в цикле while ? $a++? |
Да, инициализировать еденицей и помотм++. Конечно придется вставлять этот счетчик в массив, чтобы он передался на страницу.
А почему не нравится вариант с тегами html?
Спустя 10 минут, 15 секунд (22.06.2010 - 16:54) qpayct написал(а):
в mysql никак нельзя разве значение инкрементить?
Спустя 1 час, 36 минут, 22 секунды (22.06.2010 - 18:30) freaky написал(а):
спасибо я разобрался
Спустя 3 часа, 54 минуты, 2 секунды (22.06.2010 - 22:24) SlavaFr написал(а):
Цитата (qpayct @ 22.06.2010 - 13:54) |
в mysql никак нельзя разве значение инкрементить? |
можно
select @i:= ifnull(@i+1,1) AS `counter` , ....
но для решения актуальной проблемы не нужно.
Спустя 7 минут, 29 секунд (22.06.2010 - 22:32) freaky написал(а):
такой вот запрос
Проблема в том что нужно что бы считало 5 последних записей, а считаются все. чём проблема?
$result143 = mysql_query("SELECT COUNT(id) FROM tabl WHERE name='$nam' AND status=1 ORDER BY id DESC LIMIT 5",$db);
$myrow143 = mysql_fetch_array($result143);
echo $myrow143[0];
Проблема в том что нужно что бы считало 5 последних записей, а считаются все. чём проблема?
Спустя 4 минуты, 11 секунд (22.06.2010 - 22:36) waldicom написал(а):
GROUP BY `id`
Спустя 45 минут, 6 секунд (22.06.2010 - 23:21) freaky написал(а):
теперь считает по последним 5-ти, но не правильно, т.е. явно где должно быть 3 почему то только 2 выводить. Может ещё ошибка какая?
В PHP MYADMIN делаю такой же запрос и всё правильно показывает.
В PHP MYADMIN делаю такой же запрос и всё правильно показывает.
$result143 = mysql_query("SELECT COUNT(id) FROM tabl WHERE name='$nam' AND res1 > res2 GROUP BY `id` DESC LIMIT 5",$db);
$myrow143 = mysql_fetch_array($result143);
Спустя 51 минута, 31 секунда (23.06.2010 - 00:12) waldicom написал(а):
а где вывод полученных результатов? Там надо в цикле выводить.
Спустя 6 часов, 4 минуты, 37 секунд (23.06.2010 - 06:17) freaky написал(а):
мне не нужно в цикле ничего выводить
просто сумма подсчёта нужна
echo $myrow143[0]
просто сумма подсчёта нужна
Спустя 4 часа, 36 минут, 20 секунд (23.06.2010 - 10:53) waldicom написал(а):
Цитата (freaky @ 23.06.2010 - 05:17) |
мне не нужно в цикле ничего выводитьecho $myrow143[0] просто сумма подсчёта нужна |
сумма чего? Всех элементов? Зачем тогда count()?
Спустя 41 минута, 33 секунды (23.06.2010 - 11:35) SlavaFr написал(а):
@freaky так как ты в sql очень непонятно изяснился и твой 1-й вопрос совсем неувязывается с твоим последним ответом, то попробуй всю проблему детально словами обяснить.
Спустя 16 минут, 18 секунд (23.06.2010 - 11:51) freaky написал(а):
хорошо, мне нужно посчитать сколько есть записей с условием
в переменной nam значение которое есть в таблице, тут всё правильно.
res_1 and res_2 int , т.е. там числовое значение. Нужно найти сколько всего записей с условием где в поле name есть $name и res_1 больше res_2.
По сути запрос считает и выводит цифру, но неверную.
$result143 = mysql_query("SELECT COUNT(id) FROM tabl WHERE name='$nam' AND res_1 > res_2 GROUP BY `id` DESC LIMIT 5",$db);
$myrow143 = mysql_fetch_array($result143);
в переменной nam значение которое есть в таблице, тут всё правильно.
res_1 and res_2 int , т.е. там числовое значение. Нужно найти сколько всего записей с условием где в поле name есть $name и res_1 больше res_2.
По сути запрос считает и выводит цифру, но неверную.
Спустя 2 минуты, 4 секунды (23.06.2010 - 11:53) waldicom написал(а):
тогда GROUP BY не нужен, но и LIMIT нафига?
ы?
SELECT COUNT(*) FROM tabl WHERE name='$nam' AND res_1 > res_2
ы?
Спустя 7 часов, 35 минут, 47 секунд (23.06.2010 - 19:29) freaky написал(а):
ладно, я сделал в цикле
Как мне теперь сделать подсчёт?
$result150 = mysql_query("SELECT * FROM table WHERE name='$nam' AND res_1 > res_2 GROUP BY `id` DESC LIMIT 5",$db);
$myrow150 = mysql_fetch_array($result150);
do {
printf (""
);
}
while ($myrow150 = mysql_fetch_array ($result150));
Как мне теперь сделать подсчёт?
Спустя 1 минута, 33 секунды (23.06.2010 - 19:31) freaky написал(а):
Цитата (waldicom @ 23.06.2010 - 08:53) |
тогда GROUP BY не нужен, но и LIMIT нафига?SELECT COUNT(*) FROM tabl WHERE name='$nam' AND res_1 > res_2 ы? |
так мне нужен подсчёт с условием res_1 > res_2 по последним пяти записям.
Спустя 4 минуты, 1 секунда (23.06.2010 - 19:35) waldicom написал(а):
Цитата (freaky @ 23.06.2010 - 18:31) |
так мне нужен подсчёт с условием res_1 > res_2 по последним пяти записям. |
Как определяются последние записи? По дате? В каком поле хранится дата?
Спустя 9 минут, 38 секунд (23.06.2010 - 19:44) Gabriel написал(а):
freaky
последние в низу всегда. ORDER BY field DESC в помощь.
последние в низу всегда. ORDER BY field DESC в помощь.
Спустя 5 минут (23.06.2010 - 19:49) freaky написал(а):
определяются по ид (int)
Спустя 4 минуты, 20 секунд (23.06.2010 - 19:54) waldicom написал(а):
Цитата (Gabriel @ 23.06.2010 - 18:44) |
последние в низу всегда. ORDER BY field DESC в помощь. |
Более чем спорное утверждение
Спустя 2 минуты, 21 секунда (23.06.2010 - 19:56) freaky написал(а):
Цитата (Gabriel @ 23.06.2010 - 16:44) |
freaky последние в низу всегда. ORDER BY field DESC в помощь. |
ну так я с этого и начинал, данная сортировка считает правильно, но считает все записи, а мне надо последние 5. Как буд то фраза LIMIT 5 игнорируется.
Почему же LIMIT 5 не срабатывает?
Спустя 15 часов, 38 минут, 53 секунды (24.06.2010 - 11:35) freaky написал(а):
никто не поможет?
Спустя 22 минуты, 7 секунд (24.06.2010 - 11:57) tomash написал(а):
SELECT * FROM (SELECT * FROM table WHERE name='$nam' ORDER BY `id` DESC LIMIT 5) AS t WHERE t.res_1 > t.res_2
А так?
LIMIT это самая последняя операция выполняемая СУБД, сначала выполняеться запрос по всем условия, а потом возвращаеться 5 из них ))))
Спустя 20 минут, 52 секунды (24.06.2010 - 12:18) waldicom написал(а):
SELECT COUNT(*) FROM tabl WHERE name='$nam' AND res_1 > res_2 AND `id` IN (select `id` FROM `tabl` ORDER BY `id` DESC LIMIT 5)
Спустя 2 минуты, 44 секунды (24.06.2010 - 12:21) tomash написал(а):
waldicom
Только DESC забыли
Только DESC забыли
Спустя 5 минут, 49 секунд (24.06.2010 - 12:26) waldicom написал(а):
Спасиб, отредактировал.
Спустя 4 часа, 33 секунды (24.06.2010 - 16:27) freaky написал(а):
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\page.php on line 53
Спустя 2 минуты, 31 секунда (24.06.2010 - 16:29) tomash написал(а):
сделайте mysql_query() OR die(mysql_error());
И посмотрите что там за ошибка в запросе
И посмотрите что там за ошибка в запросе
Спустя 2 минуты, 50 секунд (24.06.2010 - 16:32) SlavaFr написал(а):
пользуйся mysql_error и mysql_num_rows чтобы выяснить проблему с передоваемым в mysql_fetch_array ресурсом.
Спустя 23 секунды (24.06.2010 - 16:33) freaky написал(а):
Warning: Wrong parameter count for mysql_query() in Z:\home\localhost\page.php on line 56
Спустя 1 минута, 58 секунд (24.06.2010 - 16:35) SlavaFr написал(а):
что теперь каждую строчку переводить нужно?
Спустя 2 минуты, 59 секунд (24.06.2010 - 16:38) tomash написал(а):
COUNT(*) AS cnt
Спустя 2 минуты, 19 секунд (24.06.2010 - 16:40) freaky написал(а):
ничего не изменилось...
Спустя 3 минуты, 4 секунды (24.06.2010 - 16:43) freaky написал(а):
SELECT COUNT(*) FROM tabl WHERE name='$nam' AND res_1 > res_2 AND `id` IN (select `id` FROM `tabl` ORDER BY `id` DESC LIMIT 5)
Помойму плохая идея, раньше хоть считало, хоть и не так как надо, а теперь только ошибки.
Спустя 7 минут, 11 секунд (24.06.2010 - 16:50) SlavaFr написал(а):
да причем тут query? тут же параметров не хватает!
http://translate.google.de/translate_t?hl=...ry&sl=en&tl=ru#
http://translate.google.de/translate_t?hl=...ry&sl=en&tl=ru#
Спустя 34 минуты, 15 секунд (24.06.2010 - 17:24) freaky написал(а):
каких именно? в запросах типа
не разбираюсь
AND `id` IN (SELECT `id` FROM `tabl` ORDER BY `id` DESC LIMIT 5)
не разбираюсь
Спустя 3 минуты, 30 секунд (24.06.2010 - 17:28) tomash написал(а):
Сделайте вывод запроса в броузер! И посмотрите что скрипт в БД пихает
Спустя 59 секунд (24.06.2010 - 17:29) freaky написал(а):
может вернуться к первоначальному варианту, там без ошибок, всё считается, и понять почему считает не так как надо!?
Спустя 2 минуты, 12 секунд (24.06.2010 - 17:31) tomash написал(а):
SELECT count(*) FROM (SELECT * FROM table WHERE name='$nam' ORDER BY `id` DESC LIMIT 5) AS t WHERE t.res_1 > t.res_2
попрбуйте прямо в СУБД выполнить запрос
Спустя 43 секунды (24.06.2010 - 17:32) tomash написал(а):
Цитата (freaky @ 24.06.2010 - 14:29) |
может вернуться к первоначальному варианту, там без ошибок, всё считается, и понять почему считает не так как надо!? |
Он у Вас неправильно считает именно потому что запрос не правильный
Спустя 6 минут, 55 секунд (24.06.2010 - 17:39) waldicom написал(а):
короче, тут по ходу надо не только проготовить и положить в рот, но еще и прожевать.
Неужели трудно сделать такое:
Неужели трудно сделать такое:
$query = "SELECT COUNT(*) FROM tabl WHERE name='$nam' AND res_1 > res_2 AND `id` IN (select `id` FROM `tabl` ORDER BY `id` DESC LIMIT 5)";
$result = mysql_query($query) or die(mysql_error());
Спустя 15 минут, 9 секунд (24.06.2010 - 17:54) freaky написал(а):
Цитата (waldicom @ 24.06.2010 - 14:39) |
короче, тут по ходу надо не только проготовить и положить в рот, но еще и прожевать. Неужели трудно сделать такое: $query = "SELECT COUNT(*) FROM tabl WHERE name='$nam' AND res_1 > res_2 AND `id` IN (select `id` FROM `tabl` ORDER BY `id` DESC LIMIT 5)"; |
я это уже делал и писал.
tomash спасибо, теперь всё правильно считает, как надо.