2010-02-15 24 views

Respuesta

66

Si la casilla de verificación está marcada, se pasará el valor de la casilla de verificación. De lo contrario, el campo no se pasa en la publicación HTTP.

if (isset($_POST['mycheckbox'])) { 
    echo "checked!"; 
} 
+0

¿Funciona esto si se marcó una 'casilla de verificación', luego se desmarcó y luego se envió el formulario? –

+1

Sí, el navegador solo envía el estado en el que se encontraba la casilla de verificación, cuando el usuario hizo clic en el botón Enviar, cuántas veces se marcó la casilla de verificación o si no se marcó no importa. –

+0

Gracias. 'ASP.NET MVC' lo maneja diferente, así que pensé que sería similar en' PHP', pero parece que no lo es. :) –

6

Prueba este

<form action="form.php" method="post"> 
    Do you like stackoverflow? 
    <input type="checkbox" name="like" value="Yes" /> 
<input type="submit" name="formSubmit" value="Submit" /> 
</form> 
<?php 
    if(isset($_POST['like']) 
    { 
     echo "You like Stackoverflow."; 
    } 
    else 
    { 
     echo "You don't like Stackoverflow."; 
    } 
?> 

O esto

<?php 
    if(isset($_POST['like']) && 
    $_POST['like'] == 'Yes') 
    { 
     echo "You like Stackoverflow."; 
    } 
    else 
    { 
     echo "You don't like Stackoverflow."; 
    } 
?> 
27

se puede comprobar que por cualquiera de las casilla de verificación tiempo isset() o empty() (su cheque isset explícita) está marcada o no

por ejemplo

<input type='checkbox' name='Mary' value='2' id='checkbox' /> 

aquí se puede comprobar por

if (isset($_POST['Mary'])) { 
    echo "checked!"; 
} 

o

if (!empty($_POST['Mary'])) { 
    echo "checked!"; 
} 

el único anterior se comprobará si quieres hacer para muchos de lo que puede hacer una matriz en lugar de escribir por separado para todos checkbox prueba como

<input type="checkbox" name="formDoor[]" value="A" />Acorn Building<br /> 
<input type="checkbox" name="formDoor[]" value="B" />Brown Hall<br /> 
<input type="checkbox" name="formDoor[]" value="C" />Carnegie Complex<br /> 

php

$aDoor = $_POST['formDoor']; 
    if(empty($aDoor)) 
    { 
    echo("You didn't select any buildings."); 
    } 
    else 
    { 
    $N = count($aDoor); 
    echo("You selected $N door(s): "); 
    for($i=0; $i < $N; $i++) 
    { 
     echo htmlspecialchars($aDoor[$i]). " "; 
    } 
    } 
+0

¿Cómo hacer que solo sea posible marcar una casilla de verificación desde múltiples casillas e insertarla en la base de datos? 'insert into table_name (choice) VALUES ('$ aDoor')' –

+0

@AlKush usa la radio box en su lugar;) –

+0

Gracias. Y sí, he decidido usar botones de radio. Pero cómo hacerlo necesario. Por ejemplo. Tengo tres botones de radio que no han sido revisados. Pero quiero recordarle al usuario que tiene que elegir uno de ellos. –

2

Si no sabe qué casillas de verificación que su página tiene (por ejemplo: si va a crear de forma dinámica) puede simplemente poner un campo oculto con el mismo nombre y el valor 0 justo encima de la casilla de verificación.

<input type="hidden" name="foo" value="0" /> 
<input type="checkbox" name="foo" value="1"> 

De esta manera obtendrá 1 o 0 dependiendo de si la casilla de verificación está seleccionada o no.

0

Me encanta manos cortos para:

$isChecked = isset($_POST['myCheckbox']) ? "yes" : "no"; 
Cuestiones relacionadas