将PHP变量传递给ajax并基于该变量运行PHP函数

时间:2014-04-12 22:53:12

标签: javascript php mysql ajax

我有数据库记录循环回声,所以它在Divs中列出每个记录信息。

我正在尝试创建一个删除按钮,从此页面视图中删除特定记录。循环编号跟踪器变量$ i也对应于记录ID,因此循环3输出包含记录ID 3的信息的div。

所以我只需点击将$ i传递给PHP函数然后运行sql以删除ID为$ i的记录。

我想在同一页上完成所有这些,所以我假设我需要ajax,但那就是我难倒的地方。另外,我可以发出警告“你确定吗”我已经用jquery对ajax做了ajax到php,但从来没有这样。

PHP:

                $webserver = 'localhost'; 
                $administrator = 'root';
                $password = '';
                $db_name = 'cdb';
                $db = mysqli_connect($webserver, $administrator, $password, $db_name)
                  or die('Error connecting');

                if( isset($_REQUEST['page'])) 
                {
                  $_SESSION['page'] = $_REQUEST['page'];
                }
                else
                {
                  $_SESSION['page'] = 1;
                }
                $records_per_page = 8;              

                    $query = " SELECT * 
                               FROM cars, users 
                               WHERE cars.dealerID = users.dealerID
                               AND  users.username = '".$_GET['username']."'";          

                $result = mysqli_query($db, $query)
                  or die("Error in query: '$query'");
                $row = mysqli_fetch_assoc($result);
                $i = 1;
                $start = ($_SESSION['page'] - 1) * $records_per_page;
                $end = ($_SESSION['page']) * $records_per_page;
                while($row = mysqli_fetch_assoc($result) and $i < $end) 
                {
                  $i++;
                  if( $i > $start ) 
                  {
                              <div>
                                  delete
                              </div>
                              <div of magic n' fairies>
                                  echo $row['informationandstuff'];
                              </div>
                              }
                            }

删除功能:

function deleteCar()
{
$delete = "DELETE FROM cars
WHERE carindex = '".$i"'";
}

我可以将$ i发布到另一个文件并执行它bt宁愿保持相同的页面并允许你确定js弹出。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你,一种方法是将$ i变量存储在html数据属性或id(如你所建议的)中。然后,使用jquery收集该id并将其传递给ajax调用中的data属性。

示例列表项(我在这里假设一个heredoc):

<div class="list-item" data-record-id="{$yourId}">your output</div>

现在,收集用户点击的ID:

$('.list-item').click(function(){
    //get item id
    var recordId = $(this).data('record-id');
    deleteRecord(recordId);
});

function deleteRecord(recordId) {
    var recordData = 'recordId=' + recordId;
    var request = $.ajax({
        type: "post",
        url: "the-php-page-you-use-for-async-calls",
        data: recordData,
        success: function(resp){
            //show some validation that the record has been deleted
        }
    });
}