PHP - insertar registros con formularios duplicados

   
Vista:

insertar registros con formularios duplicados

Publicado por pablo (12 intervenciones) el 30/05/2016 15:25:51
Buenas tardes,

A ver si me podéis echar un cable. Tengo un script jquery que me duplica un formlario para ir añadiendo lineas de descripción de un producto, hasta ahí bien. Ahora resulta que logicamente necesito insertar esos datos en mi tabla mysql pero tal y com o lo tengo hecho solo me inserta el ultimo formulario que he duplicado. Espero podais ayudarme...

Os paso el trozo de codigo donde hago el insert.


1
2
3
4
5
6
7
8
9
10
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "newjob")) {
  $insertSQL = sprintf("INSERT INTO minijobs (id_parte, msg, pvpjobs, titulo) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['id_parte_job'], "int"),
                       GetSQLValueString($_POST['descripcion'], "text"),
		       GetSQLValueString($_POST['precio'], "text"),
                       GetSQLValueString($_POST['titulo'], "text"));
 
  mysql_select_db($database_conexion, $conexion);
  $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
}
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

insertar registros con formularios duplicados

Publicado por kip (562 intervenciones) el 30/05/2016 17:44:59
Muestranos el codigo HTML y Jquery, asi deduciriamos mejor el error verficando como estas enviando aquellos datos.

Saludos
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

insertar registros con formularios duplicados

Publicado por pablo (12 intervenciones) el 30/05/2016 18:08:43
gracias por tu interes. Te poste el codigo

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
<script>
 $(document).ready(function() {
    $("#add").click(function() {
        var intId = $("#buildyourform div").length + 1;
		var fieldWrapper = $("<div class=\"fieldwrapper\"  style=\'margin-top:5px;' id=\"field" + intId + "\"/>");
        var fTitulo = $("<input type=\"text\" class=\"ftitulo\" name=\"titulo\" placeholder=\"Producto\"/>");
		var fUnidades = $("<input type=\"text\" class=\"funidades\" name=\"uni\" placeholder=\"Uni\"/>");
		var fPrecio = $("<input type=\"text\" class=\"fprecio\" name=\"precio\" placeholder=\"PVP\"/>");
		var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" /><br />");
		var fDescripcion = $("<textarea type=\"text\" class=\"fdes\" name=\"descripcion\" placeholder=\"Descripcion\" ></textarea>");
		var fIDparte = $("<input type=\"hidden\" class=\"fprecio\" name=\"id_parte_job\" value=\"<?php echo $row_partes_id['id_parte']; ?>\"/>")
		var sendButton = $("<input type=\"submit\" class=\"remove\" value=\"Enviar\" /><br />");
		var fInsert = $("<input type=\"hidden\" class=\"fprecio\" name=\"MM_insert\" id=\"MM_insert\" value=\"newjob\"/>");
 
 
 
        removeButton.click(function() {
            $(this).parent().remove();
        });
 
        fieldWrapper.append(fTitulo);
		fieldWrapper.append(fUnidades);
		fieldWrapper.append(fPrecio);
        fieldWrapper.append(removeButton);
		fieldWrapper.append(fDescripcion);
		fieldWrapper.append(fIDparte);
		fieldWrapper.append(fInsert);
		fieldWrapper.append(sendButton);
 
 
		        $("#buildyourform").append(fieldWrapper);
    });
 
    $("body").append(fieldSet);
 
});
 
 </script>
  <form id="newjob" name="newjob" action="<?php echo $editFormAction ?>" method="post" >
           <fieldset id="buildyourform">
             <input name="button2" type="submit" class="fnd-VERDE" id="button2" value="Enviar" />
           </fieldset>
           </form>

como dije antes. el INSERT lo hace pero solo en el ultimo formulario
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

insertar registros con formularios duplicados

Publicado por kip (562 intervenciones) el 30/05/2016 18:51:42
Ahi esta el problema, estas generando constantemente al ejecutar la funcion inputs con los mismos nombres y como es de esperarse te toma el ultimo, lo que podrias hacer es generar como atributo name en cada input un array que contenga los valores que se vayan generando.

Ejemplo:
1
var fDescripcion = $("<textarea type=\"text\" class=\"fdes\" name=\"descripcion[]\" placeholder=\"Descripcion\" ></textarea>");

Y luego al recibirlos deberias crear un while para tomar el valor de cada indice de los arrays.

Ademas de eso, no entiendo porque duplicas tambien el boton submit, eso es algo innecesario, ya que si generas 3 formularios como le haras para darle click a los tres submit que generaste? es mejor dejar uno solo que envie los datos de los tres, no crees?. Aunque si los creaste por alguna razon me gustaria que explicases el porque, ya que no lo entiendo del todo.

Saludos
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

insertar registros con formularios duplicados

Publicado por pablo (12 intervenciones) el 30/05/2016 19:01:12
Muchas gracias por tu ayuda. Me lio con ello!! una vez lo consiga los posteare para quien le haga falta.
respecto al submit es que lo habia dejado en el script y todavia no lo habia borrado ;)
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

insertar registros con formularios duplicados

Publicado por kip (562 intervenciones) el 30/05/2016 22:02:14
Si tienes algun problema, duda, o algo que no te cuadre, 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
0
Comentar

insertar registros con formularios duplicados

Publicado por pablo (12 intervenciones) el 31/05/2016 04:40:37
te comento. he hecho lo siguiente pero no funciona me genera un bucle que nunca termina por que si tengo 4 formularios de 4 campos cada uno me hace una combinacion de todos ellos hasta que se queda el navegador colgado :S.

Alguna idea??
Gracias

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
58
59
60
61
62
63
64
65
$descripcion = array($_POST["descripcion"]);
	$precio = array($_POST["precio"]);
	$titulo = array($_POST["titulo"]);
	$l = count($descripcion);
	$i= 0;
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "newjob")) {
		while ($i < $l){
 			foreach ($descripcion[0] as &$valor1){
			foreach ($precio[0] as &$valor2){
			foreach ($titulo[0] as &$valor3){
 
 				 $insertSQL = sprintf("INSERT INTO minijobs (id_parte, msg, pvpjobs, titulo) VALUES (%s, %s, %s, %s)",
                      		 GetSQLValueString($_POST['id_parte_job'], "int"),
                       		 GetSQLValueString($valor1, "text"),
					  	     GetSQLValueString($valor2, "text"),
                       	     GetSQLValueString($valor3, "text"));
 
 				 mysql_select_db($database_conexion, $conexion);
  				 $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
 
						}
					}
				}
			}
		}
 
 
 <script>
 $(document).ready(function() {
    $("#add").click(function() {
        var intId = $("#buildyourform div").length - 0;
		var fieldWrapper = $("<div class=\"fieldwrapper\"  style=\'margin-top:5px;' id=\"field" + intId + "\"/>");
        var fTitulo = $("<input type=\"text\" class=\"ftitulo\" name=\"titulo[]\" placeholder=\"Producto\"/>");
		var fUnidades = $("<input type=\"text\" class=\"funidades\"  name=\"uni[]\" placeholder=\"Uni\"/>");
		var fPrecio = $("<input type=\"text\" class=\"fprecio\"  name=\"precio[]\" placeholder=\"PVP\"/>");
		var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" /><br />");
		var fDescripcion = $("<textarea type=\"text\" class=\"fdes\"  name=\"descripcion[]\" placeholder=\"Descripcion\" ></textarea>");
		var fIDparte = $("<input type=\"hidden\" class=\"fprecio\" name=\"id_parte_job\" value=\"<?php echo $row_partes_id['id_parte']; ?>\"/>")
		var sendButton = $("<input type=\"submit\" class=\"remove\" value=\"Enviar\" /><br />");
 
 
 
 
        removeButton.click(function() {
            $(this).parent().remove();
        });
 
        fieldWrapper.append(fTitulo);
		fieldWrapper.append(fUnidades);
		fieldWrapper.append(fPrecio);
        fieldWrapper.append(removeButton);
		fieldWrapper.append(fDescripcion);
		fieldWrapper.append(fIDparte);
 
		fieldWrapper.append(sendButton);
 
 
		        $("#buildyourform").append(fieldWrapper);
    });
 
    $("body").append(fieldSet);
 
});
 
 </script>
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

insertar registros con formularios duplicados

Publicado por kip (562 intervenciones) el 31/05/2016 20:16:01
Hola, aqui te dejo un ejemplo sencillo de como deberia hacerse.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
$conex = mysqli_connect('localhost','root','DB_USER','DB_NAME');
 
if (isset($_POST["descripcion"]) || isset($_POST["precio"]) || isset($_POST["titulo"])) {
    $descripcion = array($_POST["descripcion"]);
    $precio = array($_POST["precio"]);
    $titulo = array($_POST["titulo"]);
    for ($i = 0; $i < count($descripcion); $i++) {
        $query = "INSERT INTO datos (descripcion, precio, titulo) VALUES ('$descripcion[$i]','$precio[$i]', '$titulo[$i]')";
        if (!mysqli_query($conex, $query)) {
            echo 'Hubo un problema : ' . mysqli_error($conex);
        }
    }
}
?>

Por cierto las variables $_POST de por si ya son arrays, no debes crearlas como arrays de nuevo, ten en cuenta eso.

Saludos
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

insertar registros con formularios duplicados

Publicado por kip (562 intervenciones) el 31/05/2016 23:23:56
Tuve un error, lo siento, asi es como debe ser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$conex = mysqli_connect('localhost','root','DB_USER','DB_NAME');
if (isset($_POST["descripcion"]) || isset($_POST["precio"]) || isset($_POST["titulo"])) {
	$descripcion = ($_POST["descripcion"]);
	$precio = ($_POST["precio"]);
	$titulo = ($_POST["titulo"]);
	for ($i = 0; $i < count($descripcion); $i++) {
		$query = "INSERT INTO datos (descripcion, precio, titulo) VALUES ('$descripcion[$i]','$precio[$i]', '$titulo[$i]')";
		if (!mysqli_query($conex, $query)) {
			echo 'Hubo un problema : ' . mysqli_error($conex);
		}
	}
}
?>
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

insertar registros con formularios duplicados

Publicado por pablo (12 intervenciones) el 01/06/2016 10:18:58
buah!! muchisimas gracias. Ayer estuve todo el día probando algo muy similar pero no le ponia la id [$i] a la variable. lo que no entiendo es una cosa.
$precio = $_POST["precio"]; no deberia ser $precio = array ( $_POST["precio"]);
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

insertar registros con formularios duplicados

Publicado por kip (562 intervenciones) el 01/06/2016 17:56:50
Pablo de por si aquella variable $_POST es un array y lo denota en su estructura, fijate en ambas [ ], eso quiere decir que es un array.

http://php.net/manual/es/reserved.variables.post.php

Al agregarle array() estas creando un array bideminsional y eso ya es otra cosa.

Saludos
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

insertar registros con formularios duplicados

Publicado por pablo (12 intervenciones) el 01/06/2016 20:50:47
Muchas gracias me ha servido de mucho tu ayuda. Me podré al dia!!

Saludos!!
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