Есть: Запрос сортирует данные SELECT * FROM table ORDER BY row Вопрос: Как узнать позицию отсортированного элемента средствами запроса в sql + php. К примеру на 11 месте.
Код (Text): $name = "pupkin"; $res = mysql_query("SELECT `name` FROM `table` ORDER BY `row`"); for ($data = array(); $row = mysql_fetch_assoc($res); $data[] = $row); for ($i = 0; $i < count($data); $i++) { if ($data[$i]['name'] == $name) { echo $i; break; } }
Jampire, а полегче есть способ? Вы в правильном направлении) Немного с $name = "pupkin"; не догнал.. зачем? Объясняю. Есть к примеру 10 записей в таблице и у всех разные данные в row. 10, 344, 23 итп. Естественно 344 будет на 1 месте, вывожу в таблице по ORDER BY row. Нужно подсчитать на каком месте каждое значение. К примеру 344 - первое, 23 - второе и 10 - третье. Лимит на запись только одна.
Код (Text): $res = mysql_query("SELECT `name` FROM `table` ORDER BY `row`"); for ($data = array(); $row = mysql_fetch_assoc($res); $data[] = $row); for ($i = 0; $i < count($data); $i++) { echo $data[$i]['name']." на ".$i." месте<br />"; }
если тебе номер строки нужен то создай поле ID и пусть туда пишеться индекс строки [sql] CREATE TABLE IF NOT EXISTS `friends` ( `id` int(11) NOT NULL auto_increment, `friend` varchar(50) NOT NULL, `friend2` varchar(32) NOT NULL, `status` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1 ; [/sql]
"как узнать позицию отсортированного элемента". ID и так бы мог при желании взять) Jampire, спс, но не нужно выводить как fetch) Просто взять 1 элемент) Блинн тяжело объяснить т.к сам плохо шарю) Вообщем так: На изображение наносятся хиты и хосты N-го сайта. В базе много адресов и данных о хостах и хитах. Нужно отсортировать самые популярные и показать на каком он месте среди сайтов)) Он один среди них) Читается так:
Нумерацию можно сделать например так: set @a = 0; SELECT @a:= @a+1 as npp, table.* FROM table ORDER BY row;
Padaboo, ок) Честно говоря у меня с set @a = 0; проблемки , не фурычит. Это точно php? Или просто можно как переменную юзать $a = "0"; ?
Знаешь, что такое DDL? Вот оттуда вырос SQL, который реализовывается разными СУБД. Так вот, СУБД - это действительно СИСТЕМА, которая позволяет ОЧЕНЬ многое. Чего стоят одни процедуры и представления? @a - это переменная языка SQL.
ок тогда как грамотно поместить эту переменную при выполнении? mysql_query("тут переменные и все такое"); ?
Опиши таблицу (структуру), приведи несколько строк с данными для примера и напиши, что хочешь получить на выходе, мне кажется так будет проще посоветовать конкретный код. А вообще в MySQL отсутсвует такая возможность, как ROWNUM, RANK() или ROW_NUMBER() , как в ORACLE или MSSQL. То есть сам MySQL, на сколько я знаю, порядковый номер строки нигде не хранит и никак не показывает. Тут либо при выборке переменными MySQL пользоваться, либо после выборки в php считать этот порядковый номер. Я думаю так.
$site_info = mysql_query("SELECT hits, hosts FROM $t_site_stats WHERE http_host = '$http_host' AND now = '1'"); $row_info = mysql_fetch_row($site_info); И к примеру: $row_info[0]; - хиты $row_info[1]; - хосты и в этом духе... Как уже говорил нужно отсортировать и на каком месте вывести.. Проще говоря сайт по хостам среди других сайтов =) Причем не в табличном виде подсчет т.к инфа на картинку рисуется только о конкретно этом сайте
Думаю, сделать доп. поле с циферкой, показывающей популярность этого сайта и периодически, по крону например, запускать какой-то скрипт, который будет пересчитывать эти циферки...