Foros del Web » Programando para Internet » PHP »

Array mysql insert

Estas en el tema de Array mysql insert en el foro de PHP en Foros del Web. Hola amigos: Me gustaria saber si me pueden brindar su ayuda en este problemita. Tengo los campos POST que he generado con arrays para ser ...
  #1 (permalink)  
Antiguo 04/06/2009, 13:21
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Pregunta Array mysql insert

Hola amigos:

Me gustaria saber si me pueden brindar su ayuda en este problemita.

Tengo los campos POST que he generado con arrays para ser insertados en la Base de datos, al enviar el formulario recibo estos campos:
Código PHP:
$hijo=$_POST[TXThijonombre];
$nac=$_POST[TXTfecnac];
$sexo=$_POST[LSTsexo]; 
y realizo un ciclo foreach para que dentro del ciclo pueda realizar la inyeccion de los datos a mi BD:

Código PHP:
$hijo=$_POST[TXThijonombre];
$nac=$_POST[TXTfecnac];
$sexo=$_POST[LSTsexo];
$fec=array($hijo,$nac,$sexo);
foreach (
$fec as $value){
print_r ($value[0]).'<br>'
Pero al imprimir los datos me sale mas o menos asi:

Manuel Lopez1989-09-07M

y necesito q me despligue:

Manuel Lopez,1989-09-07,M

esto para poder hacer de esa manera un implode y poder realizar la correcta insercion en la DB.

Alguna idea de como hacerlo?

Muchas Gracias
  #2 (permalink)  
Antiguo 04/06/2009, 13:27
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: Array mysql insert

Uso del implode:
Código PHP:
$arrayA = array('a','b','c');
echo 
implode('-',$arrayA); 
Mostrará a-b-c
  #3 (permalink)  
Antiguo 04/06/2009, 13:31
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Muchas gracias doylelives

pero al hacer echo me sale asi:

Array-Array-Array

q estará pasando?
  #4 (permalink)  
Antiguo 04/06/2009, 13:35
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: Array mysql insert

El te dio solamente el ejemplo en vez de usar - usa ,
  #5 (permalink)  
Antiguo 04/06/2009, 13:42
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Muchas gracias abimaelrc

La unica diferencia alli es el signo, pero de igual forma me sigue apareciendo en la pantalla el resultado:
Array,Array,Array

Alguna solucion a esto?
  #6 (permalink)  
Antiguo 04/06/2009, 13:44
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Array mysql insert

Código PHP:
$hijo=$_POST['TXThijonombre'];
$nac=$_POST['TXTfecnac'];
$sexo=$_POST['LSTsexo'];
$fec=implode(',', array($hijo,$nac,$sexo));
echo 
$fec
Me avisas.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 04/06/2009, 13:46
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: Array mysql insert

Ejemplo usando un delete:
$sql = "DELETE FROM CAT_USERS where str_usr IN (".implode("','", $array).")";

No tengo tiempo sino lo adaptaria al insert, pero tu error esta en el 2' argumento que le pasas al implode, debe ser un array ya cargado. En tu caso $fec
  #8 (permalink)  
Antiguo 04/06/2009, 13:46
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: Array mysql insert

foreach ($fec as $value){
echo implode(',',$value);
}
  #9 (permalink)  
Antiguo 04/06/2009, 13:48
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Array mysql insert

Cita:
Iniciado por abimaelrc Ver Mensaje
foreach ($fec as $value){
echo implode(',',$value);
}
Eso no serviría. Implode como 2do argumento requiere un array. En ese caso estás pasando un string. A menos que el $value también sea un array .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #10 (permalink)  
Antiguo 04/06/2009, 13:48
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Muchas gracias spider_boy

pero de igual forma me sigue desplegando array:

Array,Array,Array

waa.. ya he probado incluso con la funcion print_r y nada...
alguna otra ??
  #11 (permalink)  
Antiguo 04/06/2009, 13:55
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: Array mysql insert

el implode devuelve una cadena con el arrray separado por el caracter -
No debes usar un bucle. Simplemente usalo dentro de la consulta
  #12 (permalink)  
Antiguo 04/06/2009, 14:00
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Cita:
Iniciado por doylelives Ver Mensaje
el implode devuelve una cadena con el arrray separado por el caracter -
No debes usar un bucle. Simplemente usalo dentro de la consulta
El bucle será utilizado para hacer la inyeccion a la DB por eso es indispensable hasta cierto punto el foreach, pero el problema es que necesito separar respectivamente los campos para poder asignar los valores a la tabla de mi DB.

ya he probado con implode y nada!

alguna solucion?
  #13 (permalink)  
Antiguo 04/06/2009, 14:02
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Array mysql insert

Es extraño. En el foreach el valor devuelve un arreglo. Algo me dice que es como abimaelrc lo mencionó. Postea el código del formulario o como sea que envíes los datos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #14 (permalink)  
Antiguo 04/06/2009, 14:15
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Mi formulario insert.php

Código PHP:
<?
$hijos
=1;
$count=$_GET[hijos];
echo 
$count;
?> 
<form name="inserthijos" action="hijosinserta.php" method="post">
<table style="text-align: left; width: 100%;" border="0"
 cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td>Nombre</td>
      <td>Fecha de nacimiento</td>
      <td>Sexo</td>
    </tr>
    <? 
    
while ($hijos<=$count)
    { echo 
'
    
      <td><input name="TXThijonombre[]" type="text"/></td>
      <td><input type="text" name="TXTfecnac[]"/></td>
      <td><select name="LSTsexo[]">
            <option value="0">Femenino</option>
            <option value="1">Masculino</option>
            </select>
      </td>
    </tr>'
;
   
    
$hijos++;
    }
    
?>

  </tbody>
</table>
<p align="center"><input type="submit" name="enviar" value="Agregar hijos"/></p>
</form>
y mi process hijosinserta.php

Código PHP:
<?
$hijo
=$_POST[TXThijonombre];
$nac=$_POST[TXTfecnac];
$sexo=$_POST[LSTsexo];
$fec=array($hijo,$nac,$sexo);
foreach (
$fec as $value){
$val=implode(",",$value);
echo 
$val[0];
}
?>
he probado asi y cool, me despliega los datos del primer array pero igual me los despliega juntos!
por ejemplo:

Manuel Lopez1989-09-071

Muchas gracias por la ayuda amigos!

Última edición por bacdavi; 04/06/2009 a las 14:43
  #15 (permalink)  
Antiguo 04/06/2009, 15:15
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Habrá alguna solucion a este problema??
  #16 (permalink)  
Antiguo 04/06/2009, 17:26
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: Array mysql insert

como te dije

$val=implode(",",$value);
implode(",",$val);
}

me dejas saber
  #17 (permalink)  
Antiguo 04/06/2009, 18:24
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Pregunta Respuesta: Array mysql insert

Cita:
Iniciado por abimaelrc Ver Mensaje
como te dije

$val=implode(",",$value);
implode(",",$val);
}

me dejas saber
gracias me despliega ahora este error:

implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\printer\hijosinserta.php on line 10

mi codigo

Código PHP:
<?
$hijo
=$_POST[TXThijonombre];
$nac=$_POST[TXTfecnac];
$sexo=$_POST[LSTsexo];
$fec=array($hijo,$nac,$sexo);
foreach (
$fec as $value){
$val=implode(",",$value);
echo 
implode(",",$val);
}
?>
  #18 (permalink)  
Antiguo 04/06/2009, 19:55
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: Array mysql insert

El error esta en el echo en vez de volver a darle implode escribe esto

$val = implode(",", $value);
echo $val."<br />";

Última edición por abimaelrc; 04/06/2009 a las 20:14
  #19 (permalink)  
Antiguo 05/06/2009, 10:30
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

hola abimaelrc Gracias por tu ayuda, pero fijate que al querer separar el array me separa ahora caracter por caracter y no el nombre, luego la fecha y el sexo... q crees q este haciendo mal?? te pego mi php

Código PHP:
<?
include_once('includes/params.php');
intranet::conectar();
$hijo=$_POST[TXThijonombre];
$nac=$_POST[TXTfecnac];
$sexo=$_POST[LSTsexo];
$fec=array($hijo,$nac,$sexo);
foreach (
$fec as $value){
$val implode(","$value);
echo 
$val[1]."<br />";}
?>
  #20 (permalink)  
Antiguo 05/06/2009, 11:45
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: Array mysql insert

escribe directamente lo que sale en $hijo $nac y $sexo para hacer el ejemplo aca de lo demas
  #21 (permalink)  
Antiguo 05/06/2009, 12:23
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

Gracias
al usar el
Código PHP:
echo $val."<br />"
Me despliega la informacion asi:

Código:
Manuel Lopez
1988-09-08
1
pero al querer ver un resultado de arra y especifico
Código PHP:
echo $val[0]."<br />"
Código:
M
1
1
Para no hacernos bolas, lo que necesito concretamente es q cada resultado de la cadena de arrays q genero en el formulario sea insertado en mi tabla una por una. por ejemplo que el resultado sea mas o menos asi.

INSERT into tbl_hijos (nombre,fecnac,sexo) VALUES (Manuel Lopez,1988-09-08,1)(Ana andrino,1991-2-11,0)


En verdad mil gracias de antemano por la ayuda!
  #22 (permalink)  
Antiguo 05/06/2009, 13:09
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: Array mysql insert

usa esto y dime que hace. Sin el implode solamente lo que te escribi copialo y sobre escribe el que tienes.

Código PHP:
foreach ($fec as $value){
  
$val $value[0].",".$value[1].",".$value[2]."<br />";
  echo 
$val;

Me dejas saber
  #23 (permalink)  
Antiguo 05/06/2009, 13:23
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

De nuevo...

Me despliega este resultado separado con comas...

Código:
Ana Maria,Jose David,
1988-26-07,1989-09-07,
0,1,
me parece raro...

Que podrá ser?
  #24 (permalink)  
Antiguo 05/06/2009, 13:39
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: Array mysql insert

Código PHP:
$hijo=$_POST[TXThijonombre];
$nac=$_POST[TXTfecnac];
$sexo=$_POST[LSTsexo];

if(
count($hijo) == count($nac) && count($hijo) == count($sexo)){
  for(
$i 0$i<count($hijo); $i++){
    echo 
$hijo[$i] .","$nac[$i] .","$sexo[$i];
  }
}else{
  echo 
"Hay diferencia en los array";

Me dejas saber copia y pega exactamente y sobre escribe. Quita el foreach
  #25 (permalink)  
Antiguo 05/06/2009, 15:56
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Array mysql insert

abimaelrc muchas gracias me has salvado la vida!!!
TEMA SOLUCIONADO
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 20:28.