2013-03-19 1 views
1

У меня есть поле со списком, которое позволяет несколько вариантов выбора, и у меня есть другой комбинированный блок.Извлечение значений из базы данных в зависимости от параметров, выбранных в многократном поле со списком

В зависимости от значений, выбранных из первого поля со списком, мне нужно отобразить их во втором поле со списком.

Мой сценарий требований похож на этот пример, пусть первый поле со списком содержит список всех состояний. Всякий раз, когда выбирается состояние, все города в этом состоянии будут извлекаться из базы данных и отображаться во втором поле со списком.

Если мы выберем несколько элементов (состояний) в первом поле со списком. Города выбранных состояний должны отображаться во втором поле со списком.

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

Я новичок в PHP, поэтому трудно реализовать его. Это будет очень полезно, если кто-нибудь представит рабочий пример.

ответ

0

Использовать суффикс массива в вашем состоянии. Вот небольшой пример. Это очень просто, но показывает идею.

<form method="post"> 
<table><tr><td> 
<? 
    // Sample array, you should use database query instead 
    $statesArr = array('FL'=>'Florida','CA'=>'California','NY'=>'New York'); 

    foreach ($statesArr as $stateCode => $stateName) { 
     $checked = (count($_POST['states']) && in_array($stateCode,$_POST['states']))?'checked="checked"':''; // rechecking selected checkboxes 
     echo '<label><input type="checkbox" name="states[]" value="'.$stateCode.'" '.$checked.'/>'.$stateName.'</label><br />'; 
    } 

?> 
</td><td> 
    <? if ($_POST && count($_POST['states'])) { 
      echo '<select multiple="multiple">'; 
      $sql = "SELECT `CityName` FROM `Cities` WHERE `ParentStateCode` IN ('".implode("','",$_POST['states'])."')"; 
      $result = mysql_query($sql); 
      while ($row = mysql_fetch_assoc($result)) { 
       echo '<option>'.$row['CityName'].'</option>'; 
      } 
      echo '</select>'; 
     } 
    ?> 
    </td> 
    </tr></table> 
    <input type="submit" /> 
</form> 
+0

Вы можете объяснить, как это работает? – user

+0

Посмотрите на имя флажков (name = "states []"). Добавление [] после имени входа позволяет использовать несколько входов с одним и тем же именем и получать доступ к его значениям на стороне сервера через массив. Поэтому в вашем случае у нас $ _POST ['states'], установленный в Array (0 => 'FL', 1 => 'NY'); Тогда нам нужно просто разложить значения этого массива в SQL-запрос. Конструкция MySQL WHERE 'Field' IN (...) позволяет вам выбирать города из набора кодов состояний, заканчивая сделкой. Соревнование завершено! PS: извините за слабый английский. –

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