2016-05-12 79 views
-1

我在我的數據庫中有行,它有一個名爲value的列。我正在創建一個頁面來將值更新爲aan(英文:on)或uit(英文:off)。PHP Select submit not working

但是,提交時,值列中有1而不是aanuit

行的ID是1,所以這就是爲什麼有1但我不知道什麼是錯的,爲什麼它不提交aanuit

怎麼回事?

<?php 
    $stmt = $dbConnection->prepare('SELECT * FROM settings ORDER BY id ASC'); 
    $stmt->execute(); 

    $result = $stmt->get_result(); 
    if(mysqli_num_rows($result) > 0) { 
     ?> 
    <form method="POST" action=""> 
     <table> 
     <tr> 
      <th>Naam</th> 
      <th>Laatst gewijzigd</th> 
      <th>Waarde</th> 
     </tr> 
     <?php 
    while ($row = $result->fetch_assoc()) { 
     if(isset($_POST["opslaan"])) { 
      $id = $row["id"]; 
      $stmt = $dbConnection->prepare('UPDATE settings SET value = ? WHERE id = ?'); 
      $stmt->bind_param('ss', $id, $id); 
      $stmt->execute(); 
     } 
    ?> 
     <tr> 
      <td><?php echo $row["code"]; ?></td> 
      <td><?php echo $row["updated"]; ?></td> 
      <td><select name="<?php echo $row["id"]; ?>"><option value="aan"<?php if($row["value"] == "aan") {echo ' selected';} ?>>Aan</option><option value="uit"<?php if($row["value"] == "uit") {echo ' selected';} ?>>Uit</option></select></td> 
     </tr> 
    <?php } ?> 
     </table> 
    <input type="submit" value="Opslaan" name="opslaan"> 
    </form> 
    <?php 
    } else { 
     echo "<p>Er zijn nog geen instellingen.</p>"; 
    } 
} 
    ?> 

回答

0

你爲什麼不改變選擇的名稱,而不是像這樣:

<td> 
     <select name="aan_uit"> <!-- <== GIVE THE SELECT THE NAME aan_uit --> 
      <option value="aan"<?php if($row["value"] == "aan") {echo ' selected';} ?>>Aan</option> 
      <option value="uit"<?php if($row["value"] == "uit") {echo ' selected';} ?>>Uit</option> 
     </select> 
    </td>  

PHP

<?php 


    if(isset($_POST["opslaan"])) { 
     $id  = $row["id"]; 
     $aanUit = htmlspecialchars(trim($_POST["aan_uit"])); //<== EXTRACT "aan_uit" FROM THE POST VARIABLE. 
     $stmt = $dbConnection->prepare('UPDATE settings SET value = ? WHERE id = ?'); 
     $stmt->bind_param('ss', $aanUit, $id); // <== SET TO $aanUit, NOT $id 
     $stmt->execute(); 
    } 

所以現在整個表單的塊應該像這樣:

<form method="POST" action=""> 
     <table> 
      <tr> 
       <th>Naam</th> 
       <th>Laatst gewijzigd</th> 
       <th>Waarde</th> 
      </tr> 
      <?php 
       while ($row = $result->fetch_assoc()) { 
        if(isset($_POST["opslaan"])) { 
         $id  = $row["id"]; 
         $aanUit = $row["aan_uit"]; 
         $stmt = $dbConnection->prepare('UPDATE settings SET value = ? WHERE id = ?'); 
         $stmt->bind_param('ss', $aanUit, $id); 
         $stmt->execute(); 
        } 
        ?> 
        <tr> 
         <td><?php echo $row["code"]; ?></td> 
         <td><?php echo $row["updated"]; ?></td> 
         <td> 
          <select name="aan_uit"> 
           <option value="aan"<?php if($row["value"] == "aan") {echo ' selected';} ?>>Aan</option> 
           <option value="uit"<?php if($row["value"] == "uit") {echo ' selected';} ?>>Uit</option> 
          </select> 
         </td> 
        </tr> 
       <?php } ?> 
     </table> 
     <input type="submit" value="Opslaan" name="opslaan"> 
    </form> 
+0

Ca你解釋多一點?我已經嘗試了您的建議,但似乎沒有奏效。 –

+0

問題是您的選擇名稱是數字。在這種情況下:1.因此,我的建議是將名稱更改爲可以邏輯訪問的字符串。你可以添加一個var轉儲到PHP來查看你回來的東西。我會更新代碼並現在添加它... – Poiz

+0

你現在可以試試看....我剛纔看到你沒有真正更新**值**正確的數據在你的數據庫列。你是***明確地將其設置爲1的rowID。這就是爲什麼。所以我現在添加了另一個變量$ aanUit,用於更新數據庫中的**值**列。現在應該沒問題。只要將您的** if(isset($ _ POST [「opslaan」])){**塊更改爲所提供的***並確保您選擇的名稱是「aan_uit」*** – Poiz