2009-08-12 25 views
7

でデータベースからレコードを削除します。問題は、データベース内のレコードが削除されないことです。は、私は、テーブルからレコードを削除するには、PHP/MySQLとprotype.jsを使用していますAjaxリクエスト

のindex.php:

 <a href="javascript: deleteId('<?php echo $studentVo->id?>')">Delete</a></td> 

スクリプト

 <?php 
     /* Database connection */ 
     include('configuration.php'); 
     echo "hello,..."; 
     if(isset($_POST['id'])){ 
      $ID = $_POST['id']; 
      $sql = 'DELETE FROM student where id="'.$ID.'"'; 
      mysql_query($sql); 
     } 
     else { echo '0'; } 
    ?> 

alert("ID : "+id); delete.php

function deleteId(id) 
    { 
     alert("ID : "+id); 
     new Ajax.Request('delete.php?action=Delete&id='+id,{method:'post'}); 
     $(id).remove(); // because <tr id='".$row[id]."'> :) 

    } 

では正常に動作しているが、それ以降のコードではありません。

+1

+1でも簡単ですが、よく説明されています。 ;-) – Shoban

答えて

9

あなたはJSから、GETリクエストを使用している:

{method:'get'} 

をそして、あなたのPHPコードは、彼が考えているデータを使用するには、POSTとして到着:

$ID = $_POST['id']; 

あなたは両側で同じメソッドを使用する必要があります。追記として

(あなたはデータを削除/変更しているとして、あなたはおそらくPOSTを使用する必要があります)


、あなたは間違いなくに、SQLクエリで使用しているデータを確認/保護/エスケープする必要があります例えば、整数で作業しているときにintvalを使用してSQLインジェクションを避けてください。文字列を使用している場合はmysql_real_escape_stringを使用します。

もう一つの方法は、あなたが準備された文(mysqlipdo)コメント後


EDITを使用することができますを意味し、古いmysql拡張機能の使用を停止し、mysliまたはPDOの使用を開始することです:あなたはまた、 POSTで要求が行われたので、パラメータが渡される方法を変更する必要があります。これらはURLでもう渡されません。

私はこのような何かが動作しなければならないこととします

var myAjax = new Ajax.Request(
    'delete.php', 
    { 
    method: 'post', 
    parameters: {action: id} 
    }); 

それとも、また、パラメータ文字列を自分で構築し、このようなものを使用することができます

var myAjax = new Ajax.Request(
    'delete.php', 
    { 
    method: 'post', 
    parameters: 'action=' + id 
    }); 

(テスト、あなたがかもしれませんいくつか変更する必要があります;-))

詳細については、Ajax.Requestと012をご覧ください

+0

私は{メソッド: '投稿'}を完了しました とPHPファイル$ ID = $ _POST ['id']; でも動作していません –

+0

パラメータを渡す方法を変更する必要があります。POSTを使用している場合、パラメータはURLに渡すべきではなく、 'parameters'オプションを使用してください。詳細については、http://www.prototypejs.org/api/ajax/requestおよびhttp://www.prototypejs.org/api/ajax/optionsを参照してください。 –

+0

今、レコードを削除することはできますが、ページを更新する必要があります。変化を見る。だから、どのように私は現在のページからそのレコードを削除するためにコード化できますか?サーバーの応答はboolなので、レコードが削除されたかどうかを判断できます。これを開発するのを手伝ってもらえますか? –

0

:-)あなたのAjaxリクエストがGETを使用しているが、あなたの削除スクリプトがPOSTを経由してIDを取得しようとしているように思えます。 {method:'post'}{method:'get'}を設定してみてください。

+0

私は{メソッド: '投稿'}を{メソッド: '投稿'}にしました。 しかし結果はありません –

0

変更を削除します。それは$ _GETと$ _POST配列を集約するよう

<?php 
     /* Database connection */ 
     include('configuration.php'); 
     echo "hello,..."; 
     if(isset($_GET['id'])){ 
      $ID = $_GET['id']; 
      $sql = 'DELETE FROM student where id="'.$ID.'"'; 
      mysql_query($sql); 
     } 
     else { echo '0'; } 
    ?> 

または代わりに、あなたの代わりに$ _GET(または最初の例では$ _POST)の冷却に使用する$ _REQUEST:このようなPHP。

+0

兄、今レコードを削除することができますが、私は変更を見るために、ページを更新する必要があります。だから、どのように私は現在のページからそのレコードを削除するためにコード化できますか?サーバーの応答はboolなので、レコードが削除されたかどうかを判断できます。これを開発するのを手伝ってもらえますか? –

関連する問題