Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] pasar select multiple a consulta de BD

Estas en el tema de pasar select multiple a consulta de BD en el foro de PHP en Foros del Web. Hola amigos mi duda es la siguiente tengo el siguiente select multiple Código PHP: < select id = "filtrar[]"  name = "filtrar[]"  class= "multiselect-ui form-control"  multiple = ...
  #1 (permalink)  
Antiguo 14/06/2018, 00:13
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 109
Antigüedad: 6 años
Puntos: 0
pasar select multiple a consulta de BD

Hola amigos mi duda es la siguiente tengo el siguiente select multiple

Código PHP:
<select id="filtrar[]" name="filtrar[]" class="multiselect-ui form-control" multiple="multiple">
            <
option value="numero">Numero FIVPS</option>
            <
option value="estado">Estado FIVPS</option>
            <
option value="vistobueno">Visto Bueno</option>
            <
option value="nombre">Tipo de Producto</option>
            <
option value="consignatario">Nombre Consignatario</option>
            <
option value="apellidos">Apellidos Consignatario</option>
            <
option value="rut">>Rut Consignatario</option>
            <
option value="direccionc">Calle</option>
            <
option value="numerodireccion">Numero Direcci&oacute;n</option>
            <
option value="pais">Pa&iacute;s de Origen Mercancia</option>
            <
option value="fob">Valos FOB</option>
            <
option value="importacion">Regimen de Importaci&oacute;n</option>
            <
option value="flete">Flete</option>
            <
option value="Seguro">Seguro</option>
            <
option value="cif">Valor CIF</option>
            <
option value="codigotra">Codigo Tratado</option>
            <
option value="certificado">Certificado de Origen</option>
            <
option value="totalbulto">Total de Bultos</option>
            <
option value="pesobruto">Peso Bruto</option>
            <
option value="envio">Numero Cupon Postal</option>
            <
option value="fecha">Fecha Envio</option>
            <
option value="emisor">Emisor</option>
            <
option value="paisinf">Pa&iacute;s de Embarque</option>
            <
option value="numerof">Numero Factura</option>
            <
option value="otro">Otro</option>
            <
option value="correos">Nombre Funcionario de Correos</option
resulta que del lado del servidor apturo buen los selecconados pero mi problema readica en que necesito saber los seleccionados para con es hacer una consulta a la BD con mysql pero que aparezca todo en una misma tabla, por ahora lo hace pero muestra una tabla por cada variable

de mano muchas gracias
  #2 (permalink)  
Antiguo 14/06/2018, 09:06
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 10 años, 3 meses
Puntos: 528
Respuesta: pasar select multiple a consulta de BD

Muestra el código que tienes hecho para poder indicarte o sugerirte cómo arreglarlo.
  #3 (permalink)  
Antiguo 18/06/2018, 20:23
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 109
Antigüedad: 6 años
Puntos: 0
Respuesta: pasar select multiple a consulta de BD

disculpa la demora amigo lo que hace hasta ahora me genera una tabla por cada variable seleccionada

Código PHP:
<?php
session_start
();

include(
"conexion.php");
$con conectar();
  if (isset(
$_GET["fecha1"])) {
    
$fecha1 $_GET["fecha1"];    
}
if (isset(
$_GET["fecha2"])) {
    
$fecha2 $_GET["fecha2"];    
}

if (isset(
$_GET["filtro"])) {
    
$filtro $_GET["filtro"];    
}

 
$porNombre1=$_GET['filtrar'];
        
// Recorremos todos los valores del select para encontrar el
        // seleccionado
        
$cantidad count($porNombre1) ; 
    for (
$i=0$i<$cantidad$i++){   

                  
$del_id $porNombre1[$i]; 
   

$numero=1;
$fecha11 date('d-m-Y'strtotime($fecha1));
$fecha22 date('d-m-Y'strtotime($fecha2));
$funcio=$_SESSION["nombre"];
switch (
$filtro) {
    case 
0:
        
$sql="SELECT $del_id FROM hojat WHERE (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio')"
        break;
    case 
1:
        
$sql="SELECT $del_id FROM hojat where estado = 'Libre' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
2:
        
$sql="SELECT $del_id FROM hojat where estado= 'Validacion' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22' AND funcionario='$funcio') order by estado";
        break;
    case 
3:
        
$sql="SELECT $del_id FROM hojat where estado = 'Valoracion' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
4:
        
$sql="SELECT $del_id FROM hojat where estado = 'Visto Bueno' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
5:
        
$sql="SELECT $del_id FROM hojat where estado = 'Retencion por Rotulado' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
6:
        
$sql="SELECT $del_id FROM hojat where estado = 'Retencion por Rotulado' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
7:
        
$sql="SELECT $del_id FROM hojat where estado = 'Retencion por contrabando' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    
}

$result mysqli_query($con,$sql);
$count mysqli_num_rows($result);

$count_all$count;

$array = array("N&deg;",$del_id);


    

?>  
  <!DOCTYPE HTML>
<html>
    <head>
        <!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>FIVPS</title>
        <link href="css/bootstrap.min.css" rel="stylesheet" />
        <link href="css/estilo.css" rel="stylesheet">   
        <link href="css/jquery-ui.css" rel="stylesheet">
        <style>
            #foto{
                float: right;
            }
        </style>
    </head>
    <body>    
        <div class=" container cuerpo">
        <br>
            <legend>Filtros para Exportar datos</legend>
            <br>
          <form name="consulta" id="consulta" method="GET" action="buscarPorFecha.php"> 
            <div class='row'>
                    <div class='col-sm-3'>    
                        <label for="fecha1">Desde</label>
                    </div>
                    <div class='col-sm-3'>
                        <label for="fecha2">Hasta</label>
                    </div>
                <div class='col-sm-2'>
                        <label for="filto">estado</label>
                    </div>
             </div>
            <div class='row'>
                    <div class='col-sm-3 col-offset-sm-3'>    
                        <div class='form-group'>
                            <input class="form-control" name="fecha1" id="fecha1"  size="30" type="text"/>
                        </div>
                    </div>
                    <div class='col-sm-3'>
                        <div class='form-group'>
                            <input class="form-control" name="fecha2" id="fecha2"  size="30" type="text" />
                        </div>
                    </div>
                <div class='col-sm-2'>
                        <div class='form-group'>
                            <select class="form-control" name="filtro" id="filtro">
                              <option value="0" selected>Todas</option>
                              <option value="1">Libre</option>
                              <option value="2">Validacion</option>
                              <option value="3">Valoracion</option>
                              <option value="4">Visto Bueno</option>
                              <option value="5">Retencion por Rotulado</option>
                              <option value="6">Retencion por Suspencion de Despacho</option>
                              <option value="7">Retencion por Contrabando</option>
                            </select>                         
                        </div>
                    </div>
                <div class='col-sm-4'>
                        <div class='form-group'>
                            <a  href="#" onclick="document.getElementById('consulta').submit()" type="button" class="btn btn-warning">Buscar</a>
                            
                        </div>
                    </div> 
             </div>
          </form>
            <br>
            <div id="loader">
                <center>
                    <div>Buscando..</div>
                </center>
                <br>
            </div>
            <div id="tabla">  
                <?php
  
if ($count_all == 1) {
    echo 
"<span class='a'>$count_all resultado encontrado.</span>";
    
//echo "<a type='button' class='btn btn-success btn-xs' href='pdf_fechas.php'>Imprimir</a>";
}else{
    echo 
"<span class='a'>$count_all resultados encontrados.</span>";
    if (
$count_all!=0) {
        
//echo "<a type='button' class='btn btn-success btn-xs' href='pdf_fechas.php'>Imprimir</a>";
    

}

        echo 
"<br>";
echo 
"<br>";

if(
$count_all 0)
{
    echo 
"<div> 
                <center>
                    <a href='menu.php'>Volver</a>
                </center>
          </div>
          <br>"
;

echo
"<table class='table table-hover table-bordered'>";
    echo 
"<thead>";
    foreach(
$array as $value) {
    echo 
"<th class='active' >$value</th>";
}
    echo 
"</thead>";
    while(
$row=mysqli_fetch_array($result))
    {     
    echo 
'<tr><td>'.$numero++.'</td><td>'.$row[$del_id].'</td></tr>';
    
    }
        
        echo 
"</table>";  
}
    }    
  
?>
necesito que aparezca todo en una tabla en columnas
  #4 (permalink)  
Antiguo 24/06/2018, 20:06
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 109
Antigüedad: 6 años
Puntos: 0
Respuesta: pasar select multiple a consulta de BD

Cita:
Iniciado por luissquadrito Ver Mensaje
disculpa la demora amigo lo que hace hasta ahora me genera una tabla por cada variable seleccionada

Código PHP:
<?php
session_start
();

include(
"conexion.php");
$con conectar();
  if (isset(
$_GET["fecha1"])) {
    
$fecha1 $_GET["fecha1"];    
}
if (isset(
$_GET["fecha2"])) {
    
$fecha2 $_GET["fecha2"];    
}

if (isset(
$_GET["filtro"])) {
    
$filtro $_GET["filtro"];    
}

 
$porNombre1=$_GET['filtrar'];
        
// Recorremos todos los valores del select para encontrar el
        // seleccionado
        
$cantidad count($porNombre1) ; 
    for (
$i=0$i<$cantidad$i++){   

                  
$del_id $porNombre1[$i]; 
   

$numero=1;
$fecha11 date('d-m-Y'strtotime($fecha1));
$fecha22 date('d-m-Y'strtotime($fecha2));
$funcio=$_SESSION["nombre"];
switch (
$filtro) {
    case 
0:
        
$sql="SELECT $del_id FROM hojat WHERE (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio')"
        break;
    case 
1:
        
$sql="SELECT $del_id FROM hojat where estado = 'Libre' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
2:
        
$sql="SELECT $del_id FROM hojat where estado= 'Validacion' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22' AND funcionario='$funcio') order by estado";
        break;
    case 
3:
        
$sql="SELECT $del_id FROM hojat where estado = 'Valoracion' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
4:
        
$sql="SELECT $del_id FROM hojat where estado = 'Visto Bueno' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
5:
        
$sql="SELECT $del_id FROM hojat where estado = 'Retencion por Rotulado' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
6:
        
$sql="SELECT $del_id FROM hojat where estado = 'Retencion por Rotulado' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    case 
7:
        
$sql="SELECT $del_id FROM hojat where estado = 'Retencion por contrabando' AND (fechaingreso BETWEEN '$fecha11 ' AND '$fecha22 ' AND funcionario='$funcio') order by estado";
        break;
    
}

$result mysqli_query($con,$sql);
$count mysqli_num_rows($result);

$count_all$count;

$array = array("N&deg;",$del_id);


    

?>  
  <!DOCTYPE HTML>
<html>
    <head>
        <!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>FIVPS</title>
        <link href="css/bootstrap.min.css" rel="stylesheet" />
        <link href="css/estilo.css" rel="stylesheet">   
        <link href="css/jquery-ui.css" rel="stylesheet">
        <style>
            #foto{
                float: right;
            }
        </style>
    </head>
    <body>    
        <div class=" container cuerpo">
        <br>
            <legend>Filtros para Exportar datos</legend>
            <br>
          <form name="consulta" id="consulta" method="GET" action="buscarPorFecha.php"> 
            <div class='row'>
                    <div class='col-sm-3'>    
                        <label for="fecha1">Desde</label>
                    </div>
                    <div class='col-sm-3'>
                        <label for="fecha2">Hasta</label>
                    </div>
                <div class='col-sm-2'>
                        <label for="filto">estado</label>
                    </div>
             </div>
            <div class='row'>
                    <div class='col-sm-3 col-offset-sm-3'>    
                        <div class='form-group'>
                            <input class="form-control" name="fecha1" id="fecha1"  size="30" type="text"/>
                        </div>
                    </div>
                    <div class='col-sm-3'>
                        <div class='form-group'>
                            <input class="form-control" name="fecha2" id="fecha2"  size="30" type="text" />
                        </div>
                    </div>
                <div class='col-sm-2'>
                        <div class='form-group'>
                            <select class="form-control" name="filtro" id="filtro">
                              <option value="0" selected>Todas</option>
                              <option value="1">Libre</option>
                              <option value="2">Validacion</option>
                              <option value="3">Valoracion</option>
                              <option value="4">Visto Bueno</option>
                              <option value="5">Retencion por Rotulado</option>
                              <option value="6">Retencion por Suspencion de Despacho</option>
                              <option value="7">Retencion por Contrabando</option>
                            </select>                         
                        </div>
                    </div>
                <div class='col-sm-4'>
                        <div class='form-group'>
                            <a  href="#" onclick="document.getElementById('consulta').submit()" type="button" class="btn btn-warning">Buscar</a>
                            
                        </div>
                    </div> 
             </div>
          </form>
            <br>
            <div id="loader">
                <center>
                    <div>Buscando..</div>
                </center>
                <br>
            </div>
            <div id="tabla">  
                <?php
  
if ($count_all == 1) {
    echo 
"<span class='a'>$count_all resultado encontrado.</span>";
    
//echo "<a type='button' class='btn btn-success btn-xs' href='pdf_fechas.php'>Imprimir</a>";
}else{
    echo 
"<span class='a'>$count_all resultados encontrados.</span>";
    if (
$count_all!=0) {
        
//echo "<a type='button' class='btn btn-success btn-xs' href='pdf_fechas.php'>Imprimir</a>";
    

}

        echo 
"<br>";
echo 
"<br>";

if(
$count_all 0)
{
    echo 
"<div> 
                <center>
                    <a href='menu.php'>Volver</a>
                </center>
          </div>
          <br>"
;

echo
"<table class='table table-hover table-bordered'>";
    echo 
"<thead>";
    foreach(
$array as $value) {
    echo 
"<th class='active' >$value</th>";
}
    echo 
"</thead>";
    while(
$row=mysqli_fetch_array($result))
    {     
    echo 
'<tr><td>'.$numero++.'</td><td>'.$row[$del_id].'</td></tr>';
    
    }
        
        echo 
"</table>";  
}
    }    
  
?>
necesito que aparezca todo en una tabla en columnas
la solución ya la encontré gracias la comparto por si alguien le sirve

Código PHP:
$variable="";
    for (
$i=0$i<$cantidad$i++){   
        
$variable.=$porNombre1[$i].',';
                   
   
    }
    
$variable trim($variable,',');
    
$variable
primero declaro la variable vacía después recorro el arreglo con el for y y a eso se lo concateno variable finalmente con el trim elimino la coma final y la variable se la paso a la sentencia sql para hacer la consulta a la BBDD



La zona horaria es GMT -6. Ahora son las 04:29.