PHP - guardar los valores de un array en una tabla de mysql

   
Vista:
Imágen de perfil de Hfr

guardar los valores de un array en una tabla de mysql

Publicado por Hfr (84 intervenciones) el 08/06/2016 22:27:09
Hola chicos, como están espero que bien.

tengo un array que recibo de un select multiple y otro de unos campos dinámicos que dibujo con un funcin js con eso no tengo problema solo lo mencione. jejejeje


de mi select ,multiple y de mis campos dinámicos yo lo recibo los muestro en pantalla de esta forma.

1
2
3
4
5
$so=$_POST['plan'];
for ($i=0;$i<count($so);$i++)
{
echo "<br>" . $i . ": " . $so[$i];
}

mi tabla de mysql tiene como 20 campos mas o menos.

los campos datos de los dinámicos debo de almacenarlos en la dbo al igual que los del select multiple.
los datos de los dos arreglos seria un mismo registro

eonteces estaba pensado en esto

1
2
3
4
$insert= mysqli_query($conn, "INSERT INTO `pl_vidasaludable`( `id_nnja`,
for ($j=0;$j<count($plan);$j++) { echo $p[$j].','; }  

} ) VALUES  (  for ($i=0;$i<count($plan);$i++) { echo $plan[$i]; })");

para que el insert fuera dinámico ero la cosa como que no casa...
agredesco una manito y sus comentarios..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

guardar los valores de un array en una tabla de mysql

Publicado por kip (571 intervenciones) el 08/06/2016 22:50:48
Hola, no entiendo del todo como es que deseas insertar de un solo array $_POST columnas y datos, en mi opinion seria mejor tener dos arrays, uno que contenga las columnas y otro los valores, no te parece?

En todo caso, si estoy equivocado me gustaria que expliques mejor aquello de el insert dinamico que tienes en mente, para tratar de entenderte y ayudarte en lo que se pueda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Hfr

guardar los valores de un array en una tabla de mysql

Publicado por Hfr (84 intervenciones) el 08/06/2016 23:29:33
Tengo una tabla como como con 20 campos varchar.

tengo un formulario dinámico.
el formulario dinamito tiene un select multiple como de 9 elementos maximo que recibe de otro select multiple.
tengo un botón que deibuja dos campos dinámicos por cada item en el select multiple

si yo selecciono 2 item en mi select multiple se dibujan 4 campos dinámicos
yo recibo 3 variables con elementos de post

1
2
3
$so=$_POST['plan']; // segundo campo que se dibuja  cuando se adiciona un item  del select multiple 
$metas=$_POST['mets']; // primer campo que se dibuja  cuando se adiciona un item  del select multiple 
$selc=$_POST['select'];  //los datos de select multiple 

mi idea de insert dinámico es.
si el select multiple tiene un item selc sera 1... metas seria 1 so seria1
si elselect multiple tiene 2 item´s selc sera 2.... metas seria 2 so seria2
eso dentro de los array




1
2
3
4
5
$so=$_POST['plan'];
for ($i=0;$i<count($so);$i++)
{
echo "<br>" . $i . ": " . $so[$i];
}

que seria asi


alala

enotnces el insert dinamico deberia de tomar los datos de ejemplo de la imagen y guardarlos en los campos de la tabla siendo un solo registro mas no registros diferentes.
entonces si llegaran 2 item del select multiple y 4 valores de los campos dinamicos mediate las variables de los post
entonces todos esos datos se guadarian en 6 campos de la tabla pero siendo el mismo registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

guardar los valores de un array en una tabla de mysql

Publicado por kip (571 intervenciones) el 09/06/2016 00:16:27
Bueno, entonces por cada select que hagas dependiendo del valor del mismo se crearan los inputs ? o sera un valor entero como cantidad?

Ahora esta linea de codigo:

1
$insert= mysqli_query($conn, "INSERT INTO `pl_vidasaludable`( `id_nnja`,for ($j=0;$j<count($plan);$j++) { echo $p[$j].','; }  ) VALUES ( for ($i=0;$i<count($plan);$i++) { echo $plan[$i]; })");

Veo que colocas en los campos donde ingresaras los datos un for que mostrara los valores del array $p, asi mismo los valores del array $plan como VALUES.

Podrias colocar la estructura de tu tabla o explicarla para entender mejor sobre la query anterior que intentas realizar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

guardar los valores de un array en una tabla de mysql

Publicado por Hfr (84 intervenciones) el 09/06/2016 14:35:52
esta es la estructura de la tabla


TABLA

los campos plan y metas va hasta 9..

entonces suponiendo que el usuario selecciono los 9 item del select multiple entonces se dibujaron 9 campos input text de metas y de plan.


el insert llenaría todos los campos de la tabla

pero si solo fue un item solo se llenaría el dato 1 el plan 1 y la meta 1 y el resto quedaría vació o null.

entonces aquí después de la coma

$insert= mysqli_query($conn, "INSERT INTO `pl_vidasaludable`( `id_nnja`,

con el ciclo for pensaba darle a dato una posición j el cual seria el contador

for ($j=0;$j<count($plan);$j++) { echo $p[$j].','; }
claro aquí lo estaba haciendo con plan para ver que salia y que tan loco estaba yo ...

era una variable estática no recibida de ningún post $p="plan"
con el for yo le daría plan1, plan2 etc.
y para el values le daba el valor que trai cada input plan

y en teoría pensaba hacerlo así para el resto para el select múltiple y otro campo hecho diatónicamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

guardar los valores de un array en una tabla de mysql

Publicado por kip (571 intervenciones) el 09/06/2016 18:25:27
Hola, creo haberte entendido, te dejare un codigo que hice basandome en la estructura de tu tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$dato = array('valor1_dato', 'valor2_dato');
$plan = array('valor1_plan', 'valor2_plan');
$metas = array('valor1_metas', 'valor2_metas');
 
$query = 'INSERT INTO nombre_tabla (';
 
for ($i=0, $size = count($dato); $i<$size;$i++){
    $query.= ' dato'.($i+1).', plan'.($i+1).', metas'.($i+1);
    if ( $size >  $i+1 ){
        $query .= ',';
    }
}
$query .= ') VALUES (';
for ($i=0, $size = count($dato); $i<$size;$i++){
    $query .= $dato[$i].', '.$plan[$i].' ,'.$metas[$i];
    if ( $size >  $i+1 ){
        $query .= ',';
    }
}
$query.= ')';
 
echo $query;
?>

En ese ejemplo lo que hice es colocar 3 arrays de ejemplos, cada uno serian los datos que irian a los campos de tu tabla que son dato, plan y metas, hice un echo para que veas como quedaria la query:
Screenshot_178

Si incrementas los datos del array, la query se ajustara y te imprimira todos los valores que contegan.

Luego solo la ejecutarias:
1
$insert= mysqli_query($conn, $query);

Por cierto aquellos ids que tienes en la tabla id_pdvidasaludable e id_nnja, si son autoincrementables no es preciso insertarlos en la tabla, ten en cuenta eso.

Pruebalo y si tienes alguna duda, nos comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Hfr

guardar los valores de un array en una tabla de mysql

Publicado por Hfr (84 intervenciones) el 09/06/2016 20:05:18
kip, eres fenomenal. funciona correctamente

si me recibe los datos del formula sin problema,
y si el primer id es auto incrementa y el segundo no


creo que deberia de quedar asi oara colocar el id.
$query = 'INSERT INTO nombre_tabla (id_nnja';

y la ultima no me cuadro mecho
$query .= ') VALUES (''$idnn'', ';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

guardar los valores de un array en una tabla de mysql

Publicado por kip (571 intervenciones) el 09/06/2016 23:06:34
Bueno, aca te dejo todo como quedaria con el id_nnja

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$dato = array('valor1_dato', 'valor2_dato');
$plan = array('valor1_plan', 'valor2_plan');
$metas = array('valor1_metas', 'valor2_metas');
$idnn = '23234234';
 
$query = 'INSERT INTO nombre_tabla ( id_nnja, '; //agrego la columna del id
 
for ($i=0, $size = count($dato); $i<$size;$i++){
    $query.= ' dato'.($i+1).', plan'.($i+1).', metas'.($i+1);
    if ( $size >  $i+1 ){
        $query .= ',';
    }
}
$query .= ') VALUES ('.$idnn; // aqui ingreso el id pero falta la coma
for ($i=0, $size = count($dato); $i<$size;$i++){
    if ($i == 0){ // como la coma del id aparecera al inicio coloco como condicion que aparezca solo cuando se este en el primer indice que es 0
        $query.= ', '; // aca ingreso la coma
    }
    $query .= $dato[$i].', '.$plan[$i].' ,'.$metas[$i];
    if ( $size >  $i+1 ){
        $query .= ', ';
    }
}
$query.= ')';

Prueba y nos comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Hfr

guardar los valores de un array en una tabla de mysql

Publicado por Hfr (84 intervenciones) el 10/06/2016 18:17:33
si quedo super.
pero no se si es un problema de concatenación, pero al imprimir el query sale bn
pero al inyectarlo en la dbo no adiciona el registro lo coloca

le quite plan según el usuario ese campo no va ahi pero si en otro formulario. casi igualito en fin...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
include ('con_mysql.php');
 
 
 
$link = new conexion();
$conn = $link->conectar();
 
 
$idnnja="1234567890";
$dato = "p";
 
$metas =array('valor1_dato');
 
$realizacion = "p";
 
 
 
 
 
 
$query ='INSERT INTO pl_vidasaludable (id_nnja,realizacion';
 
 
for ($i=0, $size = count($dato); $i<$size;$i++){
    $query.= ' dato'.($i+1).', metas'.($i+1);
    if ( $size >  $i+1 ){
        $query .= ',';
    }
}
$query .= ') VALUES ('.$idnnja.','.$realizacion; // aqui ingreso el id pero falta la coma
for ($i=0, $size = count($dato); $i<$size;$i++){
    if ($i == 0){ // como solo sera al inicio del array coloco como condicion que sea en el primer indice 
        $query.= ', '; // aca ingreso la coma
    }
    $query .= $dato[$i].',  '.$metas[$i];
    if ( $size >  $i+1 ){
        $query .= ', ';
    }
}
$query.= ')';
 
 
$inser=mysqli_query($conn,$query);
 
if ($inser)
 
	{
 
		echo "exito<BR>";
	}
 
	else {
 
		echo "<BR>no insertado<BR>";
	}
 
	echo $query;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

guardar los valores de un array en una tabla de mysql

Publicado por kip (571 intervenciones) el 10/06/2016 19:15:38
Olvide colocar las comillas para que los values sean interpretados como string y tambien de colocar el punto y coma al final, lo siento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$query ='INSERT INTO pl_vidasaludable (id_nnja,realizacion,';
 
for ($i=0, $size = count($dato); $i<$size;$i++){
    $query.= ' dato'.($i+1).', metas'.($i+1);
    if ( $size > $i+1 ){
        $query .= ',';
    }
}
$query .= ') VALUES ('.$idnnja.',\''.$realizacion.'\''; // aqui ingreso el id pero falta la coma
for ($i=0, $size = count($dato); $i<$size;$i++){
    if ($i == 0){ // como solo sera al inicio del array coloco como condicion que sea en el primer indice
        $query.= ', '; // aca ingreso la coma
    }
    $query .= '\''.$dato[$i].'\', \''.$metas[$i].'\'';
    if ( $size > $i+1 ){
        $query .= ', ';
    }
}
$query.= ');';

Creo que de esta forma se soluciona el problema, recuerda que id_nnja debe ser tipo INT.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Hfr

guardar los valores de un array en una tabla de mysql

Publicado por Hfr (84 intervenciones) el 10/06/2016 22:42:24
ok vale ya quedo super bien
el idnnja en la dbo lo tengo como bigint y ese lo traigo con un funcion de consulta y lo pongo dentro de un hhiden en el form

y al final quedo asi ya que olvide adcionarle la fecha.. para cada registro jejeje casi nada.

$query ='INSERT INTO pl_vidasaludable (id_nnja,realizacion,fecha,';

$query .= ') VALUES ('.$idnnja.',\''.$realizacion.'\',\''.$fecha_sys.'\'';

y la codificación de los acentos la puse qui

$query .= '\''.utf8_decode($dato[$i]).'\', \''.utf8_decode($metas[$i]).

ok men muchas gracias te debo un pola..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar