2015-10-26 4 views
1

Я действительно плохо на PHP. Итак, да, этот код упрощен. Но я предпочел бы, чтобы этот код работал, если это возможно. Спасибо.php error - не знаю, как исправить это

Цель PHP код

Есть технически два поля, мужские и женский пол. Я пытаюсь вызвать утверждение, предполагая, что если человек выбирает 0 для обоих, чтобы сказать им заполнить один из них, иначе, если пустым, заполнить его, в противном случае, проверить его с помощью функции test_input, которая находится внизу.

Что я получаю это ошибка, которая постоянно говорит, что это:

PHP Parse error: syntax error, unexpected '[', expecting ')' в отношении первой строки кода PHP. Я так сильно перекосил код, но не могу понять, как это исправить.

PHP код

if ((($_POST["male"]) === "") && ($_POST(["female"]) === "")) { 
    $quantityErr = "pls fill in one of the genders"; 
    elseif (empty($_POST(["male"])) 
    $maleErr = "# of people (gender male) required"; 
    else 
    $male = test_input($_POST["male"]); 
} 

HTML Код поля

 <div class="field"> 
      <label>* Number of People</label> 
      <select class="ui dropdown" name="male"> 
      <option value="">Gender Male</option> 
      <option <?php if ($male === 0) echo 'selected' ; ?> value="0">0</option> 
      <option <?php if ($male == 1) echo 'selected' ; ?> value="1">1</option> 
      <option <?php if ($male == 2) echo 'selected' ; ?> value="2">2</option> 
      <option <?php if ($male == 3) echo 'selected' ; ?> value="3">3</option> 
      <option <?php if ($male == 4) echo 'selected' ; ?> value="4">4</option> 
      <option <?php if ($male == 5) echo 'selected' ; ?> value="5">5</option> 
      <option <?php if ($male == 6) echo 'selected' ; ?> value="6">6</option> 
      <option <?php if ($male == 7) echo 'selected' ; ?> value="7">7</option> 
      <option <?php if ($male == 8) echo 'selected' ; ?> value="8">8</option> 
      <option <?php if ($male == 9) echo 'selected' ; ?> value="9">9</option> 
      <option <?php if ($male == 10) echo 'selected' ; ?> value="10">10</option> 
      </select> 
      <?php if(isset($maleErr)) print ('<span class="error">* ' . $maleErr . '</span>'); ?> 
      <?php if(isset($quantityErr)) print ('<span class="error">* ' . $quantityErr . '</span>'); ?> 
     </div> 

Функция тестирования

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
+0

Этот '$ _POST ([" female "])' неверен. Вы можете использовать '{}' s или '[]' s для доступа к значениям массива. http://php.net/manual/en/language.types.array.php – chris85

+0

@ chris85, как это неправильно? Я посмотрел код, пока не стал синим. Наверное, усталость, но это не видно. – user273072545345

+0

Должно быть '$ _POST [" female "])' См. Дополнительную '(' у вас есть? Вероятно, было бы проще использовать пустой. – chris85

ответ

0

Это

$_POST(["female"]) 

неверен для доступа значение POSTarrayfemale.

Curlys {} или скобки [] могут использоваться для доступа к массивам.

Both square brackets and curly braces can be used interchangeably for accessing array elements (e.g. $array[42] and $array{42} will both do the same thing in the example above).

Это должно быть правильным:

if (empty($_POST["male"]) && empty($_POST["female"])) { 
    $quantityErr = "pls fill in one of the genders"; 
} elseif (!empty($_POST["male"]) && $_POST["male"] > 0) { 
    $male = test_input($_POST["male"]); 
} elseif (empty($_POST["male"])) { 
    //male is not set or equal to 0; if male is 0 then female >= 1 and set. logic doesn't have any female checks so unclear currently how you want to handle that 
    $maleErr = "# of people (gender male) required"; // maybe add message that it is required to be greater than 1. 
} 

Вы также были некорректные условными. При использовании {} s на управляющих структурах вам необходимо закрыть блок управления. Ваш elseif не закрывал предыдущие if.

+0

Только что заметил пропущенный еще один неправильный доступ к массиву POST. – chris85

+0

только что видел ваше обновление. тестируя его сейчас. ftp медленно! – user273072545345

+0

У меня все еще есть проблемы, но я принял ваш ответ b/c, это немного помогло, и я надеюсь, что все остальное. Спасибо. – user273072545345

0

у вас есть писание десять неправильный синтаксис

попробовать это

if ((($_POST["male"]) === "") && ($_POST["female"] === "")) { 
    $quantityErr = "pls fill in one of the genders"; 
    elseif(empty($_POST["male"])) 
    $maleErr = "# of people (gender male) required"; 
    else 
    $male = test_input($_POST["male"]); 
} 
+0

, который вызвал эту ошибку: 'PHP Parse error: синтаксическая ошибка, неожиданный T_ELSEIF' – user273072545345

+0

Oh! Я исправил синтаксис. –

+0

, который по-прежнему вызывает ту же ошибку в отношении третьей строки вашего кода, часть elseif. – user273072545345

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