簡體   English   中英

PHP在重新加載時選擇選擇選項

[英]PHP select the selection option when reloading

我有2張selext裝箱的表格。 並從數據庫中加載網頁中的所有菜單項以及所有當前3種語言。

當我從任何選擇框中更改選項時,它應重新加載selectbxo中的值,並應進行查詢,以根據菜單項和文本獲取textare中的內容。

這部分起作用,內容變化完美,但是他不記得所選的選項,我找不到原因。

這是表格,您看到的對象來自收集菜單項和語言項的單獨文件。

<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值,這是為什么呢?

您需要更改:

if($menuLabel == $_POST['Menu']){ $Selected = 'selected'; }

成為$menuId而不是$menuLabel因為render函數將輸出ID的值而不是標簽的標簽。

這樣的事情應該可以滿足您的需求:

  foreach($this->menuIDs as $menuID){
    if (isset($_POST['Menu'])){
      if($menuID== $_POST['Menu']){ $Selected = 'selected'; }
      else {}
    }
      $result .= '<option value="' . $this->menuIDs[$i] . '"' . $Selected . '>' . $menuLabel . '</option>';
      $i++;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM