20
Mar
08

Alta de elementos de tipo checkbox en PHP y MySQL.

checkbox.jpg

Algunas veces necesitamos listar elementos que ya se encuentran en la base de datos y los queremos dar de alta en otra tabla mediante checkbox; por ejemplo, necesitamos dar de alta un alumno y los idiomas que conoce.

Previamente tendriamos que tener cargada una tabla en la DB:

- nombre tabla: tabla_idiomas

- formada por los campos: id_idioma, nom_idioma

y una tabla creada para cargar los datos nuevos:

- nombre tabla: alumno_idiomas

- formada por los campos: id_alu, nom_alu, id_idioma

Ahora veamos como mostrar ese listado de idiomas y dar de alta uno o varios de ellos, para un alumno en particular. Recuerden de realizar antes la conexion a la DB (demostrado en post anterior).

Archivo: alta_checkbox.php

//Conexion a la DB
include(conexion.php);

//Formulario donde ingresa el alumno y los idiomas que conoce
echo "<form name='form_alta' action='' method='post'><table>";

echo "<input type='text' name='alumno'/>";

//Consulta tabla_idiomas
$consulta = mysql_query('SELECT * FROM `tabla_idiomas` ');

//Guardo los idiomas en un arreglo para mostrarlos de forma ordenada
$arreglo = array();
$items_por_linea    = 2;

while( $row = mysql_fetch_row( $consulta ) ) {
	array_push( $arreglo, $row );
	}

//Imprime
$i=0;

for( $j= 0; $j < count($arreglo); $j++ )
{
$ididioma     = $arreglo[$j][0];

$nomidioma = $arreglo[$j][1];

if( $j % $items_por_linea == 0 ) print '<tr>';

echo "<td align='left'><input name='.$i.' type='checkbox' value='.$ididioma     ;  if($_POST[$i]) {echo "checked";} />".$nomidioma."</td>";

$i++;

if( ($j + 1) % $items_por_linea == 0 ) print '</tr>';
}

//En campo oculto guardo la cantidad de registros que fueron tildados
echo "<input type='hidden' name='numerototal' value='.$i.' id='numerototal'/>";

echo "</table><input type="button" onclick="return verificar()" value="Enviar" name="btenviar" /></form>";

Antes de que se envien los datos al archivo guardar_datos.php, controlaremos en JavaScript, como en el alta realizada el post anterior, que todos los datos solicitados sean ingresados.

function verificar()
{
//Verifica si marco algun checkbox
contador=0;
form = document.forms["form_alta"]
for(i = 0; i < form.elements.length; i++)
    {
    if(form.elements[i].type == "checkbox")
         if(form.elements[i].checked) contador++
    }
if(contador==0) alert('Marque una opción en Idiomas.');
    else{
	document.form_alta.action="guardar_datos.php";
	document.form_alta.submit();
	}
}

Luego de completar el formulario y presionar el boton Enviar, sucede lo siguiente:Archivo: guardar_datos.php


//Conexion a la Base de Datos
    include ("conexion.php");

$alumno=$_POST['alumno'];

//Verifica los idiomas seleccionados
$numerototal = $_POST['numerototal'];

for ($i = 0; $i <= $numerototal; $i++)
   {
   $nombre_check = $_POST[$i];

   if ($nombre_check != "")
      {
      //Carga la tabla alumno_idiomas, en donde se muestra cada alumno con sus respectivos idiomas

      $resultado = mysql_query("insert into alumno_idiomas (`id_alu`,`nom_alu`,`id_idioma`) VALUES('".$idinf."','".$alumno."','".$nombre_check.value."')");
      }
   }

Esepro que les sirva. Hasta el proximo post.


14 Respuestas a “Alta de elementos de tipo checkbox en PHP y MySQL.”


  1. 1 MD
    Marzo 29, 2008 a las 4:31 pm

    Muy bueno el post. Te felicito por compartir tus conocimientos con todos nosotros, es de mucho valor. Saludos

    P/D: a la majadita también.

  2. 2 CULEN'TI'keb
    Abril 1, 2008 a las 7:13 pm

    ERES una pistola macho…. gracias por transmitir tus conocimientos , como dicen en mi pueblo
    yahooooooooooooo

  3. Mayo 2, 2008 a las 3:19 pm

    Hola muchachos bueno el aporte, yo estoy necesitando como checkear checkbox apartir de una base de datos que luego quiera mostrar un formulario con los checkbox que se seleccionaron

  4. 4 diana
    Mayo 15, 2008 a las 8:51 pm

    no podrian subir los archivos php??me marca error el primero no se cmo pegarlo

  5. Junio 5, 2008 a las 4:24 am

    oye muy interesante, pero tengo un problema al ejecutar el codigo alta_checkbox.php me sale error en la linea 31 me parece que es por $i, dice algo de string por fa si puede indicarme como hacer para que me funcione seria maravilloso, gracias

  6. 6 jg
    Agosto 10, 2008 a las 6:32 pm

    Saludos.
    Bueno amigo ud se acerco mucho a lo que yo andaba buscando el problema es que me marcaba errores, los cuales corregi, pero al ejecutarlo no funciona…. podria ud subir los fuentes para que todos podamos estudiarlos mejor. Gracias

  7. Septiembre 25, 2008 a las 4:55 pm

    gracias por compartir tus conocimientos, funcionó a la perfección.

  8. 8 Simbelmyne
    Diciembre 31, 2008 a las 7:02 pm

    Muchas gracias, La respuesta me vino como anillo al dedo :) !!!!

  9. 9 nestor
    Mayo 29, 2009 a las 11:59 pm

    necesito una ayuda urgente ¿saber cual seria el error en el codigo en esta parte?
    if( $j % $items_por_linea == 0 ) print ”;

    echo “”.$nomidioma.”";

    $i++;

    me salta el siguiente error:
    Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in C:\wamp\www\checkbox\alta_checkbox1.php on line 51

    • 10 ivanabeltran
      Mayo 30, 2009 a las 4:24 pm

      Hola Nestor! Te cuento donde podria estar el error:
      if( $j % $items_por_linea == 0 ) print ”; //Aqui estas imprimiendo una comilla doble solita, quizas agregando otra comilla doble imprime al menos vacio, o sea colocando de esta manera print “”;

      echo “”.$nomidioma.””;//Aqui no hacen falta las comillas, con solo colocar echo $nomidioma; es suficiente.

      $i++;

      Espero que te sirva la respuesta.
      Gracias por tu consulta.
      Saludos!

  10. 11 nestor
    Junio 1, 2009 a las 6:04 pm

    que tal! tengo un problema en la linea 31, por favor una ayuda urgente.

    • 12 ivanabeltran
      Junio 12, 2009 a las 2:44 am

      Perdon por la respuesta anterior pero no salio bien. Vamos a ver ahora… hace mucho que no posteo :P
      La línea 31 quedaría algo así:

      <td align="left"><input name="<? echo $i;?> type="checkbox" value="<? echo $ididioma;?>" <? if($_POST[$i]) {echo "checked";}?> /><? echo $nomidioma;?></td>
      
  11. 13 problemas con mi checkbox
    Junio 20, 2009 a las 6:28 pm

    Tengo un problema con mi codigo php…es el siguiente…ojala alguien me pueda ayudar….
    1.-Realizo un checkbox dinamico a partir de una consulta…ahora al elejir los elementos de checkbox los guardo como arreglo…osea queda asi “array”en donde contiene los elementos escogidos que en mi caso SON LOS ASIENTOS QUE UNA PERSONA PUEDE ELEJIR…de guardar lo guardardo pero como “array” en mysql…Aqui viene el problema como lo saco para poder ver estos valores y utilizarlo en esta misma pagina “comparando” para k en este checkbox salgan chekeados los ya elejidos anteriormente…Ojala me hayan entendido…soy nuevo en php…y me estanke aaqui…
    conectar();
    $id=$_REQUEST['id'];

    ?>[/color]

    Elejir Asientos

    Escoger asientos

    <[color=#FCE94F]?php

    $j=4;

    for($i=1;$i
    [color=#FCE94F]<?php echo"$i”; ?>[/color][/color]

    <[color=#FCE94F]?php echo"$i”; ?>[/color]
    Pasadizo

    [color=#FCE94F]<?php echo"$i”; ?>[/color]

    De antemano gracias por su ayudaaa….Ojala me den una solucion mas experta k la mia….


Escribe un comentario