我无法将 phpmyadmin 中的数据库连接到在 WordPress 中进行服务器端查询的数据表

问题描述 投票:0回答:0

我正在尝试使用数据表将表放入 WordPress 中。该信息是我的服务器中已有的 50K 行表,它的数据很糟糕,它不是一个高效的数据库,只是一个 Excel,但这就是我必须工作的内容,并且短期内不可能重新制作该信息(最终我想对数据进行适当的处理)。这个想法是使用 ajax 和服务器端查询检索信息。

问题是functions.php似乎可以工作,但它无法检索我的veteros_79.php需要生成的信息,即数据表转换为表格的json文件。

p.d.请记住,我对此完全陌生,每一条建议,甚至教育材料都受到赞赏。我的想法也是学习这个,而不仅仅是让它发挥作用。

我上传了一个数据库到phpmyadmin,之后我创建了一个名为veteros_79.php的文件,我在其中连接数据库,在functions.php中我放置了ajax调用和服务器端查询,以避免成为人类已知的最慢的服务器。

functions.php 似乎可以工作,但无法检索我的 vintageos_79.php 需要生成的信息。它需要生成一个 json 文件,将数据表转换为一个表,但是当我直接访问它时,它不起作用,甚至连接失败。就像该文件根本不存在一样。

这是结果:veteros.guerradelpacifico1879.cl

这是我的veteros_79.php:

<?php

ini_set('display_errors', 1); error_reporting(E_ALL);

// Configuración de acceso a la base de datos
$servername = "mysql.veteranos.guerradelpacifico1879.cl"; // Cambiar esto si es necesario
$username = "veteranosguerrad";
$password = "password";
$dbname = "veteranos_guerradelpacif";

// Crear la conexión a la base de datos utilizando MySQLi
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificar la conexión
if ($conn->connect_error) {
    die("Error en la conexión a la base de datos: " . $conn->connect_error);
}

// Parámetros recibidos de DataTables
$draw = $_GET['draw'];
$start = $_GET['start'];
$length = $_GET['length'];
$searchValue = '%' . $_GET['search']['value'] . '%'; // Valor de búsqueda proporcionado por el usuario

// Columnas para ordenamiento y llamada ajax
$(document).ready(function() {
    $('#miTabla').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": "<?php echo esc_url( home_url( '/veteranos_79.php' ) ); ?>",
            "type": "GET"
        },
        "columns": [
            { "data": "DIVISION" },
            { "data": "BRIGADA" },
            { "data": "UNIDAD" },
            { "data": "REGIMIENTO" },
            { "data": "COMPANIA" },
            { "data": "CLASE" },
            { "data": "1_NOMBRE" },
            { "data": "2_NOMBRE" },
            { "data": "1_APELLIDO" },
            { "data": "2_APELLIDO" },
            { "data": "NOTAS" },
            { "data": "OTROS" },
            { "data": "BBDD" }
        ]
        // Otras opciones de configuración...
    });
});
// Sentencia SQL base
$sql = "SELECT * FROM BBDD_csv WHERE CONCAT(DIVISION, ' ',BRIGADA, ' ',UNIDAD, ' ',REGIMIENTO, ' ',COMPANIA, ' ',CLASE, ' ',1_NOMBRE, ' ',2_NOMBRE, ' ',1_APELLIDO, ' ',2_APELLIDO, ' ',NOTAS, ' ',OTROS, ' ',BBDD) LIKE ?";

// Si se especificó un valor de búsqueda, agregamos el filtro a la consulta
if (!empty($searchValue)) {
    $sql .= " AND CONCAT(DIVISION, ' ',BRIGADA, ' ',UNIDAD, ' ',REGIMIENTO, ' ',COMPANIA, ' ',CLASE, ' ',1_NOMBRE, ' ',2_NOMBRE, ' ',1_APELLIDO, ' ' ,2_APELLIDO, ' ',NOTAS, ' ',OTROS, ' ',BBDD) LIKE ?";
}

// Obtener el número total de registros sin aplicar el límite y el filtro de búsqueda
$stmtTotal = $conn->prepare($sql);
if (!empty($searchValue)) {
    $stmtTotal->bind_param("ss", "%$searchValue%", "%$searchValue%");
} else {
    $stmtFiltered->bind_param("s", $searchValue);
}
$stmtTotal->execute();
$totalRecords = $stmtTotal->get_result()->num_rows;
$stmtTotal->close();

// Agregar la cláusula ORDER BY para el ordenamiento
$orderColumnIndex = $_GET['order'][0]['column']; // Índice de la columna a ordenar
$orderDirection = $_GET['order'][0]['dir']; // Dirección del ordenamiento (ascendente o descendente)
$sql .= " ORDER BY " . $columns[$orderColumnIndex] . " " . $orderDirection;

// Agregar la cláusula LIMIT para la paginación
$sql .= " LIMIT $start, $length";

// Obtener el número de registros filtrados (para paginación)
$stmtFiltered = $conn->prepare($sql);
if (!empty($searchValue)) {
    $stmtFiltered->bind_param("ss", "%$searchValue%", "%$searchValue%");
} else {
    $stmtFiltered->bind_param("s", $searchValue);
}
$stmtFiltered->execute();
$totalRecordsFiltered = $stmtFiltered->get_result()->num_rows;
$stmtFiltered->close();

// Ejecutar la consulta para obtener los datos
$result = $conn->query($sql);

// Crear el arreglo de datos en el formato requerido por DataTables
$data = array();
while ($row = $result->fetch_assoc()) {
    $data[] = $row;
}

// Cerrar la conexión a la base de datos
$conn->close();

// Crear el arreglo de respuesta
$response = array(
    "draw" => intval($draw),
    "recordsTotal" => $totalRecords,
    "recordsFiltered" => $totalRecordsFiltered,
    "data" => $data
);

// Devolver los datos en formato JSON
echo json_encode($response);
?>

这是functions.php:

<?php
function mi_tabla_datatables_shortcode() {
    ob_start();
    ?>
    <div class="container">
        <table id="miTabla" class="display" style="width:100%">
            <thead>
                <tr>
                    <th>DIVISION</th>
                    <th>BRIGADA</th>
                    <th>UNIDAD</th>
                    <th>REGIMIENTO</th>
                    <th>COMPANIA</th>
                    <th>CLASE</th>
                    <th>1_NOMBRE</th>
                    <th>2_NOMBRE</th>
                    <th>1_APELLIDO</th>
                    <th>2_APELLIDO</th>
                    <th>NOTAS</th>
                    <th>OTROS</th>
                    <th>BBDD</th>
                </tr>
            </thead>
            <tbody>
                <!-- Los datos de la tabla serán obtenidos a través de DataTables -->
            </tbody>
        </table>
    </div>

    <?php
    // Cargamos la versión de jQuery incluida con WordPress
    wp_enqueue_script('jquery');
    // Cargamos el script de DataTables
    wp_enqueue_script('datatables', 'https://cdn.datatables.net/v/dt/dt-1.13.5/b-2.4.1/b-colvis-2.4.1/fc-4.3.0/fh-3.4.0/r-2.5.0/sc-2.2.0/datatables.min.js', array('jquery'), '1.13.5', true);

    // Retornamos el código JavaScript del shortcode
    ?>
    <script>
    jQuery(document).ready(function() {
        jQuery('#miTabla').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "<?php echo esc_url( home_url( '/veteranos_79.php' ) ); ?>",
                "type": "GET"
            },
            "columns": [
                { "data": "DIVISION" },
                { "data": "BRIGADA" },
                { "data": "UNIDAD" },
                { "data": "REGIMIENTO" },
                { "data": "COMPANIA" },
                { "data": "CLASE" },
                { "data": "1_NOMBRE" },
                { "data": "2_NOMBRE" },
                { "data": "1_APELLIDO" },
                { "data": "2_APELLIDO" },
                { "data": "NOTAS" },
                { "data": "OTROS" },
                { "data": "BBDD" }
            ]
            // Otras opciones de configuración...
        });
    });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('mi_tabla_datatables', 'mi_tabla_datatables_shortcode');


我有一个朋友版本的相同文本,但我更喜欢我的作品的反馈,即使它有更多问题。

php jquery mysql wordpress datatables
© www.soinside.com 2019 - 2024. All rights reserved.