2016-05-12 40 views
-1

私のデータベースに行があり、それにvalueという列があります。私は値をaan(英語:on)またはuit(英語:off)に更新するページを作っています。PHP submitを選択しないでください

ただし、送信時にaanまたはuitの代わりに1が値の列にあります。

行のIDが1であるため、1がありますが、何がうまくいかないのか、それがaanまたはuitを送信していない理由がわかりません。

どうなりますか?

あなたの代わりにそのように選択の名前を変更しないのはなぜ
<?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

問題は、Selectの名前が数値であることです。この場合、1.私は論理的にアクセスできる文字列に名前を変更することを提案しました。 PHPにvar dumpを追加して、戻ってくるものを見ることができます。私はコードを更新して今すぐ追加します... – Poiz

+0

あなたはそれを試してみることができます....私はちょうどあなたが本当に正しい値であなたのDBの**値**列を更新していないことを見た。あなたは***で明示的にrowIDに1を設定していました。それが理由です。そこで、あなたのDBの** value **カラムを更新するために使用される別の変数$ aanUitを追加しました。今は大丈夫です。 ** if(isset($ _ POST ["opslaan"])){**ブロックを提供したものに変更してください***あなたの選択の名前が "aan_uit"であることを確認してください*** – Poiz

関連する問題