SYD19970128 2023-03-08 11:00 采纳率: 20%
浏览 73
已结题

ext框架做sql执行页面

做一个sql执行的页面,第一行执行语句:
第二行执行的状态信息
第三行显示sql的执行数据,后台已经写好了,之前查阅的资料是用ajax与后台互联,框架是ext的框架
按钮功能是执行和导出,有谁能提供下大致的模板嘛

  • 写回答

7条回答

  • 「已注销」 2023-03-08 11:08
    关注

    “Devil组”引证GPT后的撰写:
    以下是一个基本的 SQL 执行页面的示例代码:

    <!DOCTYPE html>
    <html>
    <head>
        <title>SQL 执行页面</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
        <script src="https://cdn.sencha.com/ext/gpl/6.7.0/build/ext-all.js"></script>
        <link rel="stylesheet" type="text/css" href="https://cdn.sencha.com/ext/gpl/6.7.0/build/classic/theme-classic/resources/theme-classic-all.css">
        <style type="text/css">
            #result {
                height: 300px;
                overflow: auto;
                border: 1px solid #ccc;
                padding: 5px;
            }
        </style>
    </head>
    <body>
        <h1>SQL 执行页面</h1>
        <form id="sql-form">
            <label for="sql-input">SQL 语句:</label>
            <input type="text" id="sql-input" name="sql" size="100">
            <br>
            <label for="status">执行状态:</label>
            <span id="status">等待执行</span>
            <br>
            <label for="result">执行结果:</label>
            <pre id="result"></pre>
            <br>
            <button type="button" id="execute-btn">执行</button>
            <button type="button" id="export-btn">导出</button>
        </form>
    
        <script type="text/javascript">
            Ext.onReady(function() {
                // 点击执行按钮
                $("#execute-btn").click(function() {
                    // 获取 SQL 语句
                    var sql = $("#sql-input").val();
    
                    // 发送 Ajax 请求执行 SQL
                    $.ajax({
                        url: "/execute-sql.php",
                        type: "POST",
                        data: { sql: sql },
                        beforeSend: function() {
                            // 显示执行状态
                            $("#status").text("正在执行...");
                        },
                        success: function(data) {
                            // 显示执行结果
                            $("#result").text(data);
                            // 显示执行状态
                            $("#status").text("执行完成");
                        },
                        error: function() {
                            // 显示执行状态
                            $("#status").text("执行出错");
                        }
                    });
                });
    
                // 点击导出按钮
                $("#export-btn").click(function() {
                    // 获取 SQL 语句
                    var sql = $("#sql-input").val();
    
                    // 创建一个隐藏的表单,用于提交 SQL 并下载文件
                    var form = $("<form>")
                        .attr("method", "POST")
                        .attr("action", "/export-sql.php")
                        .css("display", "none")
                        .appendTo("body");
                    $("<input>")
                        .attr("type", "hidden")
                        .attr("name", "sql")
                        .attr("value", sql)
                        .appendTo(form);
                    form.submit();
                });
            });
        </script>
    </body>
    </html>
    
    
    

    上述示例代码使用了 ExtJS 6.7 和 jQuery 库,并定义了一个包含 SQL 输入框、执行状态、执行结果和执行、导出按钮的表单。点击执行按钮时,通过 Ajax 请求发送 SQL 到后台并获取执行结果,在页面中显示执行状态和执行结果。点击导出按钮时,创建一个隐藏的表单,将 SQL 语句作为表单参数提交到后台,并下载返回的文件。在后台代码中,需要根据接收到的 SQL 语句执行查询,并将结果返回给前端页面。以下是示例后台代码:

    <?php
    
    // 获取 POST 请求中的 SQL 语句
    $sql = $_POST['sql'];
    
    // 连接数据库并执行查询
    $conn = mysqli_connect('localhost', 'username', 'password', 'database');
    $result = mysqli_query($conn, $sql);
    
    // 将查询结果转换成 HTML 表格格式
    $table = '<table>';
    $table .= '<tr>';
    foreach (mysqli_fetch_fields($result) as $field) {
        $table .= '<th>' . $field->name . '</th>';
    }
    $table .= '</tr>';
    while ($row = mysqli_fetch_row($result)) {
        $table .= '<tr>';
        foreach ($row as $value) {
            $table .= '<td>' . $value . '</td>';
        }
        $table .= '</tr>';
    }
    $table .= '</table>';
    
    // 返回 HTML 格式的查询结果
    echo $table;
    
    mysqli_close($conn);
    
    
    

    另外,需要创建一个用于接收 SQL 语句并生成文件的后台脚本,示例代码如下:

    <?php
    
    // 获取 POST 请求中的 SQL 语句
    $sql = $_POST['sql'];
    
    // 连接数据库并执行查询
    $conn = mysqli_connect('localhost', 'username', 'password', 'database');
    $result = mysqli_query($conn, $sql);
    
    // 将查询结果转换成 CSV 格式
    $output = fopen('php://output', 'w');
    fputcsv($output, mysqli_fetch_fields($result)->name);
    while ($row = mysqli_fetch_row($result)) {
        fputcsv($output, $row);
    }
    fclose($output);
    
    // 设置响应头,指定下载的文件名和 MIME 类型
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename="query.csv"');
    
    mysqli_close($conn);
    
    
    

    上述代码将查询结果转换为 CSV 格式,并设置响应头,使浏览器弹出下载对话框。最后,需要将上述两个后台脚本保存为 execute-sql.php 和 export-sql.php,并将前端页面中的请求 URL 修改为对应的地址。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 创建了问题 3月8日