verificación verificacion una para hacer formulario ejemplo cuál correcto control casillas casilla botones php sql mysql

php - verificacion - Insertar valores de casilla de verificación en la base de datos



cuál es el html correcto para hacer una casilla de verificación (6)

Necesito ayuda para este problema que estoy tratando de resolver por un tiempo (soy nuevo en PHP). Tengo un formulario con varias casillas de verificación cuyos valores se extraen de una base de datos. Logré mostrarlos en el formulario, asignarles un valor apropiado, pero no puedo insertar sus valores en otra base de datos.

Aquí está el código:

<form id="form1" name="form1" method="post" action=""> <?php $info_id = $_GET[''info_id'']; $kv_dodatoci = mysql_query("SELECT * FROM `dodatoci`") or die(''ERROR DISPLAYING: '' . mysql_error()); while ($kol = mysql_fetch_array($kv_dodatoci)){ $id_dodatoci = $kol[''id_dodatoci'']; $mk = $kol[''mk'']; echo ''<input type="checkbox" name="id_dodatoci[]" id="id_dodatoci" value="'' . $id_dodatoci . ''" />''; echo ''<label for="'' . $id_dodatoci.''">'' . $mk . ''</label><br />''; } ?> <input type="hidden" value="<?=$info_id?>" name="info_id" /> <input name="insert_info" type="submit" value="Insert Additional info" /> </form> <?php if (isset($_POST[''insert_info'']) && is_array($id_dodatoci)) { echo $id_dodatoci . ''<br />''; echo $mk . ''<br />''; // --- Guess here''s the problem ----- // foreach ($_POST[''id_dodatoci''] as $dodatok) { $dodatok_kv = mysql_query("INSERT INTO `dodatoci_hotel` (id_dodatoci, info_id) VALUES (''$dodatok'', ''$info_id'')") or die(''ERROR INSERTING: ''.mysql_error()); } } ?>

Mi problema es recorrer todas las casillas de verificación y, para cada una de ellas, rellenar un registro por separado en una base de datos. en realidad, no sé cómo reconocer qué casilla está marcada y pongo el valor apropiado en db.

Espero que alguien pueda ayudarme a resolver esto o darme alguna guía.

Gracias por adelantado.


Como nota adicional: está utilizando la sintaxis HTML incorrecta para ID y <label> . <label> atributo "for" de <label> debe apuntar a un ID, no a un valor. También necesita ID únicos para cada elemento. El código que ha publicado no se validará.

Además, no está validando su código en absoluto. Por lo menos, haga un htmlspecialchars() o htmlentities() en la entrada antes de que lo mysql_real_escape_string() y mysql_real_escape_string() antes de insertar datos en el DB.


Hoi!

Bueno, como escribió Eli, el POST no está configurado, cuando una casilla de verificación no está marcada.

A veces uso un campo oculto adicional (-array) para asegurarme de que tengo una lista de todas las casillas de verificación en la página.

Ejemplo:

<input type="checkbox" name="my_checkbox[<?=$id_of_checkbox?>]"> <input type="hidden" name="array_checkboxes[<?=$id_of_checkbox?>]" value="is_on_page">

Entonces me meto en $ _POST:

array(2){ array(1){"my_checkbox" => array(1){[123]=>"1"}} array(1){"array_checkboxes" => array(1){[123]=>"is_on_page"}} }

Incluso obtengo la segunda línea, cuando la casilla de verificación NO está marcada y puedo recorrer todas las casillas de verificación con algo como esto:

foreach ($_POST["array_checkboxes"] as $key => $value) { if($value=="is_on_page") { $value_of_checkbox[$key] = $_POST["my_checkbox"][$key]; //Save this value } }

¡Espero que esto ayude! :)

Saludos cordiales, Bastian


Puede decir si se ha seleccionado una casilla de verificación porque tendrá un valor. Si no está seleccionado, no aparecerá en la solicitud / obtención / publicación en PHP.

Lo que puede querer hacer es verificar el valor y trabajar en base a eso. El valor es la cadena ''on'' por defecto, pero puede ser cambiado por el atributo value = '''' en HTML.

Aquí hay un par de fragmentos de código que pueden ayudar (no exactamente la calidad de producción, pero ayudará a ilustrar):

HTML:

<input type=''checkbox'' name=''ShowCloseWindowLink'' value=''1''/> Show the ''Close Window'' link at the bottom of the form.

PHP:

if (isset($_POST["ShowCloseWindowLink"])) { $ShowCloseWindowLink=1; } else { $ShowCloseWindowLink=0; } ..... $sql = "update table set ShowCloseWindowLink = ".mysql_real_escape_string($ShowCloseWindowLink)." where ..."

(suponiendo que una tabla con una columna ShowCloseWindowLink aceptará un 1 o 0)


También algo que pocas personas usan pero que es bastante bueno en HTML, es que puedes tener:

<input type="hidden" name="my_checkbox" value="N" /> <input type="checkbox" name="my_checkbox" value="Y" />

y voila! - valores predeterminados para casillas de verificación ...!


2da respuesta:

Puede hacer algo como esto:

HTML:

echo ''<input type="checkbox" name="id_dodatoci[]" value="''.$id_dodatoci.''" />'';

PHP:

if ( !empty($_POST["id_dodatoci"]) ) { $id_dodatoci = $_POST["id_dodatoci"]; print_r($id_dodatoci); // This should provide an array of all the checkboxes that were checked. // Any not checked will not be present. } else { // None of the id_dodatoci checkboxes were checked. }

Esto se debe a que está utilizando el mismo nombre para todas las casillas de verificación, por lo que sus valores se pasarán a php como una matriz. Si usa diferentes nombres, cada uno tendrá su propio par clave / valor de publicación.

Esto también podría ayudar:

http://www.php-mysql-tutorial.com/php-tutorial/using-php-forms.php


Este es el ciclo que necesitaba. Me di cuenta de que necesito un ciclo a través de cada tecla con la variable $i .

if(isset($_POST[''id_dodatoci''])){ $id_dodatoci=$_POST[''id_dodatoci'']; $arr_num=count($id_dodatoci); $i=0; while ($i < $arr_num) { $query="INSERT INTO `dodatoci_hotel`(id_dodatoci,info_id) VALUES (''$id_dodatoci[$i]'',''$info_id'')"; $res=mysql_query($query) or die(''ERROR INSERTING: ''.mysql_error()); $i++; } }