PHP: ifelse Проблемы с PHP - PullRequest
       17

PHP: ifelse Проблемы с PHP

0 голосов
/ 20 февраля 2011

У меня проблемы с получением кода PHP для работы.

Вот функция:

function getCellColor($dow) {
    if (isset($_POST[$dow.alternative])) {
        return "style=\"background: yellow; color:#fff;\""; 
    }
    /*elseif (isset($_POST[$dow.shifthours]) && ($_POST[$dow.shifthours] == "OFF")) {
        return "style=\"background: red; color:#fff;\"";
    }*/
    if ($_POST[$dow.shifthours] == "OFF") {
            return "style=\"background: red; color:#fff;\"";
    }
    else {
        return "style=\"background: green; color:#fff;\"";
    }
}

Вот раздел, который выводит в браузер:

if (isset($_POST['submit'])) {
    echo preTableFrmt();
    foreach($engineer as $a => $b) {
        echo "| [[$engineer[$a]]] || ".getCellColor('mon')." | $monday[$a] || ".getCellColor('tues')." | $tuesday[$a] || ".getCellColor('wed')." | $wednesday[$a] || ".getCellColor('thur')." | $thursday[$a] || ".getCellColor('fri')." | $friday[$a] || ".getCellColor('sat')." | $saturday[$a] || ".getCellColor('sun')." | $sunday[$a] <br />";
    }
    echo postTableFrmt();
}
else { echo "Waiting for data..."; }

Работает "Альтернативная" часть.Если этот флажок установлен, он переопределяет все и выполняет «желтый» фон.

Часть, которая не отображается, когда я оставляю флажок «Альтернатива» неактивным (по умолчанию), а затем выпадающий список устанавливается на ВЫКЛвариант формы из выпадающего списка), он возвращает «зеленый» фон.Если я установлю его на другую опцию (не на OFF), он все равно перейдет на «зеленый» фон.Фон должен быть красным, если установлено значение OFF, а все остальное должно быть "зеленым".

Пример формы HTML:

<select name="tuesshifthours[]" id="tuesshifthours">
    <optgroup label="Select Shift Time">
        <option value="OFF">OFF</option>
        <option value="8am5pm">8AM-5PM</option>
        <option value="7am7pm">7AM-7PM</option>
      <option value="7pm7am">7PM-7AM</option>
      </optgroup>
    </select>
  <label for="tuesalternative">A?</label>
  <input type="checkbox" name="tuesalternative[]" id="tuesalternative" value="on" />

Кроме того, вот мои данные $ _POST (возвращает зеленый цвет)фон):

["monshifthours"]=>
  array(1) {
  [0]=>
  string(3) "OFF"
}

$ _ POST-данные (также возвращает зеленый фон):

["monshifthours"]=>
  array(1) {
  [0]=>
  string(3) "7am7pm"
}

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

Проблема в том, что ваши переменные записей - это массивы, а не строки.Попробуйте это:

if ($_POST[$dow . 'shifthours'][0] == "OFF") { ... }
0 голосов
/ 20 февраля 2011

Очень жесткий код ... Постарайтесь очистить свой мозг и написать легко:)

Итак. $ _POST [$ dow.'shifthours '] cat не может быть равно "OFF", потому что оно содержит подмассив.

Правильный путь:

$_POST[$dow.'shifthours'][0] == "OFF"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...