Desde hace unos días he estado trabajando en un formulario de búsqueda. Dicha búsqueda debe hacerse según ciertos criterios que se deben seleccionar en checkboxes. En este caso almacenes, clases, categorias.
El problema que tengo es que al pulsar un botón submit para ejecutar una consulta a mi base de datos aún cuando no he marcado ningún check en la consulta aparecen los valores de estos check y tengo varios días dándole vueltas al asunto y aún no consigo solución.
El código de mi proceso es el siguiente
Código PHP:
if ( isset ( $_POST['importar'] ) ){
$sqlImportar = "SELECT a.Referencia AS ref, a.Descripcion AS descp, c.Categoria AS cat, cl.Clase AS clase,
alm.Codigo AS cod, alm.Nombre AS almacen, alm.Codigo AS cod, aa.Cantidad AS cantidad
FROM
Articulos AS a JOIN Categorias AS c ON a.IDCategoria = c.ID JOIN Clases AS cl ON a.IDClase = cl.ID JOIN
AlmacenArticulos AS aa ON aa.Referencia = a.Referencia JOIN Almacenes AS alm ON alm.Codigo = aa.CodigoAlmacen
WHERE
a.IDCuenta = '$idcuenta' AND c.IDCuenta = '$idcuenta' AND cl.IDCuenta = '$idcuenta' AND alm.IDCuenta = '$idcuenta'
AND aa.IDCuenta = '$idcuenta'";
//Filtro Almacenes
if ( count( $_POST['almacenes'] ) > 0 ){
$i = 0;
foreach( $_POST['almacenes'] as $almacen ){
echo $almacen."<br>";
if ( $i == 0 ){
$sqlImportar .= " AND (";
$sqlImportar .= "alm.Codigo = '$almacen'";
} else {
$sqlImportar .= " OR alm.Codigo = '$almacen'";
}
$i++;
}
$sqlImportar .= ")";
}
//Filtro Clases
if ( count( $_POST['clases'] ) > 0 ){
$j = 0;
foreach( $_POST['clases'] as $clase ){
if ( $j == 0 ){
$sqlImportar .= " AND (";
$sqlImportar .= "a.IDClase = '$clase'";
} else {
$sqlImportar .= " OR a.IDClase = '$clase'";
}
$j++;
}
$sqlImportar .= ")";
}
//Filtro Categorias
if ( count( $_POST['categorias'] ) > 0 ){
$j = 0;
foreach( $_POST['categorias'] as $categoria ){
if ( $j == 0 ){
$sqlImportar .= " AND (";
$sqlImportar .= "a.IDCategoria = '$categoria'";
} else {
$sqlImportar .= " OR a.IDCategoria = '$categoria'";
}
$j++;
}
$sqlImportar .= ")";
}
$rsImportar = mssql_query( $sqlImportar );
$result = mssql_num_rows( $rsImportar );
Código PHP:
<table width="150" id="almacenes" class="tablaFiltro">
<?php
$sql = "SELECT Codigo,Nombre FROM Almacenes WHERE IDCuenta = '$idcuenta'";
$rs = mssql_query( $sql );
$resultados = mssql_num_rows( $rs );
if ( $resultados > 0 ){
$i = 0;
while ( $rows = mssql_fetch_array( $rs ) ){
echo "<tr>";
echo "<td><input type='checkbox' id='alm".$i."' name='almacenes[]' value='".$rows['Codigo']."' />
".$rows['Nombre']."</td>";
echo "</tr>";
$i++;
}
}
?>
</table>
<table width="150" id="clases" class="tablaFiltro">
<?php
$sql = "SELECT ID,Clase FROM Clases WHERE IDCuenta = '$idcuenta'";
$rs = mssql_query( $sql );
$resultados = mssql_num_rows( $rs );
if ( $resultados > 0 ){
$i = 0;
while ( $rows = mssql_fetch_array( $rs ) ){
echo "<tr>";
echo "<td><input type='checkbox' id='clase".$i."' name='clases[]' value='".$rows['ID']."' />
".$rows['Clase']."</td>";
echo "</tr>";
$i++;
}
}
?>
</table>
<table width="150" id="categorias" class="tablaFiltro">
<?php
$sql = "SELECT ID,Categoria FROM Categorias WHERE IDCuenta = '$idcuenta'";
$rs = mssql_query( $sql );
$resultados = mssql_num_rows( $rs );
if ( $resultados > 0 ){
$i = 0;
while ( $rows = mssql_fetch_array( $rs ) ){
echo "<tr>";
echo "<td><input type='checkbox' id='cat".$i."' name='categorias[]' value='".$rows['ID']."' />
".$rows['Categoria']."</td>";
echo "</tr>";
$i++;
}
}
?>
</table>
Cualquier ayuda u orientación es bien recibida.
Desde ya muchísimas gracias.