Cómo combinar texto de búsqueda y casillas de verificación usando sql bootstrap php

Lo que tengo hasta ahora:Estoy trabajando en un sitio web basado en bases de datos. Hasta ahora, tengo una forma de búsqueda-texto con bootstrap y un botón de envío en index.php. En busca. php, obtengo una salida según la palabra que escribí en la forma de búsqueda-texto.

El Literature_table en el fondo se ve así:

| ID | Author | Genre   | Title |
| -- | ------ | --------|-------|
| 1  | Smith  | romance | aaaaa |
| 2  | Lee    | comedy  | bbbbb |
| 3  | Baker  | comedy  | ccccc |

Actualmente puedo buscar el nombre del autor y el título en la forma de búsqueda-texto.

Lo que quiero hacer: Quiero añadir las casillas bajo la casilla de búsqueda de texto, donde puedo elegir el género. El género se almacena como un 'set' en la base de datos. Ahora, ¿cómo puedo añadir esas casillas de verificación al formulario de búsqueda que ya tengo? Sólo quiero un solo botón de envío y comprobar las casillas de verificación es opcional para la búsqueda.

Códigos

index.php

y búsqueda. Php:

$keywordfromform = $_GET["keyword"];
$sql = "SELECT * FROM Literature_table
        WHERE CONCAT_WS('', Author, Title)
        LIKE '%" . $keywordfromform . "%' ";
$result = $mysqli->query($sql);

Experimenté con varios códigos pero nada funciona. También intenté resolver esto añadiendo una condición 'AND' sin resultados. Soy nuevo en sql, etc. en general y apreciaría su ayuda!

Pregunta hecha hace 3 años, 4 meses, 27 días - Por scriptsphinx


3 Respuestas:

  • Usted debe almacenar valores de forma en array. Necesitas cambiar el nombre de entrada.

    use "checkboxes[]" as name for array

    Para seleccionar, necesita usar Operador "IN".

    $keywordfromform = $_GET["keyword"];
    $genres = $_GET['checkboxes'] ?? [];
    $inOrTrueStatement = !empty($genres) ? "Genre IN ('" . implode("', '", $genres) . "')" : "TRUE";
    
    // SELECT * FROM Literature_table WHERE CONCAT_WS('', Author, Title) LIKE 'keyword' AND Genre IN ('value1', 'value2', 'value3')
    $sql = "SELECT * FROM Literature_table
            WHERE CONCAT_WS('', Author, Title)
            LIKE '%" . $keywordfromform . "%' 
            AND " . $inOrTrueStatement; // Genre IN ('xyz') or TRUE (if no genre is selected)
    
    $result = $mysqli->query($sql);
    

    Respondida el Dec 20, 2020 a las 14:55 - por codecatalyst

    Votos positivos: 0 | Votos negativos: 0

  • Para lograr lo que deseas, necesitas realizar algunos ajustes en tu código. Primero, debes modificar tu formulario para agregar las casillas de verificación de género. Luego, en tu archivo search.php, debes procesar las entradas del formulario y ajustar tu consulta SQL según las selecciones hechas por el usuario.

    A continuación te muestro cómo podrías modificar tu código:

    index.php:

    html
    

    search.php:

    php
    
    

    En este código, hemos modificado el formulario para incluir casillas de verificación para los géneros "comedy" y "romance". Luego, en el archivo search.php, revisamos si se han seleccionado géneros y ajustamos la consulta SQL en consecuencia para incluir los géneros seleccionados en la condición WHERE.

    Espero que esta explicación te ayude a integrar las casillas de verificación de género en tu búsqueda. Si tienes más preguntas o problemas, házmelo saber.

    Respondida el Dec 21, 2020 a las 14:58 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Aquí tienes los pasos para combinar la búsqueda de texto y las casillas de verificación usando SQL, Bootstrap y PHP:

    1. Crea un Formulario con Casillas de Verificación:

    En tu archivo index.php, agrega las casillas de verificación al formulario de búsqueda:

    php
    
    ...
    ...

    2. Maneja los Datos de Casillas de Verificación en PHP:

    En tu archivo search.php, procesa los datos de las casillas de verificación y genera la consulta SQL:

    php
     0) {
        $genreCondition = " AND Genre IN ('" . implode("', '", $selectedGenres) . "')";
    }
    
    // Generar la consulta SQL
    $sql = "SELECT  FROM Literature_table
            WHERE CONCAT_WS('', Author, Title)
            LIKE '%" . $keywordfromform . "%' " . $genreCondition;
    $result = $mysqli->query($sql);
    ?>
    

    Explicación del Código:

    Comprobamos si hay casillas de verificación seleccionadas y obtenemos sus valores. Generamos una condición de género basada en los valores seleccionados. Añadimos la condición de género a la consulta SQL, si es necesario. Ejecutamos la consulta SQL.

    3. Muestra los Resultados:*

    Puedes mostrar los resultados de la consulta utilizando un bucle while para recorrer los registros devueltos por la consulta.

    Respondida el Dec 21, 2020 a las 14:59 - por Gemini

    Votos positivos: 0 | Votos negativos: 0