За последние 24 часа нас посетили 5532 программиста и 432 робота. Сейчас ищут 229 программистов ...

Изменение цвета строчки в таблице

Тема в разделе "PHP для новичков", создана пользователем Reken, 24 янв 2020.

Метки:
  1. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Подскажите пожалуйста:

    В mysql есть таблица:
    Название | Количество | Статус

    Я вывожу эту таблицу на html страницу:
    Код (Text):
    1. $result = mysqli_query($mysqli, $query) or die("ERORRRR " . mysqli_error($mysqli));
    2.  
    3. if($result)
    4. {
    5.     $rows = mysqli_num_rows($result);
    6. echo "<div style='overflow-x:auto;'><table border=1><tr><th>Название</th><th>Количество</th><th>Статус</th></tr>";
    7.     for ($i = 0 ; $i < $rows ; ++$i)
    8.     {
    9.      $row = mysqli_fetch_row($result);
    10.         echo "<tr>";
    11.             for ($j = 0 ; $j < 3 ; ++$j) echo "<td>$row[$j]</td>";
    12.         echo "</tr>";
    13.  
    14.     }
    15. }
    Дизайн таблицы подтягивается из css:
    Код (Text):
    1. table {
    2. font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
    3. font-size: 14px;
    4. border-collapse: collapse;
    5. text-align: center;
    6. }
    7. th, td:first-child {
    8. background: #228B22;
    9. color: white;
    10. padding: 10px 20px;
    11. }
    12. th, td {
    13. border-style: solid;
    14. border-width: 0 1px 1px 0;
    15. border-color: white;
    16. }
    17. td {
    18. background: #90EE90;
    19. }
    20. th:first-child, td:first-child {
    21. text-align: left;
    22. }
    Как реализовать, что бы когда у какой нибудь строчки поле «статус» имело значение «2», то эта строчка отличалась по цвету от других, допустим была «красной»?
     
  2. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    851
    Симпатии:
    207
    Адрес:
    Санкт-Петербург
    if() в помощь
     
  3. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Я понимаю что "if"...
    Помогите пожалуйста правильно подставить этот "if" в php скрипт...
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.401
    Симпатии:
    465
    Адрес:
    Татарстан
    PHP:
    1. echo ($row['$j]==2)  ? "<tr class="tr_red">" : "<tr>";
     
  5. Sail

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

    С нами с:
    1 ноя 2016
    Сообщения:
    1.249
    Симпатии:
    280
    Если о 10-й строке, то $j ещё не определена. :rolleyes:
     
  6. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Спасибо
    Но пока ещё не понял...
    Строка
    echo ($row['$j]==2) ? "<tr class="tr_red">" : "<tr>";
    В моем скрипте перед какой строкой должна быть?
    И скрипт PHP ругается:
    syntax error, unexpected 'tr_red'
     
  7. Sail

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

    С нами с:
    1 ноя 2016
    Сообщения:
    1.249
    Симпатии:
    280
    Тут с кавычками в строке проблема. Подробнее.
    Осталось определить класс tr_red и заменить $j на 2.
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.401
    Симпатии:
    465
    Адрес:
    Татарстан
    ну на коленке писал
    ... вместо
    PHP:
    1. echo "<tr>";
    ставим
    PHP:
    1. echo ($row[0]==2)  ? "<tr class='tr_red'>" : "<tr>";
    где 0 - индекс поля статус, я не знаю какое оно у вас по счету
    ну класс CSS уж сами сделайте
     
  9. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Спасибо за подробное разъяснение...
    Но всё равно не получается окрасить строчку, подскажите где я ошибся?

    PHP скрипт:
    Код (Text):
    1. $result = mysqli_query($mysqli, $query) or die("ERORRRR " . mysqli_error($mysqli));
    2. if($result)
    3. {
    4.     $rows = mysqli_num_rows($result);
    5. echo "<div style='overflow-x:auto;'><table border=1><tr><th>Название</th><th>Количество</th><th>Статус</th></tr>";
    6.     for ($i = 0 ; $i < $rows ; ++$i)
    7.     {
    8.      $row = mysqli_fetch_row($result);
    9.         echo ($row[3]==2)  ? "<tr class='tr_red'>" : "<tr>";
    10.             for ($j = 0 ; $j < 3 ; ++$j) echo "<td>$row[$j]</td>";
    11.         echo "</tr>";
    12.     }
    13. }
    CSS скрипт:
    Код (Text):
    1. table {
    2. font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
    3. font-size: 14px;
    4. border-collapse: collapse;
    5. text-align: center;
    6. }
    7. th, td:first-child {
    8. background: #228B22;
    9. color: white;
    10. padding: 10px 20px;
    11. }
    12. th, td {
    13. border-style: solid;
    14. border-width: 0 1px 1px 0;
    15. border-color: white;
    16. }
    17. td {
    18. background: #90EE90;
    19. }
    20. th:first-child, td:first-child {
    21. text-align: left;
    22. }
    23.  
    24. .tr_red {
    25.   tbody tr:nth-child {
    26.     background-color: #ffff00;
    27.   }
    28. }
    Вижу зеленую строчку, а должен видеть желтую...Так как статус = 2...
     
  10. Sail

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

    С нами с:
    1 ноя 2016
    Сообщения:
    1.249
    Симпатии:
    280
  11. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Понятно...
    Заменил
    Код (Text):
    1. echo ($row[3]==2)  ? "<tr class='tr_red'>" : "<tr>";
    На
    Код (Text):
    1. echo ($row[2]==2)  ? "<tr class='tr_red'>" : "<tr>";
    Не сработало...Всё равно строка зеленая...
    Проверил ради интереса, поставил произвольной кнопке class = 'tr_red', кнопка пожелтела...
    Не могу понять почему в таблице не срабатывает...
     
  12. Sail

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

    С нами с:
    1 ноя 2016
    Сообщения:
    1.249
    Симпатии:
    280
    Потому что странно описан стиль для .tr_red.
    Почему бы просто не:
    Код (Text):
    1. tr.tr_red {
    2.   background-color: red;
    3. }
    --- Добавлено ---
    Ещё в браузерах есть "инструменты разработчика".
    Помогают находить всякие несуразности.
    --- Добавлено ---
    Ещё про "инструменты".
     
  13. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.401
    Симпатии:
    465
    Адрес:
    Татарстан
    Правую кнопки мыши нажмите на тоц строчке - исследовать код вроде, откроется в инспекторе, посмотрите - класс то добавляется? Если да - проблема в ксс, если нет в коде
     
  14. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Проблема в css...
    Я когда удаляю текст относительно таблицы:
    Код (Text):
    1. table {
    2. font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
    3. font-size: 14px;
    4. border-collapse: collapse;
    5. text-align: center;
    6. }
    7. th, td:first-child {
    8. background: #228B22;
    9. color: white;
    10. padding: 10px 20px;
    11. }
    12. th, td {
    13. border-style: solid;
    14. border-width: 0 1px 1px 0;
    15. border-color: white;
    16. }
    17. td {
    18. background: #90EE90;
    19. }
    20. th:first-child, td:first-child {
    21. text-align: left;
    22. }
    То строчка краснеет. Если возвращаю в css параметры для таблицы, строчка снова зеленая. Пока что не понял, каким именно образом, параметры css для таблицы, перекрывают параметры css для tr_red
     
  15. Reken

    Reken Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    41
    Симпатии:
    0
    Всё получилось, всем спасибо за помощь...
    Заменил в css
    Код (Text):
    1. td {
    2. background: #90EE90;
    3. }
    На
    Код (Text):
    1. tr {
    2. background: #90EE90;
    3. }
    После этого всё получилось