2013-04-19 2 views
0

Ниже приведен код для заполнения динамического списка.сохранить выбранный динамический выпадающий список после отправки

<?php 
if(isSet($_POST['supplier'])) { 

include 'db.php'; 

$stmt = $mysql->prepare("SELECT DISTINCT SupplierBrand FROM plastic WHERE HeadingNo='".$_POST['supplier']."' ORDER BY SupplierBrand"); 
$stmt->execute(); 
$stmt->bind_result($supplierBrand); 
?> 
<option value="All" width="100px">--ALL--</option> 
<?php 
while ($row = $stmt->fetch()) : ?> 

<option value="<?php echo $supplierBrand; if($_POST['county'] == $supplierBrand) {echo "selected";} ?>" width="100px"><?php echo $supplierBrand; ?></option> 

<?php endwhile; ?> 

<?php } ?> 

Я добавил код if($_POST['county'] == $supplierBrand) {echo "selected";} , чтобы попытаться сохранить свое выбранное значение onSubmit. Этот код в этом контексте не работает. После отладки я заметил, что значение county не определено. Это ошибка из хромированной отладки:

Notice&lt;/b&gt;: Undefined index: county 

Как получить графство значение для которого его на другой странице и еще более выше значение PHP скрипт $_POST['supplier'] передается с помощью JQuery.

Ниже приведен HTML-код:

<div id="county_drop_down"> 
         <select id="county" name="county" > 
          <option value="" width="100px">Supplier...</option> 
         </select> 
         </div> 
          <span id="loading_county_drop_down"> 
          <img src="css/loader.gif" width="16" height="16" align="absmiddle">&nbsp;Loading...</span> 
          <div id="no_county_drop_down">No lens type/design has been selected.</div> 

Для JavaScript, пожалуйста, см это link

+0

Вероятно, он ожидает индекс (число) вместо графства «String». – Sid

+0

Измените это isSet ($ _ POST ['поставщик']) в isset ($ _ POST ['поставщик']) в вашем коде. – Nirmal

+0

Просьба опубликовать выведенный HTML-вывод обработанного выпадающего списка (а не исходного кода). Это поможет узнать, какое значение вам нужно пройти. – Nope

ответ

1

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

value="<?php echo $supplierBrand; if($_POST['county'] == $supplierBrand) {echo "selected";} ?>"

приведет к value="(int) selected", который является недействительным HTML это должно быть это value="<?php echo $supplierBrand;?>" <?php echo ($_POST['county'] == $supplierBrand) ? "selected=\"selected\"" : "" ; ?> Помните правильный HTML выбран = «выбран» и проверено = «проверено» и т.д.

Вы пропустили ваш выбор откройте в своем коде выше Я предполагаю, что его создал еще где?

Ваше значение в стране отправляется с другой страницы, поэтому вам необходимо локально локализовать ее и передать ее обратно через эту страницу, когда она перескакивает сама. Обычно я использую скрытые поля, поэтому, если $ _POST ['country'] поступает с другой страницы на этой странице, я бы использовал <input type="hidden" name="country" id="country" value="<?php echo $_POST['country'];?>" />. Это будет гарантировать, что страна получила страну с предыдущей страницы и всегда заполняет это поле тем, что было в прошлом, на перепечатывать.

Тогда ваше утверждение if будет работать нормально, так как будет существовать $ _POST ['страна'].

Наконец, как уже указывалось Исеть() должны быть в нижнем регистре Исеть()

Вы используете собственный класс дб тоже? это выглядит как mysqli или pdo, но списки подготовки выглядят неправильно, если это не $mysqli->prepare()? Поскольку вы тоже используете готовый препарат, вы должны выполнять привязку к параметру, а не вводить $ _POST ['поставщик'] в подготовку, так как в настоящий момент ваш способ сделать это делает процесс подготовки бессмысленным, а также делает вас уязвимым для SQL-инъекции и т. Д.

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