За последние 24 часа нас посетили 55354 программиста и 1798 роботов. Сейчас ищут 968 программистов ...

Вывод из MySql + подсвечивает одинаковые значения!

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

  1. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    короче тема такая, в mysql таблице есть поле серийный номер!
    с помошью каких функций можно сделать так чтобы при выводе одинаковые серийные номера к примеру горели грасным???
    я поюзал форумы, но там в основном отсеивают тоесть наоборот их не выводят!
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Можешь попробовать такой вариант:
    PHP:
    1. <?php
    2. // ...
    3. $sql = "SELECT `serial`, COUNT(*) AS `cnt` FROM `tablename` GROUP BY `serial` HAVING `cnt` > 1";
    4. $res = mysql_query($sql);
    5. $doubleSerials = array();
    6. if($res and mysql_num_rows($res)) {
    7.     while($row = mysql_fetch_assoc($res))
    8.         $doubleSerials[] = $row['serial'];
    9. }
    10. $sql = "SELECT * FROM `tablename`";
    11. $res = mysql_query($sql);
    12. if($res and mysql_num_rows($res)) {
    13.     while($row = mysql_fetch_assoc($res)) {
    14.         $color = in_array($row['serial'], $doubleSerials) ? '#ff0000' : '#000000';
    15. ?>
    16.  
    17.     <div style="color: <?php echo($color); ?>;"><?php echo($row['serial']); ?></div>
    18. <?php
    19.     }
    20. }
    21. // ...
    22. ?>
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я могу предложить вариант на вложенных массивах
     
  4. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0


    дело в тем что у меня вот такой сложный запрос, и в него както надо внедрить эту штуку)))
    if($filter_address) {
    $where[] = "r.address LIKE ".$this->_db->Quote( '%'.$this->_db->getEscaped( $filter_address, true ).'%', false );
    }
    if($filter_phone) {
    $where[] = "r.phone = ".$this->_db->Quote($filter_phone);
    }
    $where = count( $where ) ? ' WHERE ' . implode( ' AND ', $where ) : '';
    $orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir;



    $sql = "SELECT COUNT(r.id) FROM #__screport as r".$where;
    $this->_db->setQuery($sql);
    $total = $this->_db->loadResult();

    jimport('joomla.html.pagination');
    $pagination = new JPagination( $total, $limitstart, $limit );

    $sql = "SELECT r.id, DATE_FORMAT(r.daterepair, '%d.%m.%Y') as daterepair, r.serial_number, r.statu, r.prestatus, r.description, r.upload, DATE_FORMAT(r.created, '%d.%m.%Y') as created, r.transportcost, r.costwork, r.act_nomber, r.user_id, scu.status2, scu.params, "
    . "IF(CONCAT_WS(' ', cmf.lastname, cmf.firstname, cmf.patronymic) != '', CONCAT_WS(' ', cmf.lastname, cmf.firstname, cmf.patronymic), r.clientname) as clientname, "
    . "IF(u.name != '', u.name, r.username) as username,"
    . "sn.name as serial_number2"
    . "\n FROM #__screport as r"
    . "\n LEFT JOIN #__scclient_master_fullname as cmf ON(cmf.id = r.client_id)"
    . "\n LEFT JOIN #__users as u ON(u.id = r.user_id)"
    . "\n LEFT JOIN #__scserial_number as sn ON(sn.name = r.serial_number)"
    . "\n LEFT JOIN #__scusers as scu ON(scu.user_id = r.user_id)"
    . $where.$orderby;
    $rows = $this->_getList($sql, $pagination->limitstart, $pagination->limit);
    $output = array(
    'rows' => $rows,
    'pagination' => $pagination,
    'order' => $filter_order,
    'order_Dir' => $filter_order_Dir,
    'show_filter' => $show_filter
    );
    /* filter date dafault */
    $output['filter_datefrom'] = $filter_datefrom;
    $output['filter_dateto'] = $filter_dateto;
    /* filter sn */
    $output['filter_sn'] = $filter_sn;
    ну это основная часть запроса