PHP - problemas con insercion de daos dinamicos

 
Vista:
sin imagen de perfil

problemas con insercion de daos dinamicos

Publicado por Israel (5 intervenciones) el 21/07/2014 20:20:14
Buscando información en varias partes fui creando el siguiente codigo donde incrusto datos tomadas de sessiones logrando insertar los datos obtenidos, pero a medias, ya que solo me inserta el primer renglon con los datos de X session; a continuacion pongo el total del código y marcare la parte donde me hace la insercion de un solo dato de lo que trae la variable, y aqui lo que se necesita es insertar todos los renglones o datos que traen las sesiones para lo cual les muestro los valores que traen dichas sesiones
Array ( [id] => 1 [login] => tholin [contar] => 2 [liquidar] => Array ( [0] => 1 [1] => 2 ) [liqcantidad] => Array ( [0] => 10 [1] => 10 ) [lfinicio] => Array ( [0] => 290 [1] => 290 ) [lffinal] => Array ( [0] => 300 [1] => 300 ) [dotar] => Array ( [0] => 1 [1] => 1 ) [linea] => Array ( [0] => 1 [1] => 1 ) [lusuario] => 1 )


la parte que me hace la inserción es la marcada con negrita y subrayada, por ejemplo si quiero insertar [liquidar] => Array ( [0] => 1 [1] => 2 ) solo inserta el renglon [0].


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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php include "../includes/configura.php" ?>
<?php
session_start();
//print_r($_SESSION);
$cuenta= 0;
$total = 0;
 
//print_r($_POST);
 
 
	$conexion = mysqli_connect($server, $user,$pass, $bd);
	mysqli_set_charset($conexion, "utf8");
 
 
	/*$conexion = mysqli_connect("mysql.hostinger.es", "u238695512_atysa", "maria0107", "u238695512_atysa");
	mysqli_set_charset($conexion, "utf8");
		*/
 
    $sql="select * from usuarios as u, dotacion as d, concesionarios as c, operadores as o, unidades as un where login = '".$_POST['login']."' and pass_js = '".$_POST['pass']."' and pass_php = '".md5($_POST['pass'])."' and o.id_operador ='".$_POST['id_operador']."' and c.id_concesionario ='".$_POST['id_concesionario']."' and un.id_unidad = '".$_POST['id_unidad']."' and d.id_dotacion = '".$_POST['id_dotacion']."'";
    //echo $sql;exit;
    $res=mysqli_query($conexion, $sql)or die(mysql_error());
    while($reg=mysqli_fetch_array($res)){
       	$cuenta++;
       	$_SESSION['lusuario'] = $reg['id_usuario'];
 
        }
 
 
	if ($cuenta > 0) {
 
		$sql="insert into liqdotacion values (".$_POST['id_dotacion'].",".$_SESSION['lusuario'].",".$_POST['id_concesionario'].",".$_POST['id_unidad'].",".$_POST['id_operador'].", ".($total).", NOW(),'liquidado')";
		//echo $sql;exit;
		$res=mysqli_query($conexion, $sql)or die(mysql_error());
 
		/*
		 $sqlnueve="select * from liqdotacion where id_dotacion = '{$_SESSION['contar']}' ";
		//echo $sqlnueve;exit;
		$resnueve=mysqli_query($conexion, $sqlnueve)or die(mysql_error());
		
		while($regnueve=mysqli_fetch_array($resnueve)){

       	$_SESSION['id_dotacion'] = $regnueve['id_dotacion'];

       	 }
       	// echo $regnueve['id_dotacion'];

		*/
 
		for ($i=0; $i <$_SESSION['contar'] ; $i++) {
			$sql="insert into liquidar values (NULL, '".$_SESSION['dotar'][$i]."', '".$_SESSION['liquidar'][$i]."', '".$_SESSION['lfinicio'][$i]."','".$_SESSION['lffinal'][$i]."','".$_SESSION['liqcantidad'][$i]."')";
 
 
			$res=mysqli_query($conexion, $sql)or die(mysql_error());
 
			$sql="select * from boletos where id_boleto = '".$_SESSION['liquidar'][$i]."' ";
 
			$res=mysqli_query($conexion, $sql)or die(mysql_error());
			while($reg=mysqli_fetch_array($res)){
		    $stock = $reg['stock'];
		    $sqldos="update boletos set stock = '".($stock-$_SESSION['liqcantidad'][$i])."' where id_boleto = '".$_SESSION['liquidar'][$i]."' ";
		    $resdos=mysqli_query($conexion, $sqldos)or die(mysql_error());
 
 
		    $sqltres="SELECT sum(b.precio*liq.lunidades) as total FROM boletos as b, dotacion as d, liquidar as liq WHERE b.id_boleto = l.id_boleto and d.id_dotacion = l.id_dotacion and l.id_dotacion = '".$_POST['id_dotacion']."'";
		    $restres=mysqli_query($conexion, $sqltres)or die(mysql_error());
			while($regtres=mysqli_fetch_array($restres)){
				$total = $regtres['total'];
				$sqlcuatro="update dotacion set total = '".($total)."' where id_dotacion = '".$_SESSION['id_dotacion']."' ";
		    	$rescuatro=mysqli_query($conexion, $sqlcuatro)or die(mysql_error());
 
		        }
 
 
		    }
           //echo $sqluno;exit;
 
 
 
 
 
 
 
 
 
		}
		echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
		 echo "<h3>La dotación se guardo exitosamente, en 5 segundo lo estaremos redirigiendo a la pagina principal....</h3>";
		 unset($_SESSION['contador']);
		 echo '<meta http-equiv="refresh" content="5; url=../index.php ">';
 
 
	}else
	{
		echo "el usuario no existe, a usted se le tomo una fotografia y esta siendo verificado su perfil";
		unset($_SESSION['contador']);
		 echo '<meta http-equiv="refresh" content="5; url=../index.php ">';
	}
	mysqli_close($conexion);
?>
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problemas con insercion de daos dinamicos

Publicado por xve (6935 intervenciones) el 22/07/2014 09:09:54
Hola Israel, no me queda muy claro... arriba nos muestras el array con todos los valores, pero en cambio, en el insert, los utilizas como variables de sesión ($_SESSION)... entiendo que el array que nos muestras arriba, no tiene nada que ver con las variables de sesión, no?

Si haces un echo $sql te muestra el contenido 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

problemas con insercion de daos dinamicos

Publicado por Israel (5 intervenciones) el 22/07/2014 16:28:13
asi es, si hago un echo del $sql me muestra el contenido correctamente pero solo de la primera linea y se inserta en mi base de datos, te lo explico de diferente manera;

pongo como punto de partida el siguiente array el cual es una session y se llama liquidar, como se podra apreciar esta session consta de dos objetos que en teoria se deberian de guardar en la BD ,estos objetos corresponden a los id de productos que fueron comprados por X persona

[liquidar] => Array ( [0] => 1 [1] => 2 )

entonces al momento de realizar el insert en mi BD de las sessiones que tengo especificadas solo se inserta el primer rubro que esta definido en primera posición, mi necesidad es que integramente se inserte en la BD el contenido de lo que trae ese array.

ojala me pudieras orientar, si estoy aplicando el método equivocado, o estoy pasando por alto alguna instrcción, en fin, cual deberia de ser el metodo adecuado para realizar dicha acción.


de antemano te agradezco la atención prestada
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problemas con insercion de daos dinamicos

Publicado por xve (6935 intervenciones) el 22/07/2014 20:43:52
Hola Israel, si que te entiendo, pero no se porque no te aparece el contenido correctamente...

he realizado este simple ejemplo, donde cargo la variable de sesión y muestro su contenido...
1
2
3
4
5
6
7
8
9
<?php
session_start();
$_SESSION["liquidar"]=Array(1,2);
 
for($i=0;$i<count($_SESSION["liquidar"]);$i++)
{
	echo "<br>".$_SESSION["liquidar"][$i];
}
?>

Tu haces lo mismo, por lo que lo único que se me ocurre, es que la variable de sesión no tenga el contenido esperado.

Puedes revisarlo, que tenga el contenido correcto?
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

problemas con insercion de daos dinamicos

Publicado por Israel (5 intervenciones) el 23/07/2014 00:11:32
haciendo un echo de la session liquidar este es el resultado

[liquidar] => Array ( [0] => 1 [1] => 2 )

Array ( [id] => 1 [login] => tholin [contar] => 2 [liquidar] => Array ( [0] => 1 [1] => 2 ) [liqcantidad] => Array ( [0] => 85 [1] => 75 ) [lfinicio] => Array ( [0] => 115 [1] => 125 ) [lffinal] => Array ( [0] => 200 [1] => 200 ) [dotar] => Array ( [0] => 1 [1] => 1 ) [linea] => Array ( [0] => 1 [1] => 1 ) [lusuario] => 1 [id_dotacion] => 1 )

como podras observar el contenido de la session liquidar son dos objetos y solo inserta el primer objeto

con este código se supone que debo de insertar lo que trae las sessiones

1
2
for ($i=0; $i <count($_SESSION['contar']); $i++) {
			$sql="insert into liquidar values (NULL, '".$_SESSION['dotar'][$i]."', '".$_SESSION['liquidar'][$i]."', '".$_SESSION['lfinicio'][$i]."','".$_SESSION['lffinal'][$i]."','".$_SESSION['liqcantidad'][$i]."')";

y siendo repetitivo solo inserta el renglón Cero;


Alguna idea de lo que estoy haciendo 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
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problemas con insercion de daos dinamicos

Publicado por xve (6935 intervenciones) el 23/07/2014 07:55:19
Hola Israel, creo que ya he visto el problema...

Puede ser que en tu bucle for() unicamente pase una vez???

En vez de esta linea:
1
for ($i=0; $i <count($_SESSION['contar']); $i++) {
Prueba esta:
1
for ($i=0; $i <$_SESSION['contar']; $i++) {

Ya que el count($_SESSION['contar']) creo que siempre devolverá 1, no?

Coméntanos, ok?
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

problemas con insercion de daos dinamicos

Publicado por Israel (5 intervenciones) el 23/07/2014 21:26:41
ya realize la instrucción que me indicas xve pero igual me sigue insertando siempre la primera linea, no se si valga decirte que estos registros en su momento crearon y guardaron dinamicamente sin ningun problema, el problema viene al momento de recuperar dichos registros para realizar alguna actualizacion y es ahi donde solo inserta en mi base de datos el primer renglon del registro, tengo dos tablas en mi base de datos, una llamada detalle_pedidos y otra liquidar_detalle_pedido, lo que necesito realizar es lo siguiente, recuperar el pedido x que se compone de varios productos en diferentes renglones, realizar los cambios necesarios dependiendo lo vendido, y hacer una insercion de ese mismo pedido pero ahora en la tabla liquidar_detalle_pedido, no como update, sino como un insert en esa tabla.

alguna idea ?????
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