PHP - No guarda varios registros

 
Vista:
sin imagen de perfil

No guarda varios registros

Publicado por Eric (4 intervenciones) el 06/04/2016 17:15:08
hola muy buenas, soy nuevo en este foro y me gustaría preguntarles si me pueden ayudar en un problema que tengo, mi problema es que tengo un formulario donde al darle click a un botón me agregue inputs para guardar mas de 1 registro a la vez estuve buscando y me mostraron un ejemplo lo modifique conforme a los campos de mi base de datos y quedo de la siguiente manera
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div id="stylized" class="myform" style="margin:40px auto;">
 
<form id="form" name="form" method="POST" action="insertar_registro.php">
<div id="material_pedido"></div>
 
<label>Clave del Empleado:</label><input type="text" id="empleado" name="idemp" style="width:50px;"></select><span style="float:left;padding:8px 0px 8px 8px;">
Nombre del Empleado:</span><input type="text" id="no_empl" style="width:90px;"></select><span style="float:left;padding:8px 0px 8px 8px;">
Area del Solicitante:</span><input type="text" id="area" style="width:110px;"></select><span style="float:left;padding:8px 0px 8px 8px;">
Fecha de la Solicitud:</span><?php $fecha= date("Y-m-d"); ?><!--=== sirve para obtener la fecha del equipo automaticamente ===-->
<input type="date" name='fecha_sol[]' required value="<?php echo $fecha; ?>" readonly style="width:119px;"/><span style="float:left;padding:8px 0px 8px 8px;"></span>
<left><h1>Articulo a pedir</h1>
<p>Puede añadir mas de 1 pedido si asi lo decea</p></left>
<div id="div_1">
<span style="float:left;padding:9px 0px 0px 0px;">
<label>Clave producto:</span></label><input type="text" id="clave1" name="clave[]" style="width:50px;"/><span style="float:left;padding:9px 0px 0px 0px;">
Producto:</span><input type="text" id="prod" placeholder="Nombre producto" name="producto[]" style="width:110px;"/><span style="float:left;padding:9px 0px 0px 0px;">
Marca:</span><input type="text" id="marca" placeholder="Marca producto" name="marca[]" style="width: 100px;"/><span style="float:left;padding:9px 0px 0px 0px;">
Cantidad:</span><input type="number" name="cantidad[]" min='1' max='100'style="width:30px;"/><input class="bt_plus" id="1" type="button" value="+" /><div class="error_form"></div>
</div>
<br>
<br>
<button type="submit" name="submit" class="boton">Enviar</button>
</form>
</div>
y para que me agregara los inputs necesarios para guardar mas de un registro es este
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
$(document).ready(function(){
	$(".bt_plus").each(function (el){
		$(this).bind("click",addField);
	});
});
 
function addField(){
	//el id del elemento div qutandole la palabra "div_" de delante. para asi aumentar el numero.
	var clickID = parseInt($(this).parent('div').attr('id').replace('div_',''));
	//Se genera el nuevo id
	var newID = (clickID+1);
	//Se crea un clon del elemento div que contiene los campos de texto
	$newClone = $('#div_'+clickID).clone(true);
	//Se le asigna el nuevo numero id
	$newClone.attr("id",'div_'+newID);
	//se le asigna nuevo id al primer campo input dentro del div y le borro cualquier valor que tenga, asi no copia lo ultimo que hayas escrito.
	//(igual que antes no es necesario tener un id)
	$newClone.children("input").eq(0).attr("id",'clave'+newID).val('');
	//Se borra el valor del segundo input(campo de cantidad)
	$newClone.children("input").eq(1).val('');
	//Se asigna el nuevo id al boton
	$newClone.children("input").eq(4).attr("id",newID)
	//Se inserta el div clonado y modificado despues del div original
	$newClone.insertAfter($('#div_'+clickID));
	//Se cambia el signo "+" por el signo"-" y se quita el evento addfield
	$("#"+clickID).val('-').unbind("click",addField);
	//Se cambia el signo del evento delRow para que borre la fila en caso de hacer click
	$("#"+clickID).bind("click",delRow);
}
 
function delRow(){
	//Esta funcion destruye el elemento actual una vez echo el click
	$(this).parent('div').remove();
}
y para guardar los registros utilizo este
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
<?php
 
    include("php/conexion.php");
 
    $cuenta = count($_POST['clave']);  /*esto fue lo que hice, pero me sigue guardando el primer campo y los otros 2 que agrego no*/
    $cuenta = count($_POST['idemp']);
    $cuenta = count($_POST['producto']);
    $cuenta = count($_POST['marca']);
    $cuenta = count($_POST['cantidad']);
    $cuenta = count($_POST['fecha_sol']);
 
    for ($i=0; $i <$cuenta; $i++) {
        $idemp = $_POST['idemp'][$i];
        $clave = $_POST['clave'][$i];
        $producto = $_POST['producto'][$i];
        $marca = $_POST['marca'][$i];
        $cantidad = $_POST['cantidad'][$i];
        $fecha_sol = $_POST['fecha_sol'][$i];
 
 
    $query1 ="INSERT INTO detalle(id_pedidos, id_producto, producto, marca, cantidad, fecha_solicitud)
    VALUES('$idemp', '$clave', '$producto', '$marca', '$cantidad', '$fecha_sol')";
    $resultado=mysqli_query($conexion, $query1);
 
      if($query1){
              header("Location: pedidos.php");
                }else{
                echo '<script> alert("El Pedido No Se Envio");</script>';
                echo '<script> window.location=" pedidos.php"; </script>';
            }
    }
?>
pero cuando guando le doy click en enviar solamente me guarda 1 registro y lo que quiero es guardar mas de 1, no se mucho de php lo que eh echo son propuestas que me habían dicho, espero que me puedan ayudar a solucionarlo, espero sus respuestas
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
sin imagen de perfil

No guarda varios registros

Publicado por Ghensys (12 intervenciones) el 06/04/2016 21:12:51
prueba imprimiendo las variables a medida que avance el codigo y busca donde se pierden
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
sin imagen de perfil

No guarda varios registros

Publicado por Eric (4 intervenciones) el 06/04/2016 21:16:02
como puedo hacer eso?
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
sin imagen de perfil

No guarda varios registros

Publicado por Ghensys (12 intervenciones) el 06/04/2016 21:20:11
hazle un echo a las variables y verifica que tengan el valor que le pusiste en el form, prueba con un "print_r($_POST);" en el archivo al cual te lleva el formulario, esto te imprime todas las variables pasadas por el metodo post y verificas que tengan los datos correctos
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
sin imagen de perfil

No guarda varios registros

Publicado por Eric (4 intervenciones) el 06/04/2016 22:16:50
esto es lo que me manda al hacer el print_r($_POST);
Array ( [idemp] => 32 [fecha_sol] => Array ( [0] => 2016-04-06 ) [clave] => Array ( [0] => 11 [1] => 12 ) [producto] => Array ( [0] => Clips [1] => Perforadora ) [marca] => Array ( [0] => ACCO [1] => Pegaso ) [cantidad] => Array ( [0] => 5 [1] => 4 ) [submit] => )

solo agregue 2 campos y estan todos los datos que agregue, en que estare mal?
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
sin imagen de perfil

No guarda varios registros

Publicado por Ghensys (12 intervenciones) el 06/04/2016 22:33:07
esto te trae todos los datos que pasas a traves del formulario, si solo llenaste 2 te mostrara los valores en el campo correspondiente y los otros deberian aparecer pero sin datos, eso es para comprobar que este pasando los datos correctamente
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
sin imagen de perfil

No guarda varios registros

Publicado por Eric (4 intervenciones) el 06/04/2016 22:54:29
ooh ok, entonces en que estoy mal? porque solamente me guarda el primer dato? ya tengo como 1 semana buscando, preguntando y no eh podido resolverlo jejejejeje
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
sin imagen de perfil

No guarda varios registros

Publicado por Ghensys (12 intervenciones) el 06/04/2016 23:22:48
no se que podria ser, prueba bien el sql directamente en el gestor de base de datos a ver
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