Foros del Web » Programando para Internet » PHP »

problemas con funcion foreach

Estas en el tema de problemas con funcion foreach en el foro de PHP en Foros del Web. tengo el siguiente problema tengo dos arrays y necesito insertarlas en la misma tabla pero me genera un doble insert cuando las rescato del formulario ...
  #1 (permalink)  
Antiguo 09/05/2011, 16:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 1
problemas con funcion foreach

tengo el siguiente problema

tengo dos arrays y necesito insertarlas en la misma tabla pero me genera un doble insert cuando las rescato del formulario

pero si dejo solo solo un foreach no tengo problemas
como puedo hacerlo para guardar estos dos valores ???


Código PHP:
foreach($empleado as $key=>$e)
foreach(
$valor as $indice=>$n){

    if (
$n!='') {
    
$sql="INSERT INTO ".$prefix."insentivos (idinsentivos, usuario_idusuario, empleado_idempleado, valor, fecha, relsucursal) VALUES ('', '$idusuario', '$e', '$n', '$fecharegistro', '$sucursal')";
    
$cursor=execstmt($conn$sql); 
    }}
}
    
mysql_close($conn); 
  #2 (permalink)  
Antiguo 09/05/2011, 16:19
 
Fecha de Ingreso: junio-2008
Mensajes: 119
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: problemas con funcion foreach

http://php.net/manual/es/control-structures.foreach.php

La verdad no entiendo bien que es lo que queres hacer...

Explica un poco mas, asi te podemos ayudar...

Saludos...
  #3 (permalink)  
Antiguo 09/05/2011, 16:19
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: problemas con funcion foreach

Debes de iterar sobre $e no sobre $valor

Código PHP:
foreach($empleado as $key=>$e
foreach(
$e as $indice=>$n){ 

    if (
$n!='') { 
    
$sql="INSERT INTO ".$prefix."insentivos (idinsentivos, usuario_idusuario, empleado_idempleado, valor, fecha, relsucursal) VALUES ('', '$idusuario', '$e', '$n', '$fecharegistro', '$sucursal')"
    
$cursor=execstmt($conn$sql);  
    }} 

    
mysql_close($conn); 
Aunque en realidad no veo que en algun momento utilices el valor de los arreglos :S, mejor lee el link que te enviaron :p
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #4 (permalink)  
Antiguo 09/05/2011, 16:23
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: problemas con funcion foreach

Para este caso creo que no puedes usar un foreach, tienes que usar un for normal

Código PHP:
for ($i=0$i<cont($empleado); $i++){
   if (
$valor[$i]!='') { 
    
$sql="INSERT INTO ".$prefix."insentivos (idinsentivos, usuario_idusuario, empleado_idempleado, valor, fecha, relsucursal) VALUES ('', '$idusuario', '$empleado[$i]', '$valor[$i]', '$fecharegistro', '$sucursal')"
    
$cursor=execstmt($conn$sql);  
    }} 

He supuesto que los arrays $empleado y $valor tienen la misma longitud.
  #5 (permalink)  
Antiguo 09/05/2011, 16:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: problemas con funcion foreach

Acabo de ver la solución que da _ssx.
Hemos entendido de forma distinta cual es tu problema, así que deberías dejar más claro que es lo que quieres hacer y cual son esos dos arrays que mencionas.
Yo he entendido que los arrays que tienes son $empleado y $valor
  #6 (permalink)  
Antiguo 10/05/2011, 07:53
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 1
Respuesta: problemas con funcion foreach

en primer lugar tengo una tabla empleado con N registros los cuales pueden aumentar!

y el formulario es el siguiente:
Código PHP:
Ver original
  1. <form method="post" onsubmit="return validarSubida(this)" action="<?php echo $_SERVER['PHP_SELF'] ?>?modo=guardarIncentivo">
  2. <?php
  3. $sqls = "SELECT idempleado, nombre , rut, estado FROM ".$prefix."empleado WHERE idempleado=idempleado and estado='SI' AND sucursalr_idsucursalr='$sucursalr'";
  4. $sqls.= " ORDER BY nombre ASC";
  5. $results = execstmt($conn, $sqls);
  6. while($filas=mysql_fetch_array($results)){
  7. ?>
  8. <input type="hidden" name="empleado[]" value="<?php echo $filas['idempleado'] ?>">
  9. <div id="side-c"><label>Valor</label><br /><input type="text" class="text chico" name="valor[]" /></div>
  10. <?php } ?>
  11.         <input type="submit" value="ingresar" name="boton" class="submit"/>
  12.  
  13.  </form>



en el momento de guardar necesito rescatar el arrays de empleados y de valor los cuales son diferentes para cada registro, esta es la manera la cual estoy haciendo en este momento pero me inserta doble registro:


Código PHP:
Ver original
  1. foreach($empleado as $key=>$e)
  2. foreach($valor as $indice=>$n){
  3.  
  4.     if ($n!='') {
  5.     $sql="INSERT INTO ".$prefix."insentivos (idinsentivos, usuario_idusuario, empleado_idempleado, valor, fecha, relsucursal) VALUES ('', '$idusuario', '$e', '$n', '$fecharegistro', '$sucursal')";
  6.     $cursor=execstmt($conn, $sql);
  7.     }}
  8. }
  9.     mysql_close($conn);

ahora se entiende mi problema?? :$ espero me puedan ayudar. las demas variables las saco por sesion y no tengo problema para guardarlas pero los arrays me han traido un dolor de cabeza increible XD
de todas maneras intentare con el for de Nexus10!
  #7 (permalink)  
Antiguo 10/05/2011, 08:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 1
Respuesta: problemas con funcion foreach

comento denuevo para agradecerle a Nexus10

Efectivamente esa era la manera de solucionar mi problema!! gracias muchachos!!
soy nuevo en el foro, como cierro el tema?? o no hay problema en ke kede abierto?
  #8 (permalink)  
Antiguo 10/05/2011, 17:52
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: problemas con funcion foreach

No hay problema si se queda abierto. Dales karma a quienes te ayudaron y listo.

Etiquetas: foreach
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 14:19.