Foros del Web » Programando para Internet » PHP »

Almacenar Matriz en MYSQL

Estas en el tema de Almacenar Matriz en MYSQL en el foro de PHP en Foros del Web. Buenos Dias, en esta ocasion se me presenta una pequeña duda al querer almacenar un campo creado en htlm bajo el lenguaje JavaScript dentro de ...
  #1 (permalink)  
Antiguo 03/10/2011, 08:36
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Almacenar Matriz en MYSQL

Buenos Dias, en esta ocasion se me presenta una pequeña duda al querer almacenar un campo creado en htlm bajo el lenguaje JavaScript dentro de una base de datos en mysql.

A continuación coloco el codigo:

1.-Tengo el campo Personal el cual esta dentro de una matriz:
Código HTML:
<input name="personal[]" type="text" id="personal[]" size="6" /> 
NOTA: lo coloque dentro de la matriz para poder crear la condicion de que al menos alguno de los 2 campos se llenara.

2.- Mi problema: como guardar este campo o su contenido dentro de mi base de datos:

Lo vengo haciendo de estas formas:

Código PHP:
$perinv=$_POST['personal[]']; 
Y
Código PHP:
$perinv=$_POST['personal[0]']; 
Código PHP:
$perinv=$_POST['personal[1]']; 
pero ninguna me funciona..

Agradeceria mucho su ayuda.
  #2 (permalink)  
Antiguo 03/10/2011, 08:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Almacenar Matriz en MYSQL

Hola:

Hemos movido el tema desde javascript porque evidentemente no es problema de javascript... y viendo el código que usas, parece que no sabes tratar este tipo de casos de formularios...

Cuando quieres enviar matrices desde formularios html, debes hacer que los nombres de los campos (matrices) terminen en un juego de corchetes... pero esos corchetes no deben ser parte de los nombres en php...

El caso no contemplado que debe funcionar es el siguiente:

Código:
$perinv=$_POST['personal'];
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 03/10/2011, 09:23
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

Muchas Gracias amigo caricatos, ciertamente no he manejado ese tipo de formularios, sin embargo al hacer uso del codigo que me dejas efectivamente me almlancena info en el campo de la base de datos, pero el valor es "ARRAY", debo suponer porque en el formulario tengo ese campo 2 veces es decir:

Código HTML:
<input name="personal[]" type="text" id="personal[]" size="6" />  
<input name="personal[]" type="text" id="personal[]" size="6" /> 
y mi intension es almacenar lo que se introduzca en ambos campos!
  #4 (permalink)  
Antiguo 03/10/2011, 09:29
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: Almacenar Matriz en MYSQL

Para guardar los datos es necesario que indiques el indice.

ejemplo
Código PHP:
mysql_query("INSERT INTO tabla (id) values (".arreglo[$indice].")"$conexion); 
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 03/10/2011, 09:35
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: Almacenar Matriz en MYSQL

Zeichen, hola , mira para poder almacenar los campos es tan sólo contar el largo del arreglo, luego lo puedes recorrer con un ciclo y en cada iteración insertar el registro :


Código PHP:
Ver original
  1. $perinv=$_POST['personal'];//Recibir
  2. $total=count($perinv);//Contar el arreglo
  3. for ($i=0;$i<$total;$i++)
  4. {
  5.     mysql_query("INSERT INTO tabla (id) values (".$perinv[$i].")", $conexion); //Insertar el arreglo por cada vuelta
  6. }

Saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #6 (permalink)  
Antiguo 03/10/2011, 09:37
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

Veamos si capte la idea amigo h2swider:

Seria:

Código PHP:
mysql_query("INSERT INTO tabla (NOMBRE DE MI TABLA) values (".personal[$0].")"$conexion); 
  #7 (permalink)  
Antiguo 03/10/2011, 09:47
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: Almacenar Matriz en MYSQL

Cita:
Iniciado por zeichen Ver Mensaje
Veamos si capte la idea amigo h2swider:

Seria:

Código PHP:
mysql_query("INSERT INTO tabla (NOMBRE DE MI TABLA) values (".personal[$0].")"$conexion); 
casi

Código PHP:
mysql_query("INSERT INTO NOMBRE_DE_MI_TABLA (nombre_campo1, nombre_campo2) values (".personal[0].", ".personal[1].")"$conexion); 
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #8 (permalink)  
Antiguo 03/10/2011, 09:57
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

Compañero h2swider he intentado lo que me indicas pero me almacena el valor: .personal[0]. que esta sucendiendo??
  #9 (permalink)  
Antiguo 03/10/2011, 10:00
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: Almacenar Matriz en MYSQL

Zeichen probaste lo que te dejé yo??? respecto a que te almacena ese valor es por que la query está mala, debido a que debes almacenar variable y en este caso lo tienes como una constante, para crear una variable en Php es tan sólo agregar el signo $ delante de la variable a crear , esto quiere decir que deberia ser : $personal[0]; aunque igual te digo lo que te deje yo es más funcional, ahora imaginate si recibieras 20 variables, sería copias y pegar eso 20 veces



Saludos


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #10 (permalink)  
Antiguo 03/10/2011, 10:03
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: Almacenar Matriz en MYSQL

Cita:
Iniciado por zeichen Ver Mensaje
Compañero h2swider he intentado lo que me indicas pero me almacena el valor: .personal[0]. que esta sucendiendo??
Grave error mio por no leer, como indica en la respuesta de arriba, falta el signo $ que identifica a la variable

$personal[0]

Al hacer esto estas llamando a la posicion 0 del arreglo llamado "$personal"
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #11 (permalink)  
Antiguo 03/10/2011, 10:04
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

ESC CIERTO COMPAÑERO bUllan9ebrio, tu codigo es muchisimo mas funcional!!!
MUCHISIMAS GRACIAS,
Sin embargo haciendo la correcion que me indicas del $

ya he logrado insertar los campos, de esta manera

Código PHP:
Ver original
  1. mysql_query("INSERT INTO NOMBRE_DE_MI_TABLA (nombre_campo1, nombre_campo2) values ("$personal[0]", "$personal[1]")", $conexion);

porque con el que me indicaste me inserta solo ".."

Ayudame para poder usar tu codigo!

Por cierto muchas gracias por tu codigo amigo h2swider es muy util en casos de pocos campos
  #12 (permalink)  
Antiguo 03/10/2011, 10:14
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: Almacenar Matriz en MYSQL

Reemplaza por esto:

Código PHP:
Ver original
  1. mysql_query("INSERT INTO tabla (id) values ('".$perinv[$i]."')", $conexion); //Insertar el arreglo por cada vuelta

errores de comillas


Saludos







En el peor de los casos, puedes ver la query de la siguiente manera :



Código PHP:
Ver original
  1. $consulta="INSERT INTO tabla (id) values ('".$perinv[$i]."')"; //Insertar el arreglo por cada vuelta
  2.         echo "$consulta<br>";

no insertará pero podras ver los valores que va tomando dentro del ciclo.
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #13 (permalink)  
Antiguo 03/10/2011, 10:18
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

Barbaro ese codigo!, ahora quisiera saber para aprovechar la oportunidad como hago para guardar todos los valores de los campos dentro de uno solo dentro de la base de datos!
  #14 (permalink)  
Antiguo 03/10/2011, 10:20
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: Almacenar Matriz en MYSQL

zeichen, no entendí bien tú pregunta al parecer, lo que entendi es tener un campo y almacenar todos los datos dentro de este es eso? o te entendí mal
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #15 (permalink)  
Antiguo 03/10/2011, 10:24
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

ES DECIR:

Código HTML:
<input name="personal[]" type="text" id="personal[]" size="6" />  
<input name="personal[]" type="text" id="personal[]" size="6" /> 
Lo que se introduzca en estos 2 campos, guardarlo en el campo perinv de la base de datos!
  #16 (permalink)  
Antiguo 03/10/2011, 10:31
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: Almacenar Matriz en MYSQL

zeichen, mira:

Código PHP:
Ver original
  1. mysql_query("INSERT INTO tabla (perinv) values ('".$perinv[$i]."')", $conexion); //Insertar el arreglo por cada vuelta
  2.  
  3. //Esto debería insertar ambos registros, dado que el code completo que te dejé
  4. //cuenta el arreglo (en este caso personal[])y de acuerdo de eso efectua el ciclo
  5. //ahora es tan solo que tú modifiques los campos a insertar y deberia funcionar

Saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #17 (permalink)  
Antiguo 03/10/2011, 11:33
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

No he conseguido almacenar los datos del campo, la consulta me da:

Código PHP:
INSERT INTO tabla (areacvalues (''
  #18 (permalink)  
Antiguo 03/10/2011, 12:08
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Almacenar Matriz en MYSQL

Amigos: he logrado saldar todas mis dudas, gracias a ustedes:

1: En primera instancia guardo mis campos por separados seleccionado el indice que deseo con la sentencia:(GRACIAS A :h2swider)

Código PHP:
mysql_query("INSERT INTO NOMBRE_DE_MI_TABLA (nombre_campo1, nombre_campo2) values ("$personal[0]", "$personal[1]")"$conexion); 
2.- He logrado guardar de la misma forma los campos en sus respectivos indices, solo que en esta ocasion utilice el siguiente:(GRACIAS A:bUllan9ebrio)
Código PHP:
    $perinv=$_POST['personal'];//Recibir
    
$total=count($perinv);//Contar el arreglo
    
for ($i=0;$i<$total;$i++)
    {
        
mysql_query("INSERT INTO tabla (id) values (".$perinv[$i].")"$conexion); //Insertar el arreglo por cada vuelta
    

3.-Por ultimo ingrese todos los valores del campo personal dentro de un mismo campo de mi base de datos, pero en este caso usando la sentencia IMPLODE, quedando de esta forma:

Código PHP:
$personal='"'.implode(";",$_POST['personal']);//Recibir 
, y luego la sentencia respectiva de incluir los datos dentro de x campos.

DE VERDAD SUPER AGRADECIDO POR TODAS SUS RESPUESTAS y POR ESTAR ATENTOS DE MANERA TA RAPIDA Y EFICIENTE, ESPERO AYUDARLOS EN ALGUNA CIRCUNSTANCIA QUE ESTE EN MIS MANOS, Y A QUIENES COMENZAMOS ESTE MUNDO DE LA PROGRAMACION-

NOTA: bUllan9ebrio Y h2swider TENDRAN SUS RESPECTIVOS PUNTOS!

Y AL AMIGO CARICATOS, tambien muchas gracias sin embargo fue algo despectivo tu manera de responder a mi duda, indicando que por el codigo que utilice no tengo conocimiento de como tratar con la materia, y ps ya te puedes dar cuenta que gracias a la ayuda de otras 2 personas pude solventar mi problema super rapido!, sin embargo es una simple critica contructiva!

Etiquetas: almacenar, campos, funcion, matriz, mysql
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 21:42.