2017-07-17 11 views
0

を選択していない私は、動的にdatabse(簡潔にするために含まれていないHTMLの全て)からテーブルを移入しています:
このようなコントローラにそれを結果を送信入力フィールドは、インデックスが

foreach($WOaccountsInfo as $WOInfo){ 
     $WOT .="<tr>"; 
     $WOT .="<td>$WOInfo[1]</td>"; 
     $WOT .="<td>$WOInfo[2]</td>"; 
     $WOT .="<td>$WOInfo[3]</td>"; 
     $WOT .="<td>$WOInfo[4]</td>"; 
     $WOT .="<td><form method='post' action='/radiosite/other/index.php'>"; 
     $WOT .="<input type='hidden' value='$WOInfo[0]' name='ID' id='ID'>"; 
     $WOT .="<button type='submit' title='Edit'>Edit</button>"; 
     $WOT .= "<button type='submit' title='Delete' name='action' value='delWOEntry' onclick='confDel()'>Delete</button></td>"; 
     $WOT .="</tr>"; 
     } 


$ID = filter_input(INPUT_POST, 'ID', FILTER_SANITIZE_NUMBER_INT); 
$result = delWOentry($ID); 
     if ($result === 1){ 
      header("Location: /radiosite/other/index.php?action=first&message=<p class='message'>The entry was successfully deleted from the database</p>"); 
      exit; 
     } 
      else { 
      header("Location: /radiosite/other/index.php?action=wopass&message=<p class='message'>Something went wrong with the deletion</p>"); 
      exit; 
      } 

削除機能コードはここにある:

function delWOentry($ID) { 
    $db = byuidahoradioconnect(); 
    $sql = 'DELETE FROM wideorbitaccounts WHERE ID = :ID'; 
    $stmt = $db->prepare($sql); 
    $stmt->bindValue(':ID', $ID, PDO::PARAM_INT); 
    $stmt->execute(); 
    $rowsChanged = $stmt->rowCount(); 
    $stmt->closeCursor(); 
    return $rowsChanged; 
} 

これは行を削除しますが、SQLテーブルの最後の行が削除されます。
Webページでは、入力タイプを非表示からテキストに変更しました。ページには正しいID番号が表示されますが、処理するコントローラに送信すると、変数にID番号が表示されます。データベースの最後の行

つまり、行のIDに基づいてテーブル内の行を削除しようとしていますが、選択した行ではなくテーブルの最後の行が削除されています。

答えて

1

フォームタグを閉じることはないので、フォームは重複するID値でネストされます。

foreach($WOaccountsInfo as $WOInfo){ 
     $WOT .="<tr>"; 
     $WOT .="<td>$WOInfo[1]</td>"; 
     $WOT .="<td>$WOInfo[2]</td>"; 
     $WOT .="<td>$WOInfo[3]</td>"; 
     $WOT .="<td>$WOInfo[4]</td>"; 
     $WOT .="<td><form method='post' action='/radiosite/other/index.php'>"; 
     $WOT .="<input type='hidden' value='$WOInfo[0]' name='ID' id='ID'>"; 
     $WOT .="<button type='submit' title='Edit'>Edit</button>"; 
     // The following line is changed. 
     $WOT .= "<button type='submit' title='Delete' name='action' 
value='delWOEntry' onclick='confDel()'>Delete</button> 
</form></td>"; // <-- Add </form> here 
     $WOT .="</tr>"; 
     } 

変更を見やすくするために改行を追加しました。

+0

「私はフォームを閉じない方法はないと思っていた」と思った時、私はジムからオフィスに帰りましたが、私はしませんでした。ありがとうございます! –

+1

あなたは大歓迎です! – RichGoldMD