POST выбранное значение в переполнении стека

Я пытаюсь $ _POST ОБНОВЛЕНИЕ следующей таблицы MySQL:
Замечания: есть 3 выпадающих списка динамически населенный по индексированным индексам таблицы:

  • статус
  • категория
  • доступ

Ссылочный стол

Таблица 1: app_generalData
+———-+———+—————+——————+——+—————-+
| app_id | Таблица | status_id | category_id | теги | access_id |
+———-+———+—————+——————+——+—————-+

Примечания о состоянии

Смотрите тест print_r ниже.

  • Сохраненные параметры (выбранные) заполняются для каждого из 3 выпадающих
  • Форма POST’ing, но …только текстовые входы.

print_r ($ _ POST)

Array (
[MAX_FILE_SIZE] => 100000
[app_id] => 2
[title] => MyZone
[status] =>
[категория] =>
=> Мой новый тег
[доступ] =>
[update] => Обновить)

Проблема:

  1. Параметры не меняются, когда новое значение «выбрано»
  2. Опции не отображаются в $ _POST
  3. В результате ОБНОВЛЕНИЕ создает ноль (0) вместо моих существующих значений для выбранных параметров.

Желаемый результат:

  1. $ _POST значение выбранной опции

Код для заполнения одного из выбранных тегов:

<?php

//connect to the database
require_once('connectvars.php');

// global variable for this populating this dropdown
$dropdown =         "status";
$before_var =       "app_";
$table=             $before_var.$dropdown;
$after_var =        "_title";
$column=            $dropdown.$after_var;
$id_var=            "_id";
$column_row_id=     $dropdown.$id_var;

$optionsList = array();

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die ('Error connecting to MySQL server.');

echo '<select name="' . $dropdown . '"type="text"class=""id="' . $dropdown . '">';

// See if we're viewing a selected app or are we creating a new app
if (isset($_GET['app_id'])) {
// print_r($_GET); // GET is Successful

// 'if' [app_id] is appended in the url

// STEP 1: Get the stored value of the SELECTED from mysql

// Get "selected item" (id) from app_generalData (table) with the "selected app" (id)
$option = "SELECT  ".$column_row_id." FROM app_generalData WHERE app_id ='" . $_GET['app_id'] . "'";

// submit the select statement
// Get & store the value of "selected" <option>
$selected_option = mysqli_query($dbc, $option)
or die(mysql_error());
$row_1=mysqli_fetch_array($selected_option);

// STEP 2: Build the SELECT input

// Set the array of data to populate dropdown list <option>s
$options = "SELECT * FROM ".$table." ORDER BY ".$column_row_id."";
// NOTE: print_r($options)...SELECT access_title FROM app_access ORDER BY access_id
$selected_options = mysqli_query($dbc, $options)
or die(mysqli_error());

$kk     = 0;   //initialize kk
while($row_2 = mysqli_fetch_array($selected_options)) {

$selected ='';
if($row_1["$column_row_id"]==$row_2["$column_row_id"]) {
$selected='selected="selected"';
}
$optionsList[$kk++] ='<option ' . $selected . ' value "' . $row_2["$column_row_id"] . '">' . ucwords($row_2["$column"]) . '</option>';
}

// Echo the <option>s
$optionCount = count($optionsList);
for($i=0;$i<$optionCount;$i++) {
echo $optionsList[$i].'\n';
}

}
else {
// Action 'if' no [app_id] is appended in the url
};
// close the last <select> tag
echo '</select>';

// close the last database
mysqli_close($dbc);
?>

0

Решение

select является логическим атрибутом

это не $selected='selected="selected"'; но $selected='selected';,

Просто <option value="product_1" selected>pizza</option>,

Смотрите отдельные примеры: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select


Форма POST’ing, но … только текстовые вводы.

когда ваша форма отправлена, проверьте вкладку сети в вашем браузере.
взгляните на отправку запроса POST. ваш выбранный элемент (выпадающий список) называется «статус».
это должно быть заполнено.

другими словами: исправьте свой HTML.


Удалить $ kk и вместо

$optionsList[$kk++] = '<option ' . $selected . ' value "' . $row_2["$column_row_id"] . '">' . ucwords($row_2["$column"]) . '</option>';

просто

$optionsList[] = '<option ' . $selected . ' value="' . $row_2["$column_row_id"] . '">' . ucwords($row_2["$column"]) . '</option>';

Вместо:

// Echo the <option>s
$optionCount = count($optionsList);
for($i=0;$i<$optionCount;$i++) {
echo $optionsList[$i].'\n';
}

просто

echo implode($optionsList, "\n") . "\n";

не связанные, но удалите и переместите комментарий в начало (если ..):

else {
// Action 'if' no [app_id] is appended in the url
};
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]