Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/08/2009, 05:39
aeloco
 
Fecha de Ingreso: abril-2008
Mensajes: 32
Antigüedad: 16 años
Puntos: 0
Respuesta: Filtro de campos sin resolver

He hecho un ejemplo para que lo veas más claro.

Fichero index.php:

Código PHP:
<?php

    
function operacion_and($a$b) {
        if (
$a != '1' && $a != '0') return -1;
        else if (
$b != '1' && $b != '0') return -1;
        else {
            if (
$b == '1') return $a;
            else return 
0;
        }
    }

?>

<html>

<head>
    <title>Operación AND</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>

    <?php
    
        
if ($_POST['boton_enviar'] == 'Enviar') {
            for (
$i 0$i 6$i++) {
                
$campo "cb" . ($i 1);
                
                if (
$_POST[$campo] == 'on'$cb '1';
                else 
$cb '0';
                
                echo 
$cb;
                if (
$i == 5) echo "&nbsp; -> Vector de categorías elegidas<br />";
            }
            
            
$mascara $_POST['mascara'];
            if (
strlen($mascara) != 6) echo "<br /><b>Longitud de la máscara incorrecta.</b><br />";
            else {
                
$salir 0;
                for (
$i 0$i && !$salir$i++) {
                    if (
$mascara[$i] != '0' && $mascara[$i] != '1') {
                        
$salir 1;
                        echo 
"<br /><b>La máscara sólo puede estar formada por 0 y 1.</b><br />";
                    }
                }
                if (!
$salir) {
                    for (
$i 0$i 6$i++) {
                        echo 
$mascara[$i];
                    }
                    echo 
"&nbsp; -> Máscara de categorías<br />";
                    echo 
"-------------------------------------------<br />";
                    
                    for (
$i 0$i 6$i++) {
                        
$campo "cb" . ($i 1);
                        
                        if (
$_POST[$campo] == 'on'$cb '1';
                        else 
$cb '0';
                        
                        
$aux operacion_and($cb$mascara[$i]);
                        echo 
$aux;
                    }
                    echo 
"&nbsp; -> Resultado operación AND<br /><br />";
                    echo 
"Significa que de las categorías indicadas por la máscara, el usuario ha elegido 
                          las indicadas por el resultado<br />"
;
                }
            }
        }
    
        else {
            echo 
"
            <form action='index.php' method='post'>
                Elija las categorías que desee:<br /><br />
                <input type='checkbox' name='cb1' />Categoría 1<br />
                <input type='checkbox' name='cb2' />Categoría 2<br />
                <input type='checkbox' name='cb3' />Categoría 3<br />
                <input type='checkbox' name='cb4' />Categoría 4<br />
                <input type='checkbox' name='cb5' />Categoría 5<br />
                <input type='checkbox' name='cb6' />Categoría 6<br /><br />
                Máscara de categorías:&nbsp;<input type='text' name='mascara' /><br />(Ejemplo: 100110)<br /><br />
                <input type='submit' value='Enviar' name='boton_enviar' />
            </form>
            "
;
        }
    
    
?>
    
</body>

</html>
Espero que te sirva.