Buenas tardes, soy nuevo en el foro, disculpen los posibles errores que puedan haber en mi publicación.
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 );
Los checks los creo de la siguiente manera:
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>
Adicional a esto, estoy usando paneles en fichas spry de Dreamweaver y todo el código para ello es autogenerado, no se si eso sea lo que me ocasiona conflictos.
Cualquier ayuda u orientación es bien recibida.
Desde ya muchísimas gracias.