¿Puede alguien ayudarme a mostrar mi búsqueda de filtro correctamente y también no puedo encontrar mi error?

//Este es mi producto Content1.php file,i quiero mostrar opciones de búsqueda de filtros de producto para permitir a los usuarios buscar producto con filtro. Incluí el producto de clase. php y luego llamar métodos para mostrar valores de opciones de filtro desde MySQL base de datos del vehículo de mesa

php include 'class/Product.php'; $product = new Product(); ?
php } ? php } ? php } ? php } ? php } ?
Toyota Allion
Toyota Axio

//en acción. PhpI incluido clase Producto. php y método de llamada $product-propiossearchProducts() para obtener resultado de búsqueda HTML y pasó como respuesta JSON usando json_encode.

php
include 'class/Product.php';
$product = new Product();
if(isset($_POST["action"])){
$html = $product-searchProducts($_POST);
$data = array(
    "html"  => $html,   
);
echo json_encode($data);    
}
?>

//Product.php para definir la búsqueda de métodosProductos(), para obtener datos de búsqueda de filtros de producto de la tabla de bases de datos MySQL. Creé la consulta SELECT con opciones de búsqueda de filtros y obtengo datos. A continuación, crear HTML resultado con los datos de resultados y devolver como resultado de búsqueda completo HTML.

php
function searchProducts(){
$sqlQuery = "SELECT * FROM ".$this-productTable;
if(isset($_POST["type"])) {
    $typeFilterData = implode("','", $_POST["type"]);
    $sqlQuery .= "
    AND type IN('".$typeFilterData."')";
}
if(isset($_POST["make"])){
    $makeFilterData = implode("','", $_POST["make"]);
    $sqlQuery .= "
    AND make IN('".$makeFilterData."')";
}
if(isset($_POST["price"])) {
    $priceFilterData = implode("','", $_POST["price"]);
    $sqlQuery .= "
    AND price IN('".$priceFilterData."')";
}
if(isset($_POST["size"])) {
    $sizeFilterData = implode("','", $_POST["size"]);
    $sqlQuery .= "
    AND size IN('".$sizeFilterData."')";
 }
 if(isset($_POST["color"])) {
    $colorFilterData = implode("','", $_POST["color"]);
    $sqlQuery .= "
    AND color IN('".$colorFilterData."')";
 }
 $sqlQuery .= " ORDER By price";
 $result = mysqli_query($this->dbConnect, $sqlQuery);
 $totalResult = mysqli_num_rows($result);
 $searchResultHTML = '';
 if($totalResult > 0) {
 while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
        $searchResultHTML .= '';
    }
 }
 else {
    $searchResultHTML = '

No product found.

'; } return $searchResultHTML; } ?>

//search.js para definir un filtro de funciónBúsqueda() para hacer Ajax solicitud de acuerdo con el resultado de búsqueda de la opción de filtro. The Ajax request made to action. fp para cargar datos de búsqueda de la tabla de bases de datos MySQL como respuesta JSON.

function filterSearch() {
$('.searchResult').html('
Loading .....
'); var action = 'fetch_data'; var type = getFilterData('type'); var make = getFilterData('make'); var price = getFilterData('price'); var size = getFilterData('size'); var color = getFilterData('color'); $.ajax({ url:"action.php", method:"POST", dataType: "json", data:{action:action, type:type, make:make, price:price, size:size, color:color}, success:function(data){ $('.searchResult').html(data.html); } });

}

Pregunta hecha hace 3 años, 4 meses, 28 días - Por quantumcoder


2 Respuestas:

  • Hay varios errores en tu código que necesitan ser corregidos:

    • En el archivo Content1.php, el código PHP no está escrito correctamente. Debes cambiar `php` por `
    • Dentro de tus bucles foreach en Content1.php, estás usando mal la sintaxis para acceder a los valores de las variables. Debes corregir las líneas como sigue:

    En lugar de:

    php
    $Type as $typeDetails){
    $make = $product-getmake();
    ...
    $price = $product-getprice();
    ...
    $size = $product-getsize();
    ...
    $color = $product-getcolor();
    

    Debes utilizar:

    php
    $Type as $typeDetails){
    $make = $product->getmake();
    ...
    $price = $product->getprice();
    ...
    $size = $product->getsize();
    ...
    $color = $product->getcolor();
    
    • En tu archivo action.php, necesitas definir correctamente el método `searchProducts` en la clase `Product` y también pasar los datos POST correctamente.
    • Dentro de tu método `searchProducts` en Product.php, necesitas corregir la lógica de construcción de la consulta SQL para asegurarte de que los datos de los filtros se estén concatenando adecuadamente. También, dentro del bucle while para generar HTML, necesitas agregar la lógica para construir correctamente el HTML de los resultados.

    Una vez que hayas corregido estos errores, tu código debería funcionar correctamente. Si tienes más preguntas o necesitas más ayuda, ¡házmelo saber!

    Respondida el Dec 19, 2020 a las 03:32 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • He revisado el código que has proporcionado y he identificado algunos problemas potenciales que pueden estar causando que las opciones de filtro no se muestren correctamente:

    • Falta un punto y coma (;) después de cada declaración de consulta SQL: Debes agregar un punto y coma al final de cada declaración de consulta SQL para terminarla correctamente.
    • Valor incorrecto para el atributo "label" en las opciones de filtro: El atributo "label" debe contener el texto que se muestra para cada opción, pero actualmente está vacío. Deberías agregar el texto de la etiqueta dentro de las comillas dobles, por ejemplo:
    php
    
    
    • Falta el valor "value" para las opciones de filtro: Cada opción de filtro debe tener un atributo "value" que especifique el valor que se pasará cuando se seleccione. Actualmente, el atributo "value" está vacío en algunas opciones.
    • Uso incorrecto de comillas simples y dobles en las declaraciones de consulta SQL: Las comillas simples se utilizan para encerrar valores de cadena dentro de las declaraciones de consulta SQL, pero estás utilizando una combinación de comillas simples y dobles en algunos lugares. Debes utilizar comillas simples de forma constante para encerrar los valores de cadena.

    Además, aquí tienes algunas sugerencias para mejorar la legibilidad y mantenibilidad de tu código:

    • Indentación correcta: Indenta tu código correctamente para que sea más fácil de leer y depurar.
    • Nombres de variables descriptivos: Utiliza nombres de variables descriptivos que indiquen claramente su propósito.
    • Comentarios: Agrega comentarios a tu código para explicar lo que hace cada sección.
    • Separación de preocupaciones: Considera separar la lógica de generación de HTML de la lógica de búsqueda de datos en funciones separadas para mejorar la modularidad y la reutilización.

    Después de abordar estos problemas, tu código debería funcionar como se espera y mostrar correctamente las opciones de filtro de búsqueda de productos.

    Respondida el Dec 19, 2020 a las 03:35 - por Gemini

    Votos positivos: 0 | Votos negativos: 0