У меня есть эта форма с 2 selext в коробке. со всеми пунктами меню с веб-страницы, загруженной из базы данных, и всеми текущими 3 языками.
Когда я изменяю параметр в любом из полей выбора, он должен перезагрузиться со значением из selectbxo и должен сделать запрос, который получает содержимое в текстовом поле в соответствии с пунктом меню и текстом.
это работает частично, содержимое меняется идеально, но он не помнит выбранный вариант, и я не могу понять, почему.
Вот форма, объекты, которые вы видите, взяты из отдельных файлов, которые собирают элементы меню и языковые элементы.
<form style="border: 1px solid black; " name="form" method="post" action="">
Content selecteren om te wijzigen:
<table>
<td>
<tr>
<td width="78">Menu item:</td>
<td><select name="Menu" onchange="this.form.submit()">' . $this->MenuItems->render() . '</select></td>
</tr><br>
<tr>
<td width="78">Taal:</td>
<td><select name="Language" onchange="this.form.submit()">' . $this->LanguageItems->render() . '</select></td>
</tr>
<tr>
<td>Menu Item:</td>
<td width="78"><input name="MenuItemTextBox" type="text" id="MenuItemTextBox" value="' . $_POST['Menu'] . '"></td><br>
</tr>
<tr>
<td>content</td>
<td><TEXTAREA style="" Name="content" id="NewContent" ROWS=10 COLS=50>' . $this->GetContent->render() . '</TEXTAREA></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Wijzigen"></td>
</tr>
</td>
</table>
</form>
и это код, в котором я получаю пункты меню из базы данных и проверяю, совпадает ли сообщение с пунктом меню, через который он проходит. Если сообщение (сообщение, созданное из окна выбора) и пункт меню совпадают, «выбранный» элемент html вставляется в параметр html.
class MenuItems extends content_part{
private $menuLabels = array();
private $menuIDs = array();
public function __construct(DatabaseHandler $dbh)
{
if(!isset($_POST['Language'])){
$_POST['Language'] = 1;
}
$SQL = "SELECT menulanguage.Label AS Label, menulanguage.Title AS Title, menulanguage.MenuID AS MenuID FROM Menu JOIN menulanguage ON Menu.MenuID = menulanguage.MenuID WHERE LanguageID = 1;";
$resultDB = $dbh->executeQuery($SQL);
if(is_object($resultDB)){
while($row = $resultDB->fetch(PDO::FETCH_ASSOC)){
$this->menuLabels[] = $row["Label"];
$this->menuIDs[] = $row["MenuID"];
}
}
else{echo 'Could not retrieve menu items from database'; }
}
public function render(){
$Selected = '';
$result = '';
$i = 0;
foreach($this->menuLabels as $menuLabel){
if (isset($_POST['Menu'])){
if($menuLabel == $_POST['Menu']){ $Selected = 'selected'; }
else {}
}
$result .= '<option value="' . $this->menuIDs[$i] . '"' . $Selected . '>' . $menuLabel . '</option>';
$i++;
}
return $result;
}}
Я видел несколько одинаковых вопросов, но я действительно не мог получить ответ.
Это опция после того, как она будет заполнена элементами меню,
<option value="1">Home</option>
<option value="2">Contactus</option>
Как вы можете видеть, «выбранный» html не заполняет его, то есть он не может найти значение POST из формы, почему это так?
<option value="Home"><option value="Contactus">
и т. д.? - person AyB   schedule 15.04.2014