2015-03-22 3 views
0

У меня есть кнопки, которые отображаются из SQL запроса:Отключить кнопку на условиях

 $username = new User(); 
    $name = $username->data()->username; 
    $sql1 = DB::getInstance()->query("SELECT names FROM list WHERE username = '$name'"); 
    if (!$sql1->count()) { 
     echo 'No data'; 
    } else { 
     foreach ($sql1->results() as $sql1) { 
      ?> 

            <p><button class="" > <?php echo $sql1->names; ?></button></p> 
            <?php        
          } 
          } 

Это две кнопки, которые соответствуют условиям из запроса, так что я пытаюсь отключить одну из отображаемых кнопок, если это это не соответствует другому условию. Например, есть две кнопки: Джон и Пудель. И запрос, чтобы соответствовать, если одна из кнопок - животное.

Так что если кнопка john не соответствует запросу, ее следует отключить.

+0

Ну, просто добавьте свойство 'disabled' к кнопке, вот и все ... – arkascha

+0

Это всего лишь один тег кнопки, который отображает две кнопки. Разве обе они не будут отключены, если я его добавлю? – Gina

+0

Нет, вы создаете две отдельные кнопки с этой строкой, потому что она выполняется дважды. Для каждого выполнения вы можете получить другой результат для условного и установить свойство 'disabled' в зависимости от этого. – arkascha

ответ

0

Попробуйте следующее:

<button class="<?php if($sql1->names != "required_name") echo "disabled" ?>"> 
<?php echo $sql1->names; ?> 
</button> 
+0

Спасибо за вашу помощь, но я попробовал ваш код, и обе кнопки отключены. Я думаю, потому что имена $ sql-> выводят обе кнопки, поэтому, если использовать их с запросом, они оба становятся отключенными. – Gina

+0

@Gina Я думаю, вы в замешательстве ... '$ sql-> names' - это просто переменная. Он ничего не выводит сам по себе. – duskwuff

+0

Я имел в виду, когда я повторяю имена $ sql->, он выводит обе кнопки, поэтому приведенный выше код отключает обе кнопки.Извините, если я что-то пропустил. Я решил сделать это другим путем, просто показывая одну кнопку. – Gina

1

Я попытаюсь выразить идею набросал в комментариях к вопросу, как вы просили меня и объяснить, шаг за шагом:

foreach ($sql1->results() as $set) { 
    echo sprintf('<p><button %s>%s</button></p>'."\n", 
     in_array($set->name, array('poodle','cat','sheep')) ? 'disabled' : '', 
     $set->name); 
} 

Здесь $set - это другой объект (набор атрибутов) для каждой итерации цикла foreach. Вы сказали, что у вас есть две записи в этом запросе, поэтому две кнопки генерируются. Каждый $set имеет имя ($set->name), если вы правильно понимаете свой код (я не знаю вашу базу данных ...). Это имя используется дважды для генерации каждой кнопки: сначала имя используется как текст в кнопке, а затем используется в условном выражении, чтобы решить, должна ли кнопка быть отключена или нет. Это условие реализуется как выражение trinary, строка 3 в приведенном выше примере. В строке вызывается функция: in_array(). Это возвращает true или false. Если true, то к кнопке добавляется атрибут «disabled», если false, вместо этого добавляется пустая строка (''), поэтому кнопка не имеет свойство disabled.

Это, очевидно, не законченный код. Он предназначен для того, чтобы дать вам эту идею, поэтому вы должны понимать это, а не просто копировать и попробовать. Не стесняйтесь спрашивать, возникают ли вопросы!

+0

Спасибо, я попробую. – Gina

0

Чтобы отключить кнопку с php + html, вы можете попробовать с возвращенным значением «отключено». Например: в запросе используется случай, когда оператор вернуть инвалид значение, когда ваше состояние определяется:

SELECT filed1, 
CASE 
    WHEN field1= '19' THEN 'disabled' 
    WHEN field1='20' THEN '' 
    WHEN filed1='21' THEN '' 
    WHEN field1='22' THEN '' 
    ELSE 'disabled' 
END AS for_button 
FROM table1 AS tbl1 
WHERE tbl1.field1_param = '$param' 

Введены в кнопке HTML TAG это:

<input type="submit" value="Button OnOff" <?=$disableButton['for_button']; ?>> 

Если возвращенное значение имеет отключен, в переменной for_button напишите валинию, возвращенную из запроса, и кнопка будет отключена.

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