[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. Billar

    Billar Banned

    Joined:
    9 Jul 2012
    Messages:
    15
    Likes Received:
    5
    Reputations:
    5
    Нет, не в браузере. Задача с проверкой будет запускаться по крону

    Фишка в том, что проверка только одной записи может занять до минуты времени (или 2-3 секунды)
    А их там около 300-400 (60 ГБайт данных)

    Если кому интересно, почему так дохера, то я просто решил сделать брутфорс MD5 на радужных таблицах с помощью MySQL.
     
    #1781 Billar, 11 Nov 2012
    Last edited: 11 Nov 2012
  2. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    Написать скрипт с циклом и запускать кроном, если нет лимитов на процесс
     
  3. Billar

    Billar Banned

    Joined:
    9 Jul 2012
    Messages:
    15
    Likes Received:
    5
    Reputations:
    5
    Ок. Подскажи ка, зачем отвечать цикл, если он в программе принципально не нужен из-за большого время выполнения?
     
  4. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    И для чего использовать веб-кодинг и curl?
    Не разумнее использовать адекватную реализацию на C под GPU?
     
  5. Wytch

    Wytch New Member

    Joined:
    29 Nov 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Есть таблица "table1" в ней записи с атрибутами "х" "у" "color" и др.

    как всё это вывести через php на страницу, чтобы они образовали матрицу с координатами x,y (нулевые значения в верхнем левом углу) с отображением координат и цвета (просто в виде текста) примерно так:

    0:0 1:0 2:0
    red red red ......

    0:1 1:1 2:1
    red red red ......

    .........................
     
  6. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    Reputations:
    863
    Захожу в гугл и задаю такой вопрос "php рисуем графики"
    тут же ответ: it.nittis.ru/php-graph.html

    PHP:
     function ImageColor($im$color_array)
    {
    return 
    ImageColorAllocate(
    $im,
    isset(
    $color_array['r']) ? $color_array['r'] : 0,
    isset(
    $color_array['g']) ? $color_array['g'] : 0,
    isset(
    $color_array['b']) ? $color_array['b'] : 0
    );
    }
     
    //определим массив с данными, которые необходимо вывести в виде графика.
    $data[] = '70.00';
    $data[] = '28.72';
    $data[] = '60.74';
    $data[] = '54.30';
    $data[] = '57.95';
    $data[] = '61.47';
    $data[] = '63.78';
    $data[] = '56.07';
    $data[] = '52.67';
    $data[] = '47.07';
    $data[] = '45.26';
    $data[] = '47.24';
     
    //параметры изображения
    $width 500//ширина
    $height 300//высота
    $padding 20//отступ от края
    $step 2//шаг координатной сетки
     
    //создаем изображение
    $im = @ImageCreate ($width$height)
    or die (
    "Cannot Initialize new GD image stream");
     
    //задаем цвета, которые будут использоваться при отображении картинки
    $bgcolor ImageColor($im, array('r'=>255'g'=>255'b'=>255));
    $color ImageColor($im, array('b'=>222));
    $green ImageColor($im, array('g'=>175));
    $gray ImageColor($im, array('r'=>175'g'=>175'b'=>175));
     
    //определяем область отображения графика
    $gwidth $width $padding;
    $gheight $height $padding;
     
    //вычисляем минимальное и максимальное значение
    $min min($data);
    $min floor($min/$step) * $step;
    $max max($data);
    $max ceil($max/$step) * $step;
     
    //рисуем сетку значений
    for($i $min$i $max $step$i += $step)
    {
    $y $gheight - ($i $min) * ($gheight) / ($max $min) + $padding;
    ImageLine($im$padding$y$gwidth $padding$y$gray);
    ImageTTFText($im80$padding 1$y 1$gray"verdana"$i);
    }
     
    //отображение графика
    $cnt count($data);
    $x2 $padding;
    $i 0;
     
    //стоит отметить, что начало координат для картинки находится
    //в левом верхнем углу, что определяет формулу вычисления координаты y
    $y2 $gheight - ($data[$i] - $min) * ($gheight) / ($max $min) + $padding;
     
    for(
    $i 1$i $cnt$i++)
    {
    $x1 $x2;
    $x2 $x1 + (($gwidth) / ($cnt 1));
    $y1 $y2;
    $y2 $gheight - ($data[$i] - $min) * ($gheight) / ($max $min) + $padding;
     
    //Рисуются две линии, чтобы сделать график более заметным
    ImageLine($im$x1$y1$x2$y2$color);
    ImageLine($im$x1 1$y1$x2 1$y2$color);
    }
     
    //Отдаем полученный график браузеру, меняя заголовок файла
    header ("Content-type: image/png");    
    ImagePng ($im);
    остается все это дело тебе только воссоеденить с бд!

    там где строчка
    задается цвет твоей шкалы.

    Там геде
    задается масив твоих значений!

    P.S: Мне кажется, этот вопрос было бы уместней задать в пхп разделе...
     
    _________________________
  7. Wytch

    Wytch New Member

    Joined:
    29 Nov 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    но мне нужны mysql команды, а не php код
    не важно, каким образом это будет выводится, главное чтобы вывелись значения x,y,color
    проблема в том, что я умею выводить каждый раз только по одному значению, получаются тормоза и скрипт виснет не докончив всё выводить
     
  8. D1mka

    D1mka Elder - Старейшина

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    Как реализовать вложенные под форумы?

    Всем привет, подскажите как реализовать: в index.php выводится список форумов (генерируются ссылки типа /topic.php?forumId=1), на topic.php уже выводятся сами посты. А как можно еще один список форумов, допустим для странички /topic.php?forumId=1. вот как здесь http://forum.antichat.ru/forumdisplay.php?f=37 идут темы а сверху есть еще один форум - ПО для Web разработчика.
    Как это спроектировать в бд? желательно что бы такая вложенность была не ограниченной.
     
  9. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    http://mikhailstadnik.com/hierarchical-data-structures-and-doctrine
    неплохая дока по хранению деревьев.
    Трандиционно используются либо смежные вершины (более простой способ, однако затратный при большой вложенности) либо вложенное множество (более трудный для понимания и реализации, зато экономим на выборках)
    Под конкретную ситуацию выбирается конкретный способ, однако чаще это смежные вершины, т.к. при вложенном множестве мы имеем большие проблемы при insert/update, и зачастую для тривиальных задач не нужны частые выборки глубоких структур, чаще мы имеем 2-3 уровня.
     
    _________________________
    1 person likes this.
  10. D1mka

    D1mka Elder - Старейшина

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    спасибо, а попроще не как нельзя? добавить какой то столбец к таблице форумов и по нему идентифицировать уже вложенность?
     
  11. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    можно.
    добавить столбец id и parent_id к таблице форума, где parent_id будет ссылаться на родительский id
     
    _________________________
  12. D1mka

    D1mka Elder - Старейшина

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    вот, а если вложенность не ограничена? как тогда?
     
  13. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    а кто её ограничивает при parent_id? вкладывай сколько угодно много
     
    _________________________
  14. D1mka

    D1mka Elder - Старейшина

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    спасибо все получилось, а как можно генерировать ссылки на глубину разделов? как здесь Форум АНТИЧАТ > Для Вебмастера > PHP, PERL, MySQL, JavaScript
     
  15. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    есть таблица hosts_on_site
    в ней колонки user,id,ip
    в колонке `user` может быть NULL или число.
    надо получить уникальные ip
    при этом чтобы если в `user` есль какое то значение то надо чтобы выводилось это значение и была сортировка по id

    "select * from hosts_on_site group by ip order by user DESC,id DESC"

    что в запросе надо поправить?



    Пример как всё должно быть
    Исходная таблица
    id|user|ip
    1|__2_|123.11.8.1
    2|NULL|123.11.8.1
    3|NULL|124.2.2.2
    4|__1_|90.0.0.2
    5|__1_|90.0.0.2
    6|NULL|90.0.0.2

    как должно быть выведено
    id|user|ip
    5|__1_|90.0.0.2
    3|NULL|124.2.2.2
    1|__2_|123.11.8.1
     
  16. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    select * from test group by ip order by id DESC
     
    _________________________
  17. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    такой запрос я пробовал
    он выведет примерно следующее



    6|NULL|90.0.0.2
    3|NULL|124.2.2.2
    2|NULL|123.11.8.1

    а мне надо чтобы выводились айди если есть соответствие айпишнику.
     
  18. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    На основание данных выше что ты дал - он выдаёт как раз что тебе нужно
     
    _________________________
  19. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    у меня почему то не так по факту :mad:

    хорошо если запрос работает на моём примере то он не будет работать на этом примере

    1|NULL|123.11.8.1
    2|__2_|123.11.8.1
    3|__2_|123.11.8.1
    4|NULL|123.11.8.1
    5|NULL|123.11.8.1
    6|NULL|124.2.2.2
    7|NULL|90.0.0.2
    8|__1_|90.0.0.2
    9|__1_|90.0.0.2
     
    #1799 dr.Web, 15 Dec 2012
    Last edited: 15 Dec 2012
  20. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    SELECT * FROM (SELECT * FROM hosts_on_site WHERE user IS NOT NULL GROUP BY user UNION SELECT * FROM hosts_on_site GROUP BY ip) AS table1 GROUP BY ip ORDER BY id DESC;
    (алиас поправил)
     
    #1800 Art!P, 15 Dec 2012
    Last edited: 16 Dec 2012
    1 person likes this.
Thread Status:
Not open for further replies.