在javascript中执行php数据库代码

在javascript中执行php数据库代码,javascript,php,ajax,Javascript,Php,Ajax,为了说明我的问题描述,这里有一个列表,其中可以附加一个或多个任务 当用户试图删除列表时,php代码会检查mysql“tasks”表,查看是否有任何任务附加到要删除的列表 如果有/有任务,则会提示用户弹出一个弹出窗口,说明删除列表也会删除所有附加的任务,并要求用户确认 在OK上,将继续并删除所有任务,然后删除列表。。。。在取消时,将不执行任何操作 我设计了如下的东西 <?php try { $list_id = $_GET['id']; //Instantiate Dat

为了说明我的问题描述,这里有一个列表,其中可以附加一个或多个任务

  • 当用户试图删除列表时,php代码会检查mysql“tasks”表,查看是否有任何任务附加到要删除的列表
  • 如果有/有任务,则会提示用户弹出一个弹出窗口,说明删除列表也会删除所有附加的任务,并要求用户确认
  • 在OK上,将继续并删除所有任务,然后删除列表。。。。在取消时,将不执行任何操作
  • 我设计了如下的东西

    <?php
    try 
    {
        $list_id = $_GET['id'];
    
        //Instantiate Database object
        $database = new Database;
    
        //check if task exist for the list to be deleted
        $database->query('SELECT * FROM tasks WHERE list_id = :id');
        $database->bind(':id',$list_id);
        $database->single();
    
        $rc = $database->rowCount();
    
        if($rc > 0)
        { 
    ?>
    
            <script type="text/javascript">  
                    if(confirm('The list has one or more task attached to it. Deleting the list will also delete the attached tasks. Do you want to proceed ?'))
                    {   
                        //prepare and execute delete tasks 
                        $database->query('DELETE FROM tasks WHERE list_id = :id');
                        $database->bind(':id',$list_id);
                        $database->execute();
    
                        //prepare and execute delete lists
                        $database->query('DELETE FROM lists WHERE id = :id');
                        $database->bind(':id',$list_id);
                        $database->execute();
    
                        if($database->rowCount() > 0)
                        {
                            header("Location:index.php?msg=listdeleted");
                        }
                    }   
            </script> 
    <?php 
        }
    }
    catch(Exception $e)
    {
        echo '<p>'.$e->getMessage().'</p>';
    }
    
    ?>  
    
    
    if(确认('列表附加了一个或多个任务。删除列表也将删除附加的任务。是否继续?'))
    {   
    //准备并执行删除任务
    $database->query('DELETE FROM tasks WHERE list_id=:id');
    $database->bind(':id',$list\u id);
    $database->execute();
    //准备并执行删除列表
    $database->query('DELETE FROM list,其中id=:id');
    $database->bind(':id',$list\u id);
    $database->execute();
    如果($database->rowCount()>0)
    {
    标题(“位置:index.php?msg=listdeleted”);
    }
    }   
    
    问题是-代码什么都不做。没有错误。没什么。 我在谷歌上搜索了一下,发现大多数人都建议使用ajax调用来实现这一点。我不懂阿贾克斯。所以,为了做这一点点事情,我现在必须投入相当多的时间。所以,我需要以下两件事-

  • 你们能确认一下ajax是否是这里唯一可能的解决方案吗?如果没有其他方法来执行上面所示的php,我只会使用ajax
  • 从我上面粘贴的代码中,有人能提出更好的方法来实现我的目标吗
  • 或者

    a) 学习使用ajax,因为它是最明显的解决方案。一旦你学会了,你会发现它是无价的

    或者,如果你真的没有时间

    b) 使用JS“确认”将用户重定向到新的PHP页面,并在页面重定向的URL中传递要删除的记录的ID。在新的PHP页面上,处理删除,然后使用PHP重定向将用户带回原始页面


    选择选项(a).

    是的,正如大家所说,ajax将是一种很好的方法

    确认警报正在工作?
    在js函数内部,如果没有“<?php..?>”的话,就不能像以前那样放置php代码。

    是的,ajax是您的解决方案……谢谢@Qaisar SattiThanks@MaggsWeb。。。谢谢你的选择(b)。因为我现在有点匆忙,所以现在这样对我来说很容易。但正如你们所建议的,我会的,但正如你们和其他人也建议使用AJAX,我肯定会这么做。武器越多,武器库越好:)