2016-12-14 5 views
-2

私はmysql DBに 'cars'と 'address'という2つのテーブルを持っています。車を持っており、それは良いです。 DB内のアドレスには、 'street'、 'number'、 'city'の列があります。私は車がないすべての場所を削除したいが、私はどこでコードが間違っているのかわからない、それは動作しません。私はすべてのパスをチェックし、すべてが大丈夫です。どんな提案も感謝します。jquery、ajax、PDOを使って行を削除する方法

これは私のモーダル削除ボタンです:

<a href="#" data-toggle="modal" data-target="#delete_loc<?php echo $value['id']?>" role="button" class="btn btn-danger btn-sm"> 
       <i class="fa fa-trash-o"></i> Delete 
      </a> 

       <div class="modal fade" id="delete_loc<?php echo $value['id']?>" tabindex="-1" role="dialog" aria-labelledby="mydelModalLabel" aria-hidden="true"> 
        <div class="modal-dialog"> 
         <div class="modal-content" style="text-align:center;"> 
          <div class="modal-header"> 
           <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
           <h2 class="modal-title" id="mydelModalLabel" style="color:#a80b27;text-transform:uppercase;font-size:1.6rem;">Warning !</h2> 
          </div> 
          <div class="modal-body"> 
           <h5>Are you shure you want delete address ID <b><?php echo $value['id']?></b>?</h5> 
          </div> 
          <div class="modal-footer"> 
          <input type="hidden" name="loc_id" id="loc_id" value="<?php echo $value['id']?>"> 
           <a href="" role="button" class="btn btn-danger" id="del_loc"> 
            Yes, I'm shure! 
           </a> 
           <button type="button" class="btn btn-default" data-dismiss="modal">No</button> 
          </div> 
         </div> 
        </div> 
       </div> 

これでjQueryとAJAX:

$(document).ready(function() { 
     $('#del_loc').bind('click',function(e){ 
     e.preventDefault(); 
     var id = $('#loc_id').val(); 

     var data = 'loc_id='+id; 

    $.ajax({ 
     type: "POST", 
     url: "include/locations/delete.php", 
     data: data, 
     success: function(result){ 
     if(result == 1){ 
      window.location.replace("address.php?id="); 
    } 
     else{ 
     err_msg = JSON.parse(result); 
     if(err_msg.nAddress){ 
     $('.panel-footer').append('<span class="help-block" style="float:right;"><strong>'+err_msg.nAddress+'</strong></span>'); 
     } 
     } 
    } 
    }); 
    }); 
}); 

これはdelete.phpです:

<?php 

    require '../../config/init.php'; 
    require '../functions/locations.php'; 
    require '../services/xss.php'; 

    $loc_id = _e($_POST['loc_id']); 

    $data = deleteLoc($loc_id); 

     if(is_array($data)){ 
     print_r(1); 
     } 
     else{ 
      echo $data; 
     } 

    ?> 

そして、これが関数の名前の場所です.php:

function deleteLoc($loc_id){ 
    global $conn; 

      try{ 
       $stmt = $conn->prepare('DELETE FROM address WHERE id=:id'); 
       $stmt->bindParam(':id',$loc_id);     
       $stmt->execute(); 
       $row[] = 'deleted'; 
       return $row;     
      } 
      catch(PDOException $e){ 
       if(DEBUG === true){ 
        header('Location:../../error/db_error.php?err_msg='.$e->getMessage()); 
       } 
       else{ 
        header('Location:../../error/db_error.php?err_msg'); 
       } 
     } 
} 
+0

代わりに削除ハードの削除ソフトを試してみてくださいPHP ..さんは試す

はJavaScript

<script type="text/javascript"> $(document).ready(function() { $('#del_loc').bind('click',function(e){ e.preventDefault(); var id = $('#loc_id').val(); var data = 'loc_id='+id; //try here alert(id); For checking whether you are getting value or not $.ajax({ type: "POST", url: "include/locations/delete.php", dataType:'JSON', data: data, success: function(result){ var res=eval(result); if(res.success){ window.location.replace("address.php?id="); } else { if(res.nAddress){ $('.panel-footer').append('<span class="help-block" style="float:right;"><strong>'+err_msg.nAddress+'</strong></span>'); } } } }); }); }); </script> 

をしてみましょう。このようにしてMySql.Addから削除する際に矛盾は生じません。データ型tinyintで削除されたテーブルの列を追加し、削除ボタンで削除されたフラグを1に設定します。 –

+0

あなたは* cars *しかし、あなたのSQLは単純に '' DELETE FROM address WHERE id =:id''です。これは 'address'テーブルから1行だけを削除します(' id'は主キーです)。あなたのコードは、車がない場所をすべて削除しなければならないことを示唆していません。* – DelightedD0D

+0

@KunalGadhiaあなたが何を言おうとしているのかわかりません。ソフト削除の使用はこの質問にどのように関連していますか? – DelightedD0D

答えて

-1

loc_idの値が適切に得られている場合は、次のコードを参考にしてください。 delete.php

<?php 

    require '../../config/init.php'; 
    require '../functions/locations.php'; 
    require '../services/xss.php'; 

    $loc_id = _e($_POST['loc_id']); 

    $data = deleteLoc($loc_id); 

     if(is_array($data)){ 
     echo json_encode(array('success'=>true)); 
     } 
     else{ 
      echo json_encode($data); 
     } 
    ?> 
+0

なぜこれが助けになると思いますか? – DelightedD0D

+0

はい、ajaxとjqueryのエラーコメントplz..imが新しくなりました。 –

+0

いいえ、私が言っていることは、入力でmysqli_real_escape_stringを呼び出すと、OPにアポストロフィやそのID値がある(これはおそらくない)場合を除いて、この問題に影響を及ぼすとは考えられません。 – DelightedD0D

関連する問題