Проверка на значение

Sudba

Гуру форума
Регистрация
6 Дек 2007
Сообщения
930
Реакции
50
Всем привет. Подскажите, как сделать проверку на значение.
Вот это работает. Данные проверяются в базе данных и если true, то значение выводится на сайт
PHP <span class="<?= $p->get("settings.spintax") ? "" : "not" ?>">Текст</span>
MYSQL "spintax":true,

Как бы сделать, то бы пхп проверял значение другое в mysql. У меня такое:
MySQL "modules":["test1","test2","test3","test4"]
И в пхп была проверка:
Если модуль имеет значение test1, то выводится на сайт текст: Тест1
Если имеет значение test2, то выводится: Тест2
Если значение test1 и test2, то выводится: Тест1 и Тест2

Как сделать такую проверку?
 
Последнее редактирование:
Допустим,
$modules = ["test1","test2","test3","test4"];
$module = $modules[$some_key];

Тогда
PHP:
<?
switch ($module) {
  case 'Test 1':
      $module_text = 'Тест 1';
      break;
  case 'Test 2':
      $module_text = 'Тест 2';
      break;
  case 'Test 3456...':
      $module_text = 'И так далее';
      break;
  default:
     $module_text = 'Текст по умолчанию';
}
?>

<span><?= $module_text?></span>

p.s. Если эта подстановка делается для всех строк таблицы, то нужно просто добавить еще один столбец в таблицу
 
Последнее редактирование:
Допустим,
$modules = ["test1","test2","test3","test4"];
$module = $modules[$some_key];

Тогда
PHP:
<?
switch ($module) {
  case 'Test 1':
      $module_text = 'Тест 1';
      break;
  case 'Test 2':
      $module_text = 'Тест 2';
      break;
  case 'Test 3456...':
      $module_text = 'И так далее';
      break;
  default:
     $module_text = 'Текст по умолчанию';
}
?>

<span><?= $module_text?></span>

p.s. Если эта подстановка делается для всех строк таблицы, то нужно просто добавить еще один столбец в таблицу

В базе данных есть таблица, в ней строка заполнена так:
..."spintax":true,"modules":["test1","test2","test3","test4"]....

И получается в php файле в шаблоне идет запрос к этой строке. Если spintax=true, то выводим текст. Если false, то не выводим:
<span class="<?= $p->get("settings.spintax") ? "" : "not" ?>">Текст</span>

Мне нужно такой же запрос к базе данных, но есть modules=test1, то выводим Тест1. Если modules=test2, то Тест2. Если modules=test1&test2, то выводим Тест1иТест2.
 
Тогда, видимо так
$modules = $p->get("settings.modules");
$module = $modules['test1'];

А дальше, через switch, как выше показано, или через if elseif
проверяешь значение и подставляешь то, что нужно

p.s. get вернет тебе не одно значение, как в случае с spintax, а массив значений.
Поэтому из массива еще потребуется выдернуть нужное значение
 
Тогда, видимо так
$modules = $p->get("settings.modules");
$module = $modules['test1'];

А дальше, через switch, как выше показано, или через if elseif
проверяешь значение и подставляешь то, что нужно

p.s. get вернет тебе не одно значение, как в случае с spintax, а массив значений.
Поэтому из массива еще потребуется выдернуть нужное значение
Что-то не вышло. Вот так вставил код:

<? $modules = $p->get("settings.modules");
$module = $modules['test1'];
switch ($module) {
case 'test1':
$module_text = 'Тест 1';
break;
default:
$module_text = 'Текст по умолчанию';

?>
<span><?= $module_text?></span>
 
Код:
$modsettingsrepl = array(
"test1"=>"Тест1",
"test2"=>"Тест2",
...
"test10"=>"Тест10"
);
$module_text = "";
foreach ($modules as $m)
   $module_text .= ($module_text ? "и" : "") . $modsettingsrepl[$m];
if (empty($module_text)) 
   $module_text = 'Текст по умолчанию';
 
Код:
$modsettingsrepl = array(
"test1"=>"Тест1",
"test2"=>"Тест2",
...
"test10"=>"Тест10"
);
$module_text = "";
foreach ($modules as $m)
   $module_text .= ($module_text ? "и" : "") . $modsettingsrepl[$m];
if (empty($module_text))
   $module_text = 'Текст по умолчанию';
Вставил вот так, страница вообще не открывается:
Код:
<?= $modules = $p->get("settings.modules");                                           

$modsettingsrepl = array(
"test1"=>"Тест1",
"test2"=>"Тест2",
...
"test10"=>"Тест10"
);
$module_text = "";
foreach ($modules as $m)
   $module_text .= ($module_text ? "и" : "") . $modsettingsrepl[$m];
if (empty($module_text))
   $module_text = 'Текст по умолчанию';
?>
<span><?= $module_text?></span>
 
Вставил вот так, страница вообще не открывается:
Код:
<?= $modules ...

выше было просто для примера)
правильней так:
Код:
<?
$modules = $p->get("settings.modules");                                        
$modsettingsrepl = array(
"test1"=>"Тест1",
"test2"=>"Тест2",
"test10"=>"Тест10"
);
$module_text = "";
foreach ($modules as $m)
   $module_text .= ($module_text ? "и" : "") . $modsettingsrepl[$m];
if (empty($module_text))
   $module_text = 'Текст по умолчанию';
?>
<span><?=$module_text;?></span>
 
выше было просто для примера)
правильней так:
Код:
<?
$modules = $p->get("settings.modules");                                       
$modsettingsrepl = array(
"test1"=>"Тест1",
"test2"=>"Тест2",
"test10"=>"Тест10"
);
$module_text = "";
foreach ($modules as $m)
   $module_text .= ($module_text ? "и" : "") . $modsettingsrepl[$m];
if (empty($module_text))
   $module_text = 'Текст по умолчанию';
?>
<span><?=$module_text;?></span>
Отлично заработало. Тогда второй вопрос сразу.
У меня два тарифа.
Тариф 1. Возможности: Тест1 и Тест2. Нету Тест3
Тариф 2. Возможности: Тест3. Нету Тест1 и Тест2.

Как вывести тех возможностей, которых нет под зачеркнутую линию? Тогда аккуратные столбцы будут рядом стоять и человек сможет тут же увидеть разницу между тарифами.
 
Назад
Сверху