Foros del Web » Programando para Internet » PHP »

Ayuda con array de checkbox

Estas en el tema de Ayuda con array de checkbox en el foro de PHP en Foros del Web. hola a todos, veran tengo el siguiente codigo Código PHP: while( $dat = $mat -> buscar_asig_doc ( $i , $_POST [ 'jor_gra' ])){      echo "<tr align='center'> ...
  #1 (permalink)  
Antiguo 04/06/2009, 21:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Ayuda con array de checkbox

hola a todos, veran tengo el siguiente codigo
Código PHP:
while($dat=$mat->buscar_asig_doc($i,$_POST['jor_gra'])){
     echo
"<tr align='center'>
          <th><input name='opcion'  value='"
.$dat["id_asignatura"]."'  type='checkbox'></th>
          <th>"
.$dat["nombre_asg"]."</th>
          <th>"
.$dat["nombre_doc"]."</th>
         </tr>"
;
   
$i++;} 
el cual se encarga de mostrarme una cantidad de checbox dependiedo de la informacion de la base de datos, ademas de esto tengo una funcion en javascript que se ncarga de controlar la cantidad de checbox seleccionados y que todos los campos del formulario se han ingresados

Código PHP:
function contar(form) {
     var 
formu document.getElementById(form);
     var 
cont 0;
     var 
box=formu.opcion
     
var num=box.length;
     var 
n=formu.elements.length;
     var 
max=formu.can_mat.value;
     var 
nc="";
      for (var 
i=0i<=n-1i++) {
          if (
formu.elements[i].value==''){
           
nc+=formu.elements[i].name+' Es un valor requerido. \n';
           }
         }
    if (
nc!=''){
    
alert('Por Favor Corrige los siguintes campos:\n'+nc);
    }
 for (var 
i=0i<=num-1i++) {
if (
box[i].checked) {
cont cont 1;
}
}
if((
cont<max)||(cont>max))
alert('No has seleccionado las '+max+' Asignaturas para este grado');
else{
 if(
nc=='')
 
formu.ing.value='ok';
 
formu.cant.value=num;
 
document.forms[0].submit();
}

hasta ese momento todo va bien pero cuando quiero guardar la informacion del checkbox solo puedo guardar una dato es decir no lo reconoce como un array
si escribo lo siguiente

$opc=$_POST['opcion'];
echo "prueba ".$opc[1];
no me muestra nada.
de antemano espero haberme explicado bien y agradeceria mucho su ayuda ya que me he atascado en ese pedaso y no le encuentro solucion
ahhhh tambien prove lo siguiente
Código PHP:
<input name='opcion[]'  value='".$dat["id_asignatura"]."'  type='checkbox'
pero almomento de verificar los checkbox me aprece como si hubiera un error
  #2 (permalink)  
Antiguo 04/06/2009, 22:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Ayuda con array de checkbox

Como estas controlando los checkbox con javascript vas a tener que aprender a usar los HTML DOM porque para que te resulte mejor vas a tener que usar el ultimo ejemplo que pusiste

<input name='opcion[]' value='".$dat["id_asignatura"]."' type='checkbox'>
  #3 (permalink)  
Antiguo 05/06/2009, 10:36
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Ayuda con array de checkbox

Cita:
Iniciado por abimaelrc Ver Mensaje
Como estas controlando los checkbox con javascript vas a tener que aprender a usar los porque para que te resulte mejor vas a tener que usar el ultimo ejemplo que pusiste

<input name='opcion[]' value='".$dat["id_asignatura"]."' type='checkbox'>
la verdad estube revisando la informacion que mencionar pero no entiendo muy bien a que hace referencia si depronto tienes un ejemplo o algo en que guiarme seria genial
  #4 (permalink)  
Antiguo 05/06/2009, 11:14
 
Fecha de Ingreso: junio-2008
Mensajes: 50
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con array de checkbox

hola andres!!! para generar los checkbox dinmicamente puedes usar el siguiente codigo:( nomas elimina <ul> y las <li>)

<div id="opciones">
<div id="menu1">
<ul>
<li><a href="#">ESTADOS >>></a>
<ul>
<? $registros=mysql_query('select estado from estados',$conexion) or
die('Problemas en el select:'.mysql_error());
while ($reg=mysql_fetch_array($registros))
{
?>
<li><a href="#"> <? echo ($reg["estado"]); ?> </a>
<ul>
<li><a href="#">Municipios </A>
<ul>
<? $registros2=mysql_query('select id_municipio, des_municipio from municipios where estado="'.$reg["estado"].'"',$conexion) or die('Problemas en el select:'.mysql_error());
while ($reg2=mysql_fetch_array($registros2))
{
?>
<li><input type="checkbox" name="municipios[]" value="<? echo($reg2["id_municipio"]);?>"><? echo($reg2["des_municipio"]);?> </li>
<? } ?>
</ul>
</li>
</ul>
</li>

<?
}
?>
</ul>
</li>
</ul>
</div> <!--div menu1 -->
</div>

y para guardar en las base con php los checkbox que esten en estado on usa el siguiente codigo!!

foreach ($_POST['municipios'] as $id){
mysql_query("insert into muni_ficha (id_municipio,id_fich) values ('$id','$_REQUEST[id_fich]')",$conexion) or die("Problemas en el select".mysql_error());
}


a si de facil !!!!!!! checalo y me comentas si te funciono!!!!!!!!!!
  #5 (permalink)  
Antiguo 05/06/2009, 11:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Ayuda con array de checkbox

Pero no tengo tu estructura de la base de datos si me la puedes indicar yo lo hago.
  #6 (permalink)  
Antiguo 05/06/2009, 13:00
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Ayuda con array de checkbox

Cita:
Iniciado por abimaelrc Ver Mensaje
Pero no tengo tu estructura de la base de datos si me la puedes indicar yo lo hago.
veras es una base de datos hecha en postgres para un colegio entonces la parte del chequeo la utilizo cuando voy a ingresar un grado debo escoger las materia que van hacer dictadas en ese grado unavez ingresado la materia el checkbox se encarga de guardarme el id de la materia para luego relacionarlas con el id del grado en una tabla aparte
este es el formulario de ingreso del grado
Código PHP:
include_once "../ConsultasDAO.php";
if ($_SESSION['us']!=null){
$mat=new ConsultasDAO();
     $num=$mat->buscar_num_asig($_POST['jor_gra']);
         if($num<$_POST['can_mat'])
           $_POST['can_mat']=$num;
 if($_POST['ing']=='ok')
   {
    $dato[0]=$_POST['cod_gra'];
    $dato[1]=$_POST['nom_gra'];
    $dato[2]=$_POST['sal_gra'];
    $dato[3]=$_POST['jor_gra'];
    $dato[4]=$_POST['cant_mat'];
    $opc=$_POST['opcion'];
    $x=5;
    for($i=0;$i<$_POST['cant'];$i++){
    if($opc[$i]==''){
   $dato[$x]=$opc[$i];
   $x++;
   }
 }
    $con=new ConsultasDAO();
    $con->ingreso_gra($dato);
   }
  if(($_POST['ing']!='ok')||($_SESSION['res']!=null)){
  $_SESSION['res']=null;
?>
<center>
<br>
<div style="background-image: url(../Imagenes/fondito4.png); background-position:center top; background-repeat:repeat y;">
<br><br>
<form name="form1" method="post" action="javascript:enviarFormulario('../dao/php_grado/nuevo.php','form1');">
  <table width="267">
    <caption align="top">
      <span class="Estilo4"><img src="../Imagenes/nuevo_gra.png" width="335" height="50" border="0"></span>
    </caption>
    <tr>
      <th align="right">Codigo</th>
      <td align="left"><input name="cod_gra" size="5" type="text" value="<?php echo "".$_POST['cod_gra']; ?>"></td>
      <th align="right">&nbsp;&nbsp;Nombre</th>
      <td align="left"><input name="nom_gra"  type="text" value="<?php echo "".$_POST['nom_gra']; ?>"></td>
      <th align="right">&nbsp;&nbsp;Salon</th>
      <td align="left"><input name="sal_gra" size="5" type="text" value="<?php echo "".$_POST['sal_gra']; ?>"></td>
      <th align="right">&nbsp;&nbsp;Jornada</th>
      <td align="left"><select name="jor_gra"  id="jor_gra">
     <option  value="<?php echo "".$_POST['jor_gra']; ?>" selected="<?php echo "".$_POST['jor_gra']; ?>"><?php echo "".$_POST['jor_gra']; ?></option>
     <option value="Mañana">Ma&ntilde;ana</option>
     <option value="Tarde">Tarde</option>
    </select></td>
    </tr>
    <tr>
      <th colspan="8" scope="row"><br>Ingresa la Cantidad de Asignaturas<br><input name="can_mat" size="4" type="text" value="<?php echo "".$_POST['can_mat']; ?>"><br>
      <a class="enlace" href="#" onClick="enviarFormulario('../dao/php_grado/nuevo.php','form1');" ><img src="../Imagenes/in_as.png" width="150" height="45" border="0"></a></th>
      </tr>
 <?php if(($_POST['can_mat']!=null)&&($_POST['jor_gra']!=null)){ ?>
<table width="400">
   <caption align="top" class="Estilo5">
    <span class="Estilo4">ESCOGE LAS ASIGNATURAS Y DOCENTES</span>
    </caption>
    </table>
    <table border="1" width="380">
    <tr class="celda" align="center">
    <td>Opc</td>
    <td>Asignatura</td>
    <td>Docente</td>
    </tr>
   <?php
   $i
=0;
   while(
$dat=$mat->buscar_asig_doc($i,$_POST['jor_gra'])){
     echo
"<tr align='center'>
          <th><input name='opcion[]'  value='"
.$dat["id_asignatura"]."' id='opcion[]' type='checkbox'></th>
          <th>"
.$dat["nombre_asg"]."</th>
          <th>"
.$dat["nombre_doc"]."</th>
         </tr>"
;
   
$i++;}?>
  </table>
  <input type="hidden" name="ing" value="no">
  <input type="hidden" name="cant" value="1">
  <table>
  <tr>
      <th colspan="8" scope="row">
         <a class="enlace" href="#" onClick="javascript:contar('form1');" ><img src="../Imagenes/botong.png" width="112" height="38" border="0"></a>
        <a class="enlace" href="#" onClick="document.forms.form1.reset();return false"><img src="../Imagenes/cancelar.png" width="112" height="38" border="0"></a>
     </th>
    </tr>
      </table>
  <br>
  </div>
</form></center>
y esta es la funcion de ingreso
Código PHP:
    public function ingreso_gra($dato)
    {
         
$campos="".$_POST[cod_gra].",'".$_POST[nom_gra]."',".$_POST[sal_gra].",'".$_POST[jor_gra]."'";
         
$res=$this->db->insertar("grado",$campos);
              if (
$res=='OK')
              {
              
//guardo la cantidad de asignaturas
              
$cant=$dato[4];
              
$x=5;
              
//hago los insert de asignatura grado
              
do{
               
$seq=$this->db->retorna_netxval('gra_asig');
               
$campos="".$seq.",".$dato[$x].",".$dato[0]."";
               
$res=$this->db->insertar("grado_asignatura",$campos);
               
$x=$x+1;
               }while(
$res=='OK');
                 echo
"<center><hr>
                 <h3>Los Datos han sido Guardados exitosamente </h3></center>"
.$res;
              }
              else
              {
                  
$_SESSION['res']='ok';
                  echo
"<center><hr><img src='../Imagenes/error.gif' style='width:50px; height:50px; border:none;'/>
                  <h3>Error, Ya existe una asignatura con el Codigo</h3>
                  </center>"
.$_POST[cod_mat];
              }
        
$this->db->cerrarBase();
    } 
veras en la funcion donde verifico que se hayan chequeado la cantidad correcta de materias si funciona pero a la hora de guardar en la base de datos solo me reconoce un valor y ahi si nno se que pasa
de antemano muchas gracias por la ayuda
  #7 (permalink)  
Antiguo 05/06/2009, 13:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Ayuda con array de checkbox

Dame la estructura de la base de datos para poder crearla en mysql
  #8 (permalink)  
Antiguo 05/06/2009, 20:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 80
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Ayuda con array de checkbox

Cita:
Iniciado por abimaelrc Ver Mensaje
Dame la estructura de la base de datos para poder crearla en mysql
viejo muchas garcias por su colaboracion estuve revisando la direccion que citaste en el primeer comentario y logre corregir el problema que tenia el cual se solucionaba
les dejo la funcion por si alguno de ustedes les sirve
Código PHP:
function contar(form) {
     var 
formu document.getElementById(form);
     var 
cont 0;
     var 
num=document.getElementsByName('opcion[]').length;
     var 
n=formu.elements.length;
     
box=document.getElementsByName('opcion[]');
     var 
max=formu.can_mat.value;
     var 
nc="";
      for (var 
i=0i<=n-1i++) {
          if (
formu.elements[i].value==''){
           
nc+=formu.elements[i].name+' Es un valor requerido. \n';
           }
         }
    if (
nc!=''){
    
alert('Por Favor Corrige los siguintes campos:\n'+nc);
    }
 for (var 
i=num-1i>=0i--) {
if (
box[i].checked) {
cont cont 1;
}
}
if((
cont<max)||(cont>max))
alert('No has seleccionado las '+max+' Asignaturas para este grado');
else{
 if(
nc==''){
//vaciar las casillas que no han sido chequeadas
 
for (var i=num-1i>=0i--) {
if (
box[i].checked==false) {
document.getElementsByName('opcion[]')[i].value='';
}
}
 
formu.ing.value='ok';
 
document.forms[0].submit();
 }
}

y en la linea del input efectivamente habia que cambiarle el nombre es decir quedaba asi
Código PHP:
input name='opcion[]'  value='".$dat["id_asignatura"]."' id='opcion[]' type='checkbox'
espero le sirva a alguien y ante todo muchasiiimas gracias por su ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:05.