TransWikia.com

Crear consulta SQL en PHP a partir de checkbox

Stack Overflow en español Asked by ivi_trebol on December 11, 2021

Tengo varios checkbox que me forman un array en JS cuando seleccionas, pasandolo a JSON y el metodo post por AJAX lo paso a PHP.

ARCHIVO JS

$(document).ready(function() {

    $('[name="checks[]"]').click(function() {
 
        var arr = $('[name="checks[]"]:checked').map(function(){
            return this.value;
        }).get();
        
        var str = arr.join(',');
        
        var arrJson=JSON.stringify(arr);
        
        $('#str').text(str);

 
        // mediante ajax, enviamos por POST el json en la variable: arrayCheckboxes
        $.post("prueba.php",{arrayCheckboxes:arrJson},function(data) {
            // Mostramos el texto devuelto por el archivo php
            alert(data);


        });
    });
});

En el archivo php convierto ese array de JS a PHP y mediante unos if creo una consulta SQL

ARCHIVO PHP


$arrayRecibido=json_decode($_POST["arrayCheckboxes"], true );
 
$stringQuery = "SELECT ";

$int = 1;
foreach($arrayRecibido as $valor){

    if(count($arrayRecibido) == 1){
        $stringQuery = $stringQuery.$valor;
    }else{
        if ($int>0 and $int <= count($arrayRecibido)){

            if($int < count($arrayRecibido)){
                $stringQuery = $stringQuery.$valor. ",";
            }else{
                $stringQuery = $stringQuery.$valor;
            }

        }
    }
    $int++;
}

$stringQuery = $stringQuery." FROM clientes";

Ahora tengo la consulta SQL en PHP ($stringQuery), el problema es que lo que me retorna el archivo php no lo tengo en PHP en el primer archivo, me lo guarda en la variable data (que hace el alert) pero el metodo post de AJAX me permite recoger lo que me pasa el php pero a una variable js.

Sabeis como puedo recoger unos checkbox seleccionados y con eso hacer una consulta PHP?
POR EJEMPLO SELECCIONO CHECKBOX 1 Y 2, NO EL 3. QUIERO HACER UNA QUERY SQL DE LAS COLUMNAS 1 Y 2.

One Answer

Por lo que pones y la forma que lo procesas se entiende (no lo muestras) el

var arr = $('[name="checks[]"]:checked').map(function(){
            return this.value;
        }).get();

debe retornar el nombre de la columna; es decir al momento de crear los checkbox les asignaste el nombre de la columna que representan algo como (por ejmplo): <input type="checkbox" [otras propiedades/atributos que uses] value="nombre_cliente" />.

Ahora (con la ya mencionado en párrafo anterior) tu código PHP (sugiero) quede de la siguiente forma:

$arrayRecibido=json_decode($_POST["arrayCheckboxes"], true );
$columnas=[]; // Creamos un array para los nombres de columnas 
//$stringQuery = "SELECT "; // No lo usaremos en el "foreach"

//$int = 1; // No le caso
foreach($arrayRecibido as $valor){

    $columnas[]=$valor;

}

$stringQuery =  "SELECT " . implode(", ", $columnas). " FROM clientes";

ya el $stringQuery tendrá su consulta que requieres.

Ahora bien; si en la parte JavaScript antes mencionada devuelves por ejemplo la posición de la columna o número (que tu le asignes) de columnas es decir que tuvieras en tu HTML <input type="checkbox" [otras propiedades/atributos que uses] value="1" />; tendrás que primero que definir el número N a que columna corresponde (esto ya en el PHP); tal que, cuando recorras $arrayRecibido cada $valor deberás (sugiero) pasarlo a una función que por ejemplo si recibe 1 devuelva nombre_cliente y así para cada columna.

Answered by RobertoLeOr on December 11, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP