2

テーブル内のコンマ区切り文字列の値を削除しようとしています。これを行うスクリプト (delete_url.php) は、投稿の値を手動で設定すると単独で正常に動作しますが、これらの値を ajax を使用してスクリプトに渡す際に問題が発生します。値を渡したいページには次のものがあります。

<script type="text/javascript">
            $(document).ready(function() {

                 $('.delete').click(function() {
        $.ajax({
            type: 'POST',
            url: '../scripts/delete_link.php', 
            data: 'link=' + $(this).attr('data_link') + '&topic_pk=' + $(this).attr('data_topic'),
            success: function() {

            }
        });        
    });
            });
        </script>

と:

<a class='delete_link' href='#' data_link='<?php echo urlencode($link); ?>' data_topic='<?php echo $topic_pk; ?>' onclick="return confirm('Are you certain you want to DELETE this link?')";><img src="../images/delete.png" width="16" height="16" alt="delete" title="delete this link" border='0' /></a>

おそらくjsonを使用する必要がありますが、これを行う正しい方法がわかりません。助けてくれてありがとう。

4

1 に答える 1

1

次のコードでコードを更新しました。これで、レコードの削除とページのエントリの削除が機能します。

<script type="text/javascript">
$(document).ready(function(){

    $('table#delTable td a.delete_link').click(function()
    {
        if (confirm("Are you sure you want to delete this row?"))
        {
            var id = $(this).parent().parent().attr('id');
            var data = 'id=' + id ;
            var parent = $(this).parent().parent();

            $.ajax(
            {
                   type: "POST",
                   url: '../scripts/delete_link.php',
                   data: 'link=' + $(this).attr('data_link') + '&topic_pk=' + $(this).attr('data_topic') + '&topic_introduction=' + $(this).attr('data_introduction'),
                   cache: false,

                   success: function()
                   {
                    parent.fadeOut('fast', function() {$(this).remove();});
                   }
             });
        }
    });
});

 </script>

そしてテーブル:

<table id='delTable' width="100%" border="0" cellpadding="5">
<?php 
if(!empty($retrieved_links)){
    foreach($retrieved_links as $link){
?>
  <tr>
    <td><?php echo $link; ?></td>
    <td width='16' align='center' valign='middle'><a class='delete_link' href='#' data_link='<?php echo urlencode($link); ?>' data_topic='<?php echo $topic_pk; ?>' data_introduction='<?php echo $topic_introduction; ?>'><img src="../images/delete.png" width="16" height="16" alt="delete" title="delete this link" border='0' /></a></td>
  </tr>
<?php }
}
?>
</table>

そしてdelete_link.php:

<?php
require_once('../connection/connect.php');
mysql_select_db($database, $connection);

$link = urldecode($_POST['link']);
$topic_pk = $_POST['topic_pk'];
$topic_introduction = $_POST['topic_introduction'];


if(!empty($link)){

$query_get_topic = "SELECT * FROM topic WHERE topic_pk = '$topic_pk'";
$result_get_topic = mysql_query($query_get_topic, $connection) or die(mysql_error());
$row_get_topic = mysql_fetch_assoc($result_get_topic);

$retrieved_links = explode(",", $row_get_topic['links']);   

$delete_link = array_search($link,$retrieved_links);

unset($retrieved_links[$delete_link]);
$updated_links = mysql_real_escape_string(implode(',',$retrieved_links));

$links_body = str_replace(',', '<p>', $updated_links);
$topic = $topic_introduction . '<p>' . $links_body;

$query = "UPDATE topic SET links = '$updated_links', topic = '$topic' WHERE topic_pk = '$topic_pk'";
$result = mysql_query($query, $connection) or die(mysql_error());
}
mysql_close();
?>
于 2013-02-18T03:34:41.250 に答える