Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Arrays problemas

Estas en el tema de Arrays problemas en el foro de PHP en Foros del Web. Hola amigos estoy trabajando con un chekbox en php y cuando intento pasar los datos solos de los checkbox seleccionados aleatoriamente no me pasa los ...
  #1 (permalink)  
Antiguo 10/12/2013, 16:40
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Arrays problemas

Hola amigos estoy trabajando con un chekbox en php
y cuando intento pasar los datos solos de los checkbox seleccionados aleatoriamente no me pasa los registros y cuando selecciono todos los checkbox si me pasa que estare haciendo mal asumo q creo q es elproblema de mi array
ayudenme porfa


Código PHP:
Ver original
  1. $x = $_POST['id_ingredientes'];
  2. $um=$_POST['um'];
  3. $cant = $_POST['cant'];
  4.  
  5. foreach (array_keys($x) as $i) {
  6.   $x_item=$x[$i];
  7.   $um_item=$um[$i];
  8.   $cant_item=$cant[$i];
  9.  
  10. echo "$x_item, $um_item, $cant_item";
  11.  
  12. }
  #2 (permalink)  
Antiguo 10/12/2013, 16:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Sería más inteligente de tu parte mostrar la parte donde construyes el formulario, de otra forma adivinar si lo hiciste bien o mal es imposible.

Es decir, tu código en teoría es correcto, a menos que el formulario esté mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/12/2013, 16:47
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

Hola Esta es la parte donde contruyo el formulario

Código PHP:
Ver original
  1. <table cellpadding="0" cellspacing="0" border="0" width="568">
  2.                       <?
  3.         $sw="1";
  4.         for($i=0;$i<$num2;$i++){
  5.         if($sw=="1")
  6.     //  $sql=insert into permisos(,)values ('','','','');
  7.             {
  8.         ?>
  9.                       <tr onmouseover="fila(this)" bgcolor="#F2F2F2">
  10.                         <td align="center" valign="middle" height="20" width="20" ><div align="center">
  11.                             <input name="id_ingredientes[]" type="checkbox"  value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>"  onclick="setPointer('#F2F9FF',this);" />
  12.                         </div></td>
  13.                         <td align="left" valign="middle" height="20" width="171" class="mantenimiento" ><? echo mysql_result($rsU2,$i,("nombre"))?></td>
  14.                         <td align="left" valign="middle" width="57" class="mantenimiento" ><div align="center">
  15.                           <SELECT name="um[]" size="1" class="select" style="WIDTH: 50px">
  16.                                             <option value="">->> </option>
  17.                                                 <option value="Kg" >Kg</option>
  18.                                                 <option value="Uni" >Uni</option>
  19.                                                 <option value="Lt" >Lt</option>
  20.                                               </SELECT>
  21.                         </div></td>
  22.                         <td align="left" valign="middle" width="50" class="mantenimiento" ><div align="center">
  23.                           <input name="cant[]" type="text" class="input" id="cant[]" style="width:40px"  value="0"  />
  24.                         </div></td>
  25.                         <td align="left" valign="middle" width="50" class="mantenimiento" ><div align="center">
  26.                           <input name="cu[]" type="text" class="input" id="cu" style="width:40px"  value="0"  />
  27.                         </div></td>
  28.                         <td align="left" valign="middle" width="51" class="mantenimiento" ><div align="center"></div></td>
  29.                         <td width="30" align="left" valign="middle" class="mantenimiento" ><div align="center">
  30.                           <input name="sm[]" type="text" class="input" id="sm" style="width:25px"  />
  31.                         </div></td>
  32.                         <td width="33" align="left" valign="middle" class="mantenimiento" ><div align="center">
  33.                           <input name="fau[]" type="text" class="input" id="fau" style="width:25px"  />
  34.                         </div></td>
  35.                         <td width="33" align="left" valign="middle" class="mantenimiento" ><div align="center">
  36.                           <input name="per[]" type="text" class="input" id="per" style="width:25px"  />
  37.                         </div></td>
  38.                         <td width="39" align="left" valign="middle" class="mantenimiento" ><div align="center">
  39.                           <input name="pro[]" type="text" class="input" id="pro" style="width:25px"  />
  40.                         </div></td>
  41.                         <td width="34" align="left" valign="middle" class="mantenimiento" ><div align="center">
  42.                           <input name="ate[]" type="text" class="input" id="ate" style="width:25px"  />
  43.                         </div></td>
  44.                       </tr>
  45.                       <?
  46.             $sw="0";
  47.             }elseif($sw=="0")
  48.             {
  49.         ?>
  50.                       <tr onmouseover="fila(this)" bgcolor="#FDFDFD">
  51.                         <td align="center" valign="middle" height="20" width="20"  ><div align="center">
  52.                             <input name="id_ingredientes[]" type="checkbox"  value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>"  onclick="setPointer('#F2F9FF',this);" />
  53.                         </div></td>
  54.                         <td width="171" height="20" align="left" valign="middle" class="mantenimiento" ><? echo mysql_result($rsU2,$i,("nombre"))?>&nbsp;</td>
  55.                         <td width="57" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  56.                            <SELECT name="um[]" size="1" class="select" style="WIDTH: 50px">
  57.                                             <option value="">->> </option>
  58.                                                 <option value="Kg" >Kg</option>
  59.                                                 <option value="Uni" >Uni</option>
  60.                                                 <option value="Lt" >Lt</option>
  61.                                               </SELECT>
  62.                         </div></td>
  63.                         <td width="50" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  64.                           <input name="cant[]" type="text" class="input" id="cant[]" style="width:40px"  value="0"  />
  65.                         </div></td>
  66.                         <td width="50" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  67.                           <input name="cu[]" type="text" class="input" id="cu" style="width:40px"  value="0"  />
  68.                         </div></td>
  69.                         <td width="51" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center"></div></td>
  70.                         <td height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  71.                           <input name="sm[]" type="text" class="input" id="sm" style="width:25px"  />
  72.                         </div></td>
  73.                         <td height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  74.                           <input name="fau[]" type="text" class="input" id="fau" style="width:25px"  />
  75.                         </div></td>
  76.                         <td height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  77.                           <input name="per[]" type="text" class="input" id="per" style="width:25px"  />
  78.                         </div></td>
  79.                         <td height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  80.                           <input name="pro[]" type="text" class="input" id="pro" style="width:25px"  />
  81.                         </div></td>
  82.                         <td height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  83.                           <input name="ate[]" type="text" class="input" id="ate" style="width:25px"  />
  84.                         </div></td>
  85.                       </tr>
  86.                       <?
  87.     $sw="1";
  88.             }
  89.     ?>
  90.                       <?
  91.     }
  92.     ?>
  93.                     </table>
  #4 (permalink)  
Antiguo 10/12/2013, 16:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Bien, pues al parecer los campos son los correctos, sin embargo debo hacer una observación al respecto de como se comportan algunos elementos del formulario (cosa que no corresponde al foro de PHP sino al de HTML).

Los campos tipo checkbox no son enviados si no son seleccionados, así de simple.

Aún así pongas 100 checkbox si no seleccionas ninguno entonces no recibirás nada.

¿Solución?

Simple: colocar un campo hidden antes del checkbox con el mismo nombre y un valor por defecto, si el checkbox es seleccionado entonces su valor es enviado, si no, entonces el valor del campo hidden es el que recibirás.

Sin embargo, al usar nomenclatura de arrays debes ser explícito con el índice, de otra forma todo se puede tornar extraño.

Código HTML:
Ver original
  1. <input type="hidden" name="foo[3]" value="" />
  2. <input type="checkbox" name="foo[3]" value="bar" />

Si sigues dichas reglas no tendrás problemas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/12/2013, 17:08
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

Gracias Amigo ahora cuando ingreso los datos me sale un resultado asi

, Kg, 17, , 0, Uni, 1, , 011, , 0, , 0, , 0, , 0, , 0, , 0, , 0, , 0, , 0, , 0, , 0, , , ,

no me guarda en orden primero
debe guadar el nro de checkbox que pertenece a un Id_ de una tabla

ejemplo 1, kg, 2



Código PHP:
Ver original
  1. $x = $_POST['id_ingredientes'];
  2. $um=$_POST['um'];
  3. $cant = $_POST['cant'];
  4.  
  5. foreach (array_keys($x) as $i) {
  6.   $x_item=$x[$i];
  7.   $um_item=$um[$i];
  8.   $cant_item=$cant[$i];
  9.  
  10. echo "$x_item, $um_item, $cant_item";
  11.  
  12. }
  #6 (permalink)  
Antiguo 10/12/2013, 17:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Exacto.

Lo correcto es mantener una relación entre el campo el ID en cuestión, si varios campos usan el ID de un registro en particular es más fácil localizarlo.

Código PHP:
Ver original
  1. <input type="hidden" name="campo[<?php echo $row->id; ?>]" />
  2. <input type="checkbox" name="campo[<?php echo $row->id; ?>]" valor="OK" />

Así entonces, cada índice del arreglo corresponde al ID del registro dado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 10/12/2013, 17:23
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

SI cumplo conn el requisito que me pedistes pero al momento de grabar lo duplica y guara varios checkbox q no se han seleccionado
Código PHP:
Ver original
  1. <input type="hidden" name="id_ingredientes[]" value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>" />    <input name="id_ingredientes[]" type="checkbox"  value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>"  onclick="setPointer('#F2F9FF',this);" />
  #8 (permalink)  
Antiguo 10/12/2013, 17:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Pues no, no estás cumpliendo con el requisito de ser explícito con los índices de los campos para relacionarlos.

Revisa mis respuestas anteriores.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 10/12/2013, 18:02
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

ya me di cuenta mi error esta en el array para el foreach una ayudita porfa
Código PHP:
Ver original
  1. $id_menu = $_POST['id_menu'];
  2. $tipo = $_POST['tipo'];
  3. $comida = $_POST['comida'];
  4. $fecha = $_POST['fecha'];
  5.  
  6. $x = $_POST['id_ingredientes'];
  7. $um=$_POST['um'];
  8. $cant = $_POST['cant'];
  9. $cu = $_POST['cu'];
  10. //$cmp = $_POST['cmp'];
  11.  
  12. $sm = $_POST['sm'];
  13. $fau = $_POST['fau'];
  14. $per = $_POST['per'];
  15. $pro = $_POST['pro'];
  16. $ate = $_POST['ate'];
  17.  
  18. foreach (array_keys($x) as $i) {
  19.   $x_item=$x[$i];
  20.   $um_item=$um[$i];
  21.   $cant_item=$cant[$i];
  22.   $cu_item = $cu[$i];
  23.   //$cmp_item = $cmp[$i];
  24.   $cmp_item = ($cant[$i] * $cu[$i]);
  25.   $sm_item = $sm[$i];
  26.   $fau_item = $fau[$i];
  27.   $per_item = $per[$i];
  28.   $pro_item = $pro[$i];
  29.   $ate_item = $ate[$i];
  30.  
  31.  
  32.  echo "$um_item";
  33. }
  #10 (permalink)  
Antiguo 10/12/2013, 18:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Todos los campos a relacionar deben compartir la misma clave, en teoría tu código es correcto pero no funcionará si los campos en el formulario no coinciden.

Pon atención en eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 10/12/2013, 18:14
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

como hago un ejemplo porfavor
  #12 (permalink)  
Antiguo 10/12/2013, 18:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

En mis respuestas de antes te he dejado ejemplos.

El caso, es que no solamente debes relacionar el checkbox, sino todos los campos en común.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 10/12/2013, 18:35
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

esta bien relacionado los campos en mi formulario :( no entiendo llevo dias pero no llego a la solucion :(
  #14 (permalink)  
Antiguo 10/12/2013, 18:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Pues muestra el código real del formulario, porque de otra forma es imposible adivinar si lo has hecho bien o no.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 10/12/2013, 18:41
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

Este es mi codigo


Código PHP:
Ver original
  1. <table cellpadding="0" cellspacing="0" border="0" width="348">
  2.                       <?
  3.         $sw="1";
  4.         for($i=0;$i<$num2;$i++){
  5.         if($sw=="1")
  6.     //  $sql=insert into permisos(,)values ('','','','');
  7.             {
  8.         ?>
  9.                       <tr onMouseOver="fila(this)" bgcolor="#F2F2F2">
  10.                         <td align="center" valign="middle" height="20" width="20" ><div align="center">
  11.                             <input name="id_ingredientes[]" type="checkbox"  value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>"  onclick="setPointer('#F2F9FF',this);" />
  12.                         </div></td>
  13.                         <td align="left" valign="middle" height="20" width="171" class="mantenimiento" ><? echo mysql_result($rsU2,$i,("nombre"))?></td>
  14.                         <td align="left" valign="middle" width="57" class="mantenimiento" ><div align="center">
  15.                           <SELECT name="um[]" size="1" class="select" style="WIDTH: 50px">
  16.                                             <option value="">->> </option>
  17.                                                 <option value="Kg" >Kg</option>
  18.                                                 <option value="Uni" >Uni</option>
  19.                                                 <option value="Lt" >Lt</option>
  20.                                               </SELECT>
  21.                         </div></td>
  22.                         <td align="left" valign="middle" width="50" class="mantenimiento" ><div align="center">
  23.                           <input name="cant[]" type="text" class="input" id="cant" style="width:40px"   />
  24.                         </div></td>
  25.                         <td align="left" valign="middle" width="50" class="mantenimiento" ><div align="center">
  26.                           <input name="cu[]" type="text" class="input" id="cu" style="width:40px"    />
  27.                         </div></td>
  28.                       </tr>
  29.                       <?
  30.             $sw="0";
  31.             }elseif($sw=="0")
  32.             {
  33.         ?>
  34.                       <tr onMouseOver="fila(this)" bgcolor="#FDFDFD">
  35.                         <td align="center" valign="middle" height="20" width="20"  ><div align="center">
  36.                             <input name="id_ingredientes[]" type="checkbox"  value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>"  onclick="setPointer('#F2F9FF',this);" />
  37.                         </div></td>
  38.                         <td width="171" height="20" align="left" valign="middle" class="mantenimiento" ><? echo mysql_result($rsU2,$i,("nombre"))?>&nbsp;</td>
  39.                         <td width="57" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  40.                            <SELECT name="um[]" size="1" class="select" style="WIDTH: 50px">
  41.                                             <option value="">->> </option>
  42.                                                 <option value="Kg" >Kg</option>
  43.                                                 <option value="Uni" >Uni</option>
  44.                                                 <option value="Lt" >Lt</option>
  45.                                               </SELECT>
  46.                         </div></td>
  47.                         <td width="50" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  48.                           <input name="cant[]" type="text" class="input" id="cant" style="width:40px"  />
  49.                         </div></td>
  50.                         <td width="50" height="20" align="left" valign="middle" class="mantenimiento" ><div align="center">
  51.                           <input name="cu[]" type="text" class="input" id="cu" style="width:40px"   />
  52.                         </div></td>
  53.                       </tr>
  54.                       <?
  55.     $sw="1";
  56.             }
  57.     ?>
  58.                       <?
  59.     }
  60.     ?>
  61.                     </table>
  #16 (permalink)  
Antiguo 10/12/2013, 18:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Arrays problemas

Pues yo no veo en tu formulario ningún campo relacionado por algún índice.

Código PHP:
<input type="hidden" name="campo[<?php echo $row->id?>]" />
<input type="checkbox" name="campo[<?php echo $row->id?>]" valor="OK" />
Observa bien que estoy colocando un valor (en este caso el ID) como clave de los campos, eso hace posible que siempre puedas acceder a otros campos usando la misma clave.

¿Verdad que eso es lo que no estás haciendo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 10/12/2013, 18:47
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

asi esta bien ?
Código PHP:
Ver original
  1. <input name="id_ingredientes[<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>]" type="checkbox"  value="<? echo mysql_result($rsU2,$i,("id_ingredientes"))?>"  onclick="setPointer('#F2F9FF',this);" />
  #18 (permalink)  
Antiguo 10/12/2013, 18:53
 
Fecha de Ingreso: enero-2012
Mensajes: 158
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Arrays problemas

Gracias mi Hermano ya me funciono tenias mucha razon hay que colera una cosa tan simple me hizo estar horas y horas en lo mismo jajaja un fortisimo abrazo

Etiquetas: arrays, registro
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




La zona horaria es GMT -6. Ahora son las 22:35.