2013-11-30 5 views
1

У меня есть следующий HTML:магазин выпадающего выбор как набор элементы массива в конкретные переменные

<form action="" method="get"> 
<ul> 
    <li>location 
    <select name="locationdo"> 
     <option value="tax_cb">Checkbox</option> 
     <option value="tax_radio">Radio</option> 
     <option value="tax_dd">Dropdown</option> 
    </select> 
    </li> 

    <li>genre 
    <select name="genredo"> 
     <option value="tax_cb">Checkbox</option> 
     <option value="tax_radio">Radio</option> 
     <option value="tax_dd">Dropdown</option> 
    </select> 
    </li> 

    <li>studio 
    <select name="studiodo"> 
     <option value="tax_cb">Checkbox</option> 
     <option value="tax_radio">Radio</option> 
     <option value="tax_dd">Dropdown</option> 
    </select> 
    </li> 
</ul> 
<p><input type="submit" value="submit" name="submit" /></p> 
</form> 

То, что я хочу, чтобы элементы массива из $which_tax_array, хранящихся в отдельных переменных на основе выбора, которые были сделаны. Будем надеяться, что код будет лучше объяснить, что я хочу для того чтобы достигнуть (но это не работает, как я хотел, чтобы это):

if (isset($_GET['submit'])) { 

     $which_tax_array = array('location', 'genre', 'studio'); 
     $what = array(); 
     foreach ($which_tax_array as $key => $tax_name) { 

      $what[$tax_name] = $_GET[$tax_name.'do']; 


      foreach ($what as $tax_term => $display_option) { 

       if (in_array($what[$tax_name], $what)) { 
        $checkboxes = ','.$tax_term; 
       } elseif (in_array($what[$tax_name], $what)) { 
        $radios .= ','.$tax_term;; 
       } elseif (in_array($what[$tax_name], $what)) { 
        $dropdowns .= ','.$tax_term; 
       } 
      } 


     } 

} 

echo 'cb '.$checkboxes.'<br>'; 
echo 'radio '.$radios . '<br>'; 
echo 'dd '.$dropdowns.'<br>'; 

ответ

0

Не уверен, что вы пытаетесь сделать. Я вижу несколько возможных проблем:
(1) вы не закрываете свой foreach ($which_tax_array as $key => $tax_name) до конца, так что вы выполняете свой следующий foreach слишком рано.
(2) у вас есть $checkboxes = ','.$tax_term; вместо $checkboxes .= ','.$tax_term;, чтобы вы переписывали $checkboxes вместо добавления.
(3) ваш if (in_array($what[$tax_name], $what)) будет правдой, поскольку вы проверяете, находится ли значение массива в собственном массиве, поэтому все ваши значения будут в $checkboxes. Я думаю, вы хотите проверить, соответствует ли значение tax_cb, tax_radio или tax_dd.

попробовать что-то вроде this-

if (isset($_GET['submit'])) { 

    $which_tax_array = array('location', 'genre', 'studio'); 
    $what = array(); 
    foreach ($which_tax_array as $key => $tax_name) { 
     $what[$tax_name] = $_GET[$tax_name.'do']; 
    } 

    foreach ($what as $tax_term => $display_option) { 
     if ($what[$tax_name] == 'tax_cb') { 
       $checkboxes .= ','.$tax_term; 
     } elseif ($what[$tax_name] == 'tax_radio')) { 
       $radios .= ','.$tax_term;; 
     } elseif ($what[$tax_name] == 'tax_dd')) { 
       $dropdowns .= ','.$tax_term; 
      } 
     } 

echo 'cb '.$checkboxes.'<br>'; 
echo 'radio '.$radios . '<br>'; 
echo 'dd '.$dropdowns.'<br>'; 
} 
+0

Вы имеете двойные скобки закрытия в вашем 'еще if' заявления. Во всяком случае, он не работает, как я хочу. Если я просто нажимаю кнопку «Отправить» сразу (когда для каждого раскрывающегося списка установлено значение «tax_cb», я получаю: 'cb, location, genre, studio', который является ПРАВИЛЬНЫМ, но если я делаю разные варианты, это не хорошо. вы меняете второй (жанр) и третий (студийный) варианты на 'tax_radio', в этом случае я получаю« радио, местоположение, жанр, студию », вместо« location », присваивается переменной' $ checkboxes'. что я имею в виду? –

+0

Чтобы попытаться упростить, скажем, я выбираю 'checkbox' для' locationdo', 'radio' для' genredo' и 'dropdown' для' studiodo', тогда я ожидал получить следующее, когда повторяю каждую переменную : 'cb, location'' радио, жанр',' dd, studio' –

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