За последние 24 часа нас посетили 58038 программистов и 1847 роботов. Сейчас ищут 1035 программистов ...

Определить на каком месте...

Тема в разделе "PHP и базы данных", создана пользователем Invision, 2 янв 2011.

  1. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Есть: Запрос сортирует данные SELECT * FROM table ORDER BY row
    Вопрос: Как узнать позицию отсортированного элемента средствами запроса в sql + php.

    К примеру на 11 месте.
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    вопрос непонятен

    Что есть элемент? чем он идентифицируется?
     
  3. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    SELECT * FROM table ORDER BY row
    limit 10,1
    Элемент на 11-ом месте.
     
  4. Jampire

    Jampire Активный пользователь

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    Код (Text):
    1. $name = "pupkin";
    2. $res = mysql_query("SELECT `name` FROM `table` ORDER BY `row`");
    3. for ($data = array(); $row = mysql_fetch_assoc($res); $data[] = $row);
    4. for ($i = 0; $i < count($data); $i++)   {
    5.     if ($data[$i]['name'] == $name) {
    6.         echo $i;
    7.         break;
    8.     }
    9. }
     
  5. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Jampire, а полегче есть способ? Вы в правильном направлении) Немного с $name = "pupkin"; не догнал.. зачем?

    Объясняю. Есть к примеру 10 записей в таблице и у всех разные данные в row. 10, 344, 23 итп. Естественно 344 будет на 1 месте, вывожу в таблице по ORDER BY row. Нужно подсчитать на каком месте каждое значение. К примеру 344 - первое, 23 - второе и 10 - третье. Лимит на запись только одна.
     
  6. Jampire

    Jampire Активный пользователь

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    Код (Text):
    1. $res = mysql_query("SELECT `name` FROM `table` ORDER BY `row`");
    2. for ($data = array(); $row = mysql_fetch_assoc($res); $data[] = $row);
    3. for ($i = 0; $i < count($data); $i++)   {
    4.     echo $data[$i]['name']." на ".$i." месте<br />";
    5. }
    :)
     
  7. maksim_rec

    maksim_rec Активный пользователь

    С нами с:
    21 дек 2009
    Сообщения:
    17
    Симпатии:
    0
    если тебе номер строки нужен то создай поле 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]
     
  8. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    "как узнать позицию отсортированного элемента". ID и так бы мог при желании взять)

    Jampire, спс, но не нужно выводить как fetch) Просто взять 1 элемент)
    Блинн тяжело объяснить т.к сам плохо шарю) Вообщем так:

    На изображение наносятся хиты и хосты N-го сайта. В базе много адресов и данных о хостах и хитах. Нужно отсортировать самые популярные и показать на каком он месте среди сайтов)) Он один среди них) Читается так:

     
  9. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Нумерацию можно сделать например так:
    set @a = 0;
    SELECT @a:= @a+1 as npp, table.* FROM table ORDER BY row;
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Invision
    в качестве аватарки разрешены только личные фото :D
     
  11. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Padaboo, ок)
    Честно говоря у меня с set @a = 0; проблемки , не фурычит. Это точно php? Или просто можно как переменную юзать $a = "0"; ?
     
  12. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Знаешь, что такое DDL? Вот оттуда вырос SQL, который реализовывается разными СУБД. Так вот, СУБД - это действительно СИСТЕМА, которая позволяет ОЧЕНЬ многое. Чего стоят одни процедуры и представления?
    @a - это переменная языка SQL.
     
  13. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    ок тогда как грамотно поместить эту переменную при выполнении?
    mysql_query("тут переменные и все такое"); ?
     
  14. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Опиши таблицу (структуру), приведи несколько строк с данными для примера и напиши, что хочешь получить на выходе, мне кажется так будет проще посоветовать конкретный код.
    А вообще в MySQL отсутсвует такая возможность, как ROWNUM, RANK() или ROW_NUMBER() , как в ORACLE или MSSQL. То есть сам MySQL, на сколько я знаю, порядковый номер строки нигде не хранит и никак не показывает. Тут либо при выборке переменными MySQL пользоваться, либо после выборки в php считать этот порядковый номер. Я думаю так.
     
  15. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    $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]; - хосты

    и в этом духе... Как уже говорил нужно отсортировать и на каком месте вывести.. Проще говоря сайт по хостам среди других сайтов =) Причем не в табличном виде подсчет т.к инфа на картинку рисуется только о конкретно этом сайте
     
  16. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Думаю, сделать доп. поле с циферкой, показывающей популярность этого сайта и периодически, по крону например, запускать какой-то скрипт, который будет пересчитывать эти циферки...
     
  17. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Из PHP это будет два последовательных запроса.