2015-11-19 6 views
0

Я использую PHP для извлечения данных, хранящихся в таблице MySQL, а затем отобразить его на странице, используя следующий код:Изменение класса в зависимости от PHP значения переменной

CSS

.date { 
color:red; 
font-weight:bold; 
} 

HTML/PHP

<span class="date">'.$date_available.'</span> 

Это прекрасно работает, но мне нужно назначить другой класс в зависимости от значения в пределах date_available переменных $. Например: если переменная содержит значение SOLD, класс span должен быть таким, как показано выше. Если переменная содержит значение сейчас, должно быть:

HTML/PHP

<span class="date-two">'.$date_available.'</span> 

CSS

.date-two { 
color:green; 
font-weight:bold; 
} 

Возможно ли это с PHP или потребуется JavaScript для использования?

ответ

0

Да его возможно. Вы можете использовать, если решить, какой класс следует использовать для диапазона. Вы можете легко добавить новые классы с помощью else if.

if($date_available == "SOLD") { 
    echo '<span class="date">'.$date_available.'</span>'; 
} else { 
    echo '<span class="date-two">'.$date_available.'</span>'; 
} 
+0

отлично работает, спасибо! –

1
<?php 
$cls = $data_available == "SOLD" ? "date-two" : "date"; 
echo "<span class=\"{$cls}\">{$date_available}</span>"; 

редактирование: информация. вы проверяете, содержит ли ваша переменная «SOLD», и на основе этой проверки сохраните имя класса css, который будет использоваться в переменной. , то вы не выводите фиксированную строку класса, а содержимое переменной.

+1

Я думаю, что он новичок. Сокращение нехорошо учиться этому. – Tobias

+1

согласен. это естественно для меня в таких случаях, даже не задумываясь об этом. и он выполняет свою работу. –

+0

Да, я знаю, что вы имеете в виду. Его действительно стройнее. – Tobias

0

Изменить класс по дороге в:

<? if ($date_available == 'whatever'){ ?> 
     <span class="date"><? echo $date_available ?></span> 
    <? }else{ ?> 
     <span class="date-two"><? echo $date_available ?></span> 
    <? } ?> 
0
switch($date_available){ 
    case 'sold':$class='date-two';break; 
    case 'available':$class='date';break; 
    case 'low-stock':$class='date-three';break; 
    /* etc */ 
} 
echo "<span class='$class'>$date_available</span>"; 
1

В зависимости от того, если у вас есть один или несколько состояний вы могли бы пойти с использованием либо if() {} else {} конструкции, использовать array() для работы или Оператор switch может также использоваться, если у вас есть несколько состояний, требующих вывода того же класса.

, например, с использованием массива:

$classes = array(
    'sold' => 'date-two', 
    '...' => '...' //example values 
); 

// imagining that $data_available = 'SOLD' 
echo '<span class="'. ($classes[strtolower($data_available)] || 'date') .'">'; 

или с помощью переключателя заявление

$cls = 'date'; 
switch (strtolower($data_available)) { 
    case 'sold': 
    case 'sold2': // switch statements allow multiple 'cases' to be grouped for the same output. 
     $cls = 'date-two'; 
    break; 

    case '...': 
     $cls = '...'; 
    break; 

    default: 
     $cls = 'date'; 
    break; 
} 

для примера, если я смотрю на Tobias' ответ

Другой вариант вместо использования другой класс, просто знаю, что может выводить база данных и создавать для этого префиксные классы.

например.sold, bought и negotiating некоторые государства (пример)

Что вы можете сделать здесь просто

$cls = 'date-' . strtolower($data_available); // if $data_available is sold it will output date-sold 

echo '<span class=". $cls .">'; 

то в вашем CSS вы могли бы сделать что-то вроде:

.date-sold { 
    width: 420px; 
    background: green; 
} 

.date-bought { 
    width: 720px; 
    background: white; 
} 

.date-negotiating { 
    width: 30px; 
    background: transparent; 
} 

Таким образом, вы» всегда будет безопасным, и если ваш вход в базу данных будет согласован, то это будет то, что все ваши divs получат правильный класс с правильным CSS, применяемым без излишней перегрузки PHP.

Удачи вам!

Смежные вопросы