Intereting Posts
Использование ajax для вызова php и возврата нескольких переменных? Рекомендации по использованию и хранению информации о кредитных картах с помощью PHP ini_set () область действия? Ошибка Codeigniter «Не удается подключиться к серверу базы данных с помощью предоставленных настроек» PHP Regex Получить текст между тегами BBCode Обработка непрочитанных сообщений в PHP / MySQL php / regex: как заменить часть найденного шаблона, но оставить остальное как есть? Укорачивание текста твит-как без режущих ссылок внутри SDK SDK Paypal собирается из песочницы, чтобы жить Частные комплекты композиторов – не найдено никакого действительного композитора.json Невозможно отобразить изображение после его загрузки в базу данных, PHP и Mysql Zend_JSON: Кодировать беспорядок – почему? php explode: разделите строку на слова, используя пробел разделитель Создание PDF-файлов с PHP WooCommerce Получить элемент мета из всех ордеров

выберите значение параметра из базы данных по выбранным

У меня небольшая проблема. У меня есть страница edit.php. На этой странице перечислены сведения о продуктах, которые можно редактировать.

Я запускаю запрос

while($rows=mysql_fetch_assoc($query)){ echo"<form method=\"POST\" action=\"edit.php\">"; echo "<input type ='hidden' name='ID' value = '{$rows['ID']}'>"; echo "Product:&nbsp <input type='text' name='product' value = '{$rows['ProductName']}'>"; 

Перед циклом while я сохраняю детали в переменных как таковые:

 $hiddenid = $_POST['ID']; $productName = $_POST['product']; 

и это работает. когда я загружаю php-форму, он показывает имя продукта (в текстовом поле), извлеченное из БД. Однако проблема заключается в том, что я хочу сохранить имя продукта в виде раскрывающегося списка, которое уже было выбрано пользователем, а затем выберите его.

Итак, в основном, что я хочу сделать, вместо того, чтобы отображать извлеченные DB параметры в текстовом поле, я хочу, чтобы выбранная пользователем опция отображалась в раскрывающемся списке.

Надеюсь, это изменит ситуацию? Почему мои значения параметров не отображаются вообще, а во-вторых, они не показывают параметр SELECTED (извлеченный из БД).

Любая помощь, пожалуйста?

Solutions Collecting From Web of "выберите значение параметра из базы данных по выбранным"

Сосредоточив внимание на этой области, вы должны получить ошибку PHP, если это не ошибка копирования. Обратите внимание на следующие изменения:

 while($rows=mysql_fetch_assoc($query)){ ?> <form method=\"POST\" action=\"edit.php\"> <input type ='hidden' name='ID' value = '<?php echo $rows['ID'];?>'> <select name ="pnames"> <?php foreach ($arrayproducts as $key => $value) { ?> <option value = "<?php echo $key; ?>" <?php if ($key == $productName){ echo 'selected="selected"'; } ?> > <?php echo $value; ?> </option> <?php } //end foreach ?> </select> <?php }//end while ?> в while($rows=mysql_fetch_assoc($query)){ ?> <form method=\"POST\" action=\"edit.php\"> <input type ='hidden' name='ID' value = '<?php echo $rows['ID'];?>'> <select name ="pnames"> <?php foreach ($arrayproducts as $key => $value) { ?> <option value = "<?php echo $key; ?>" <?php if ($key == $productName){ echo 'selected="selected"'; } ?> > <?php echo $value; ?> </option> <?php } //end foreach ?> </select> <?php }//end while ?> 

Вначале у вас был простой код HTML в сегменте PHP.

Кроме того, я считаю, что вы хотите

 if ($value == $productName){ 

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

Прежде всего, проверьте свои входы. Вы не должны доверять никаким переменным от пользователя $ _GET, $ _POST и т. Д. Слабость исходного кода просто ищет атаку SQL-инъекций.

 <?php 

Эта вещь выглядит так, как будто она ожидает какой-то идентификатор, который затем вытащил productName из базы данных … это действительно неясно. Поэтому мы предполагаем, что переменные уже определены. Необходимо использовать такой код:

 if(!empty($_GET['id'])&&is_numeric($_GET['id'])){ $id=$_GET['id']; } else { $id=''; } //Declare your array $arrayproducts = array(); while($rows=mysql_fetch_array($query)){ 

Вам нужно вызывать что-то здесь для возвращаемого массива … не видя SQL, сложно сказать, чего вы ожидаете, но ваши выноски должны выглядеть так …

 //Whatever the name from SQL is for the column $temp_ID = $rows['id']; //Whatever the name for the product column is $temp_Prod = $rows['prod']; //Load the array $arrayproducts[$temp_ID]=$temp_Prod; } 

Лучше всего загрузить var для всего, а затем опубликовать его одним выстрелом, а не в PHP и из него. Код будет намного быстрее, и вы сможете отслеживать код.

 $page = "<form method=\"POST\" action=\"edit.php\">"; 

Проверьте, работает ли этот идентификатор. Regex было бы лучше, но одно за раз здесь.

 if(!empty($id)){ $page .= "<input type =\"hidden\" name=\"ID\" value = \"$id\">"; } $page .= "<select name =\"pnames\">\n"; foreach ($arrayproducts as $key => $value) { $page .= "<option value = \"$key\""; 

Лучше использовать поля автоматического инкремента и встроенные идентификаторы для mysql, поэтому нет возможности дублировать идентификатор с существующей записью.

  if ($id == $key){ $page .= ' selected="selected"'; } $page .= ">$value</option>\n"; //close the foreach } $page .= "</select>\n"; print $page; ?>