2017-08-19 3 views
0

シンプルなCRUDアプリ。
メインリストには複数の子が格納されています 子を削除するときは、parentIDとchildIDをdeleteItemスクリプト 'deleteitem.php'に渡します。 Iデータはにプッシュされている知っているよう

データベース情報からレンダリングされているテーブル

<form action="deleteitem.php" method="post"> 

<?php 

$var = 1; 
$listID = $_GET['listID']; 

$select = "SELECT subtasks.createdOn, subtasks.subtask_id, subtasks.listTitle, subtasks.createdBy, subtasks.listStatus, subtasks.createdOn 
      FROM subtasks 
      INNER JOIN userlists 
      ON subtasks.parentID = userlists.listID 
      WHERE subtasks.isChild = :var 
      AND subtasks.parentID = :listID"; 
$select = $pdo->prepare($select); 
$select->bindParam(':var',$var); 
$select->bindParam(':listID',$listID); 
$select->execute(); 

while ($row = $select->fetch(PDO::FETCH_ASSOC)) { 

    $listID = $row['subtask_id']; 
    $listTitle = $row['listTitle']; 

    echo "<tr>"; 
    echo "<td>".$createdOn = $row['createdOn']."</td>"; 
    echo "<td>".$listTitle = $row['listTitle']. "</td>"; 
    echo "<td>".$listStatus = $row['listStatus']."</td>"; 
    echo "<td><a class=\"btn btn-warning\" href='edit.php?edit_id=$listID'"; 
    echo "</a><i class=\"fa fa-pencil-square-o\"></i>"; 
    echo "<a>"; 
    echo " "; 
    echo "<a href='deleteitem.php?listID=$listID&parentID=$parentID'>"; 
    echo "<input=\"submit\" class=\"btn btn-danger\" value=name=\"deleteItem\"/>"; 
    echo "<i class=\"fa fa-trash-o\"></i></a>"; 
    echo "<a></td>"; 
    echo "</tr>"; 
} 
echo "</tbody>"; 
echo "</table>"; 
echo "</div>"; 
?> 

</tbody> 
</form> 

<?php 

session_start(); 

if(!isset($_SESSION['user_id'])) { 
    header("Location: index.php"); 
} 

/**Include our MySQL connection.*/ 
require 'database.php'; 

$listID = $_GET['listID']; 
$parentID = $_GET['parentID']; 

try { 
    if(isset($_POST['deleteItem'])) { 

     $delete = "DELETE FROM subtasks 
        WHERE subtask_id = :listID 
        AND parentID = :parentID"; 
     $delete = $pdo->prepare($delete); 
     $delete->bindParam(':listID',$listID); 
     $delete->bindParam(':parentID',$parentID); 
     $delete->execute(); 

     $listID = $parentID; 

     header("location:list.php?listID=$listID&parentID=$parentID"); 
     echo 'The delete happened'; 
    } 
    /* catch any exceptions that may occur */ 
} catch(PDOException $e) { 
    echo "error:".$e->getMessage(); 
} 

echo 'Parent ID '; 
var_dump($parentID); 
echo '<br/>'; 
echo 'List ID '; 
var_dump($listID); 

?> 

deleteitem.phpマイのvar_dump線がPARENTIDとlistIDを出力していますdeleteitem.phpファイル。しかし何らかの理由で、DELETEステートメントはまったく実行されていません。

DELETE文が実行されていない理由を理解する助けがあれば幸いです。

+1

'$ _POST'がURLを使用しないをクリックした場合

したがって、この場合、テストラインは真ではありません、' $ _GET'はありません。 –

+0

リンクは、フォームのサブミットは 'submit' /' input'だけ、あるいはいくつかのJSでは行いません。 – chris85

+0

最近、回答を受け取ることができません。なぜあなたがヒントを残していない場合は、SOのコミュニティがあなたを助けてください – RiggsFolly

答えて

0

$_POST['deleteitem']は、送信ボタンを押した場合にのみ表示されます。

あなたはここで作成したアンカータグをクリックした場合:

echo "<a href='deleteitem.php?listID=$listID&parentID=$parentID'>"; 

あなたが代わりにGETとPOSTでPHPに送信されることはありませんが。また、クエリ文字列に存在する変数、つまり?listID=$listID&parentID=$parentIDだけが渡されるため、deleteItemではありません。あなたはアンカータグ

if(isset($_POST['deleteItem'])) { 
+0

それを見てみましょう。 –

+0

それは理にかなっています。これは 'DELETE'文が実際には決して実行されない理由を説明します。私は 'if(isset($ _ POST ['deleteItem'])){'を取り除いたので、ページが呼び出されたときに文が実行されます。チャンピオンのような作品!ありがとう –

0

$_POSTPOSTの方法に、$_GETGETの方法に使用されます。 $_REQUESTは両方で動作します。

関連する問題