2017-02-05 7 views
0

URLにパラメータを渡して、選択したIDの行を削除しようとしています。私はentryID 1と2を持っているとします。エントリ1の内容を選択して削除しようとすると、entryID 1の内容は削除されますが、問題はentryID 2を削除するときです。変数var row = '".$rows['Blog_ID']."';の内容は変更されないと思いますが、それ以外の方法を選択してもentryID 1の値は保持されます。私はdeleteBlog.phpページに私をリダイレクトすると、選択しENTRYIDの内容を削除することになっている<option value ='delete'>Delete</option>を選択するとここで削除PHPとJavaScriptを使用して選択したIDの選択した行

は...

<?php 
include("../Connection.php"); 
$post_query="Select * from indexview order by Blog_ID Desc"; 
$postsql=mysqli_query($connect_db,$post_query) or die('Connection unsuccessful'); 

    while($rows=mysqli_fetch_array($postsql,MYSQL_ASSOC)){ 
     echo "<div id='posts'>"; 
    echo" <select onchange = 'down(this.value)' id='downpng' name='downpng'> 
       <option value='void'></option> 
       <option value = 'edit'>Edit Blog</option> 
       <option value ='delete'>Delete</option> 
     </select>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​"; 


     echo 
     "<script> 

      function down(temp) { 

       var row = ".$rows['Blog_ID']."; 
       var id = '".$_GET['id']."'; 



       if(temp=='delete'){ 

        var con = confirm('Are you sure?'); 
        if(con){ 
         window.location = 'google.php?entryID=' + row + '&id=' + id; 

         }else{ 
          window.location = '../Blog/Blog.php?id=".$_GET['id']."'; 
         } 

    }else{ 
     window.location = '../Blog/edit.php'; 
    } 
} 
</script>"; 

私がこれまで試したものです。

deleteBlog.phpコード:

<?php 
include("../Connection.php"); 

if(isset($_GET['entryID'])){ 


$user = $_GET['id']; 
$entry = $_GET['entryID']; 

mysqli_query($connect_db, "Delete from blog_tbl where Blog_ID=" .$entry); 
header('Location: ../Blog/Blog.php?id='.$user); 

} 

?> 

任意の提案は非常に理解されるであろう。ありがとう!

+0

あなたが代わりにループ内でJSの関数/スクリプトの束を生成するためにPHPを使用してのHTML要素からIDを抽出するためにJavaScriptを使用する必要があります。あなたは1つのjs関数(phpで作成されていない)を持っていて、html要素からidを取得し、その関数を使ってidを送信します。 – Rasclatt

答えて

0

特にjavascriptの部分については、このために最小限のPHPを行う必要があります。ブログのID(select属性の名前で保存します)を保存し、javascriptで抽出します。私はJSのことをするためにjQueryを使うつもりです。

<?php 
# Include database 
include("../Connection.php"); 
# Create a simple function that does not use id="downpng" (id values are 
# supposed to be unique 
function getOrderDropDown($con) 
    { 
     $query = "Select * from indexview order by Blog_ID Desc"; 
     $postsql = mysqli_query($con,$query) or die('Connection unsuccessful'); 
     $str  = ''; 
     while($rows=mysqli_fetch_array($postsql,MYSQL_ASSOC)){ 
      $str .= " 
     <select name='downpng[".$rows['Blog_ID']."]' class='blog_select'> 
      <option value='void'></option> 
      <option value = 'edit'>Edit Blog</option> 
      <option value ='delete'>Delete</option> 
     </select>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​"; 
     } 
     return $str; 
    } 

# Write the selects to page 
echo getOrderDropDown($connect_db); 
?> 

Javascriptの選択を抽出する:

<script> 
// I would only do php here, use a special chars, otherwise you will be easily hacked by user input 
var id = <?php echo (!empty($_GET['id']))? '"'.htmlspecialchars($_GET['id'],ENT_QUOTES).'"' : 'false' ?>; 
// On change of this class type 
$('.blog_select').on('change',function(e) { 
    // Get the name (which contains the id) 
    var row  = $(this).attr('name').replace(/[^0-9]/gi,''); 
    // This will be the action (delete, edit) 
    var action = $(this).val(); 
    // On delete, assign the actions and send values 
    if(action == 'delete'){ 
     var redirect; 
     var con = confirm('Are you sure?'); 
     if(con){ 
      redirect = 'google.php?entryID='+row+'&id='+id; 
     }else{ 
      redirect = '../Blog/Blog.php?id='+id; 
     } 
    }else{ 
     redirect = '../Blog/edit.php'; 
    } 
    // Just do one redirect 
    window.location = redirect; 
}); 
</script> 
関連する問題