За последние 24 часа нас посетили 19129 программистов и 1640 роботов. Сейчас ищут 915 программистов ...

Вывод результата запроса в цвете

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

  1. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Есть запрос к БД. Можно ли строки при определенных условиях окрашивать в один из выбранных цветов.
    Например некоторые записи имеют в одном поле индекс равный еденице, то эти строки нужно окрашивать например в зеленый цвет; с индексом равным 2 - красным, а 3-м - черным.
    Можно ли так сделать средствами РНР?
     
  2. Crayday

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

    С нами с:
    7 апр 2011
    Сообщения:
    26
    Симпатии:
    0
    Можно =))

    Причём даже к чёрту php - при помощи css можно.
     
  3. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Crayday
    И привязать к условию запроса? Не подскажешь как?
     
  4. Crayday

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

    С нами с:
    7 апр 2011
    Сообщения:
    26
    Симпатии:
    0
    К условию запроса тоже можно привязать, но это лишняя сложность. А так просто выводишь их в таблицу (или множеством дивов) и пишешь свойство css:
    td:first-child {color: green};
    td:nth-child(2) {color: red};
     
  5. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Вот именно, что надо привязать к условию запроса.
    Данные я вывожу в таблицу. Нужно, что бы результирующие строки окрасились в определенные цвета при определенном иде в каждой строке
     
  6. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Т.е: ID = 1 (green), ID = 2 (red), ID = 3 (black)
     
  7. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Перед выводом в таблицу нужно проверить то, что будете выводить и если соответствует условию, при котором нужно окрасить, то окрасить, если правильно понял. Думаю, функций по работе со строками должно хватить с головой.
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Димон, так ты уже всё знаешь, всё решил, придумал, по какому критерию окрашивать...
    Если после запроса твои данные будут в массиве и если там будет этот ID, то... тоже знаешь, условие if..else или switch, или вообще ID использовать как индексы массива с цветами.
     
  9. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Mr. T
    Выводятся все записи из таблицы, выводятся массивом. Как их потом проверять, если с идом=1 может быть сотня записей, и другими идами тоже. Для того и хочу их окрасить по идам, что бы визуально (глядя на результат) было видно какая запись с каким идом идет
     
  10. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Например,

    Код (Text):
    1. foreach($arr as $val){
    2.   $color='000';
    3.   switch($val['id']){
    4.     case 1:
    5.      $color='f00';
    6.     break;
    7.     default:
    8.   }
    9.   echo '<td style="color:#',$color,';">',$val['text'],'</td>',"\n";
    10. }
     
  11. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    YSandro
    То то и оно, что не пойму куда и чего привязать.
    Допустим есть запрос:
    Код (Text):
    1.  
    2. $sql = "SELECT
    3.   *
    4.   FROM
    5.   `table`
    6.   WHERE
    7.      бла бла бла
    8.   GROUP BY
    9.      бла бла бла
    10.   ";
    11.  
    12. $result = mysql_query($sql)or die ("Query failed: " .mysql_error());
    13.  while ($row = mysql_fetch_array ($result))
    14.  {echo "<tr>";
    15.     echo "<td align='left'><a href='sost_zakaz.php?zakaz_id=",$row['zakaz_id'],"'><img align='right' hspace='2' width='16' height='16' src='img/rabotau' border='0' width='155' height='119' alt='Работа по заказу' title='Работа по заказу' /></a></td>";
    16.     echo "
    17.     <td><h6>",$row['zakaz_id'],"</td>
    18.     <td><h6>",$row['date_zakaz'],"</td>
    19.     <td><h6>",$row['FIO'],"</td>
    20.     <td><h6>",$row['adress'],"</td>
    21.     <td><h6>",$row['telephone'],"</td>
    22.     <td><h6>",$row['avto_name'],"</td>
    23.     <td><h6>",$row['avto_model'],"</td>
    24.     <td><h6>",$row['gos_numer'],"</td>
    25.     <td><h6>",$row['zayavleno'],"</td>
    26.     <td><h6>",$row['sotr_fio'],"</td>";
    27.     echo "</tr>";
    28.     }
    29.     echo "</table>";
    30. }
    Как мне тут с цветом влезти?
     
  12. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Забыл еще одно поле показать: $row['sost_id']. Именно по этому полю и нужно окрашивать результат. Поле имеет всего три состояния 1,2,3.
     
  13. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ну осталось перед echo "<tr>..." поставить условие,
    Код (Text):
    1. $color='000';
    2. if($row['sost_id']==1){
    3.   $color='e99';
    4. }elseif($row['sost_id']==2){
    5.   $color='9e9';
    6. }...
    7.  
    8. echo "<tr style='color:#{$color}'>";
     
  14. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    YSandro
    Извини конечно, но я не понял. Получается, что при каждом $row['sost_id'] будет выводится либо 1, или 2, или3. Т.е. всего три строчки кода?
     
  15. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Аааа, вот теперь понял! Спасибо попробую, очень интересно!!! Завтра вечером отпишусь, а сейчас спать, всем огромное спасибо, особенно YSandro
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =) надо на шашлычки и в баньку срочно
     
  17. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Что то меня смущает отсутствие кавычек. Может так надо? Но все равно не работает:
    Код (Text):
    1. echo "<tr style='color:#",$color,"'>";
    Текст не окрашивается
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Димон
    цветов много разных?

    [css]
    tr.color1 td {color: green;}
    tr.color2 td {color: red;}[/css]
    HTML:
    1.  
    2. <tr class='color1'><td>...
     
  19. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    YSandro
    Получается следующее: Цвет текста весь (по всем строкам таблицы) окрашивается в первый выбранный цвет.
     
  20. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    igordata
    Цвета всего три. Таблица из БД выводится в массиве, как окрасить текст по идам?
     
  21. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Тут уже предпочтения программера, и так будет работать, и так. Т.к. строка "<tr style='color:#{$color}'>" в двойных кавычках, то будет подставлена переменная $color, а фигурные скобки удалятся. Так лично мне нагляднее.
    Приведи ещё раз твой исправленный фрагмент кода, где выводится html.
     
  22. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Димон
    PHP:
    1. <?php
    2.  
    3. $sql = "SELECT * FROM `table` WHERE бла бла бла GROUP BY бла бла бла";
    4. $result = mysql_query($sql)or die ("Query failed: " .mysql_error());
    5. echo '<style type="text/css">
    6.  tr.sost_1 { background-color: red; }
    7.  tr.sost_2 { background-color: blue; }
    8.  tr.sost_3 { background-color: green; }
    9. </style>';
    10. echo '<table>';
    11. while ($row = mysql_fetch_array ($result)){
    12.   echo '<tr class="sost_'.$row['sost_id'].'">';
    13.     echo '<td align="left"><a href="sost_zakaz.php?zakaz_id='.$row['zakaz_id'].'"><img align="right" hspace="2" width="16" height="16" src="img/rabotau" border="0" width="155" height="119" alt="Работа по заказу" title="Работа по заказу" /></a></td>';
    14.     echo '
    15.      <td><h6>'.$row['zakaz_id'].'</td>
    16.      <td><h6>'.$row['date_zakaz'].'</td>
    17.      <td><h6>'.$row['FIO'].'</td>
    18.      <td><h6>'.$row['adress'].'</td>
    19.      <td><h6>'.$row['telephone'].'</td>
    20.      <td><h6>'.$row['avto_name'].'</td>
    21.      <td><h6>'.$row['avto_model'].'</td>
    22.      <td><h6>'.$row['gos_numer'].'</td>
    23.      <td><h6>'.$row['zayavleno'].'</td>
    24.      <td><h6>'.$row['sotr_fio'].'</td>
    25.    </tr>';
    26. }
    27. echo '</table>';
     
  23. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Gromo
    В данном случае, все ячейки таблицы окрашиваются в красный цвет. Текст остается черным.
    А в строке:
    Код (Text):
    1. echo '<tr class="sost_'.$row['sost_id'].'">';
    ошибка с кавычками
     
  24. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    HTML:
    Код (Text):
    1. $sql = "SELECT
    2.   *
    3.   FROM
    4.   `sotrudniki`,`zakaz`,`avto_name`,`avto_model`,`month`,`sost`
    5.   WHERE
    6.   `sotrudniki`.`Sotrudnik_id`=`zakaz`.`Sotrudnik_id` AND
    7.   `zakaz`.`avto_name_id`=`avto_name`.`avto_name_id` AND
    8.   `zakaz`.`avto_model_id`=`avto_model`.`avto_model_id`
    9.   GROUP BY `zakaz`.`zakaz_id`
    10.   ";
    11.  
    12. $result = mysql_query($sql)or die ("Query failed: " .mysql_error());
    13.   echo '<style type="text/css"> tr.sost_1 { background-color: red; }; tr.sost_2 { background-color: blue; }; tr.sost_3 { background-color: green; }</style>';
    14.   $num_rows = mysql_num_rows($result);
    15.  echo " Всего получено $num_rows записи(ей)\n";
    16.  echo "<table border='1' WIDTH='100%'>";
    17.  echo "<tr bgcolor='#2A1FAA' border='1' style='border:dashed' bordercolor='#2A1FAA' height:'10px'>";
    18.  
    19.  echo "
    20. <th></th>
    21.  <th><h4 style='color:#FFF'>Номер заказа</th>
    22.  <th><h4 style='color:#FFF'>Дата заказа</th>
    23.  <th><h4 style='color:#FFF'>Заказчик</th>
    24.  <th><h4 style='color:#FFF'>Адрес заказчика</th>
    25.  <th><h4 style='color:#FFF'>Телефон заказчика</th>
    26.  <th><h4 style='color:#FFF'>Марка автомобиля</th>
    27.  <th><h4 style='color:#FFF'>Модель автомобиля</th>
    28.  <th><h4 style='color:#FFF'>Гос. номер</th>
    29.  <th><h4 style='color:#FFF'>Заявлено</th>
    30.  <th><h4 style='color:#FFF'>Принял заказ</th>";
    31.  echo "</tr>";
    32.  while ($row = mysql_fetch_array ($result))
    33.  {
    34.      $color='000';
    35. if($row['sost_id']=1){
    36.   $color='C00';
    37. }
    38. else if($row['sost_id']=2){
    39.   $color='390';
    40. }
    41. else if($row['sost_id']=3){
    42.   $color='000';
    43. }
    44.     echo "<tr style='color:#{$color}'>";
    45.     echo "<td align='left'><a href='sost_zakaz.php?zakaz_id=",$row['zakaz_id'],"'><img align='right' hspace='2' width='16' height='16' src='img/rabotau' border='0' width='155' height='119' alt='Работа по заказу' title='Работа по заказу' /></a></td>";
    46.     echo "
    47.     <td>",$row['zakaz_id'],"</td>
    48.     <td>",$row['date_zakaz'],"</td>
    49.     <td>",$row['FIO'],"</td>
    50.     <td>",$row['adress'],"</td>
    51.     <td>",$row['telephone'],"</td>
    52.     <td>",$row['avto_name'],"</td>
    53.     <td>",$row['avto_model'],"</td>
    54.     <td>",$row['gos_numer'],"</td>
    55.     <td>",$row['zayavleno'],"</td>
    56.     <td>",$row['sotr_fio'],"</td>";
    57.     echo "</tr>";
    58.     }
    59.     echo "</table>";
    60. }
     
  25. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    При таком коде все $row['sost_id'] становится равным 1