Проблема с загрузочной сеткой Jquery и запросом временных таблиц

Я создаю сетки на своем веб-сайте, используя плагин JqueryBootgrid и PHP в качестве внутреннего кода. Я мог бы связать сетку «пользователей» и добавить кнопки для добавления, удаления и редактирования. Это работает правильно. Проблема в следующих таблицах:

id_producto (PK)
Номбр
descripcion_larga
descripcion_corta
Imagen
imagen_logo
склад
id_categoria (FK)

id_precio (PK)
fecha_precio
Precio
id_producto (FK)

id_categoria (PK)
Descripcion

Я хочу создать сетку, которая показывает все товары с их наиболее «текущими» ценами. Итак, я выполнил запрос с временной таблицей, которая правильно работает на phpMyAdmin и возвращает нужные продукты с их самыми последними ценами. Но этот запрос не работает с моим php-кодом и, следовательно, не работает сетка.

ВОПРОС:

 CREATE TEMPORARY TABLE IF NOT EXISTS fec_val AS (SELECT pre.id_producto, max(pre.fecha_precio) fecha FROM precios_productos pre GROUP BY pre.id_producto); SELECT p.id_producto, p.nombre, p.descripcion_larga, p.descripcion_corta, cat.descripcion, p.imagen, p.stock, p.imagen_logo, pre.precio FROM fec_val fv INNER JOIN productos p ON fv.id_producto = p.id_producto INNER JOIN precios_productos pre ON pre.id_producto = p.id_producto INNER JOIN categorias cat ON cat.id_categoria = p.id_categoria WHERE pre.fecha_precio = fv.fecha

И здесь у вас есть полный php-код для bootgrid:

<?php try {

//Configuracion de la base de datos

$hostname = "localhost";
$username = "facundo";
$password =  "******";
$database  = "facundo";


$conn = new PDO("mysql:host=localhost;dbname={$database}", $username, $password);

//Parametro de la consulta

$search         = "";
$where      = "";
$order_by       = "id_producto";
$rowCount   = 10;//Cantidad de resultados por default


//Envia parametros adicionales en el pack json
$debug          = TRUE;


//Obtengo la cantidad de resultados para mostrar por pagina

if (! empty( $_REQUEST['rowCount']))
{
$rowCount = $_REQUEST['rowCount'];
}

//calculate the low and high limits for the SQL LIMIT x,y clause
if ( !empty($_REQUEST['current']) )
{
$current        =   $_REQUEST['current'];
$limit_lower    =   ($current * $rowCount) - ($rowCount);
$limit_hight    =   $limit_lower + $rowCount;
}

if ($rowCount   ==  -1)
{
$limit=""; //no limit
}else{
$limit = "LIMIT {$limit_lower},{$limit_hight}";
}


//Genera el order by
if (isset($_REQUEST['sort']) && is_array($_REQUEST['sort']) )
{
$order_by= "";

foreach($_REQUEST['sort'] as $key=> $value)
{
$order_by.="{$key} {$value}";
}
}


//Buscador
$search_phrase = $_REQUEST['searchPhrase'];


if (!empty($search_phrase))
{

$search = trim($search_phrase);

$where  = "WHERE pre.fecha_precio = fv.fecha OR nombre LIKE '".$search."%' OR descripcion_larga LIKE '".$search."%' OR id_producto LIKE '".$search."%' ";

}//close if


//Consulta para obtener los resultados
//$sql = "SELECT id_producto, nombre, descripcion_larga, descripcion_corta, descripcion, imagen, stock, imagen_logo, precio FROM productos INNER JOIN precios_productos ON productos.id_precio = precios_productos.id_precio INNER JOIN categorias ON productos.id_categoria = categorias.id_categoria {$where} ORDER BY {$order_by} {$limit}";
//$sql = "CREATE TEMPORARY TABLE IF NOT EXISTS fec_val AS (SELECT pre.id_producto, max(pre.fecha_precio) fecha FROM precios_productos pre GROUP BY pre.id_producto); SELECT p.id_producto, p.nombre, p.descripcion_larga, p.descripcion_corta, cat.descripcion, p.imagen, p.stock, p.imagen_logo, pre.precio FROM fec_val fv INNER JOIN productos p ON fv.id_producto = p.id_producto INNER JOIN precios_productos pre ON pre.id_producto = p.id_producto INNER JOIN categorias cat ON cat.id_categoria = p.id_categoria {$where} ORDER BY {$order_by} {$limit}";
//$sql = "SELECT * FROM productos INNER JOIN categorias on productos.id_categoria = categorias.id_categoria INNER JOIN precios_productos ON precios_productos.id_producto = productos.id_producto";
$sql = "CREATE TEMPORARY TABLE IF NOT EXISTS fec_val AS (SELECT pre.id_producto, max(pre.fecha_precio) fecha FROM precios_productos pre GROUP BY pre.id_producto); SELECT p.id_producto, p.nombre, p.descripcion_larga, p.descripcion_corta, cat.descripcion, p.imagen, p.stock, p.imagen_logo, pre.precio FROM fec_val fv INNER JOIN productos p ON fv.id_producto = p.id_producto INNER JOIN precios_productos pre ON pre.id_producto = p.id_producto INNER JOIN categorias cat ON cat.id_categoria = p.id_categoria WHERE pre.fecha_precio = fv.fecha"$stmt               =   $conn->prepare($sql);
$stmt->execute();
$results_array  =   $stmt->fetchAll(PDO::FETCH_ASSOC);


//Obtengo el total de resultados
$query_count    = "SELECT count(*) FROM productos";
$nRows              =   $conn->query($query_count)->fetchColumn();

//Devuelvo la informacion en formato json

$pack                           = array();
$pack["current"]            = $current;
$pack["rowCount"]       = $rowCount;
$pack["rows"]               = $results_array;
$pack["total"]                  = $nRows;


//Info de debug

if($debug)
{
$pack['query']              = $sql;
$pack['query_total']        = $query_count;
}

echo json_encode($pack);
}catch(PDOException $e) {

echo 'SQL PDO ERROR: ' . $e->getMessage();}?>

Я хотел бы знать, как я могу это исправить. Благодарю.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]