PHP - comparacion de variable y actualizacion

 
Vista:
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparacion de variable y actualizacion

Publicado por zendi (1056 intervenciones) el 31/07/2014 04:16:44
Que tal a todos, estoy desarrollando un codigo para crear registros de una tabla a otra tabla,

este es 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
<?php
$connect = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
$reserva = "SELECT * FROM gastos1";
 
$asignadeuda = @pg_query($connect,$reserva);
 
while($select2 = @pg_fetch_array($asignadeuda)):
//    $total = 0;
    $fecha = $select2['fecha'];
    $monto = $select2['monto'];
	$codigo = $select2['codigo'];
    $tipo_gasto = $select2['cod_tipo_gasto'];
	   if ($tipo_gasto == 2)
	   {
  	       $diez = ($monto * 10/100);
		   $total += $diez;
	   }
 
		   $actualiza ="INSERT INTO reserva(fecha,monto,id_reserva) VALUES ('$fecha',$total,$codigo)";
           $agrega  = @pg_query($connect,$actualiza);
endwhile;
 
?>

esta son las tablas:

desde aqui pregunto cuando

cod_tipo_gasto sea igual a 2 sume el campo monto

1
2
3
4
5
6
7
8
9
cod_tipo_gasto numeric,
  descripcion text NOT NULL,
  monto numeric(5,2),
  fecha date NOT NULL,
  codigo serial NOT NULL,
  CONSTRAINT gastos1_pkey PRIMARY KEY (codigo),
  CONSTRAINT gastos1_cod_tipo_gasto_fkey FOREIGN KEY (cod_tipo_gasto)
      REFERENCES tipos_gastos (codigo) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT
y cree el registro en esta tabla:

1
2
3
4
5
6
7
id_reserva integer NOT NULL DEFAULT nextval('reserva_id_seq'::regclass),
  fecha date,
  monto numeric(10,2),
  CONSTRAINT reserva_pkey PRIMARY KEY (id_reserva),
  CONSTRAINT reserva_id_reserva_fkey FOREIGN KEY (id_reserva)
      REFERENCES gastos1 (codigo) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE NO ACTION
la idea es que cuando sean fechas iguales sume esas solamente
pero el problema es que esta acumulando el monto en cada registro y no respeta las fechas

asi queda la tabla con los 3 campos; esta acumulando con el anterior monto, cuando en realidad debiera sumar cuando la fecha sea la misma
tablas
si alguien pudiera ver que falta con la logica.
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
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparacion de variable y actualizacion

Publicado por zendi (1056 intervenciones) el 31/07/2014 18:07:35
Por favor amigos ayúdenme en esta nueva cruzada, yo por aquí estoy buscando también la solución, lo intente usando las fecha pero sigue la falla. Mucho les agradezco.
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

comparacion de variable y actualizacion

Publicado por xve (6935 intervenciones) el 01/08/2014 00:06:27
Hola Zendi, por lo que dices, parece que te falta el condicional de la fecha, no?

De todas maneras, no lo entiendo, porque si solo tienes que añadir los que la fecha sean iguales, si haces un INSERT, entiendo que la tabla "reserva" esta vacía, no? o tienes que hacer un update para aumentar ese 10%?

Si nos puedes aclarar exactamente que quieres hacer...
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
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparacion de variable y actualizacion

Publicado por zendi (1056 intervenciones) el 01/08/2014 01:20:04
Hola xve. La idea es que desde la tabla gastos1 darle o crear un registro cada vez a la tabla reserva y el campo monto de la tabla gastos1 debe ser 10% para insertarlo luego en la tabla reserva, cuyu campo id_reserva es integer.


Pero estoy creando otro codigo aparte del que envie anteriormente,
a ver si puedes ayudarme aqui, como hago para crear un contador en este codigo, la idea es ahorrarme tantos pasos y asi crear ese registro de una vez por todas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$connect2 = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
$descrip = $_POST['cmbogasto'];
$monto   = $_POST['monto'];
$fecha   = $_POST['fecha'];
$tipogasto = $_POST['cmbotipgasto'];
$anio  = substr($fecha,6,4);
$mes   = substr($fecha,3,2);
$dia   = substr($fecha,0,2);
$fechagasto = $anio."-".$mes."-".$dia;
$codoriginal =$_POST['codoriginal'];
///colocar el tipo de gastos
$guardar = "INSERT INTO gastos1(cod_tipo_gasto,descripcion,monto,fecha) VALUES ($tipogasto,'$descrip',$monto,'$fechagasto')";
$agrega  = @pg_query($connect2,$guardar);
 
$codigo = 1;
 
///actualiza la reserva
    if ($tipogasto == 2){
        $diez = $monto * 10/100;
		$total += $diez;
		$codigo = $codigo + 1;
      }
		   $actualiza ="INSERT INTO reserva(fecha,monto,id_reserva) VALUES ('$fechagasto',$total,$codigo)";
           $agrega  = @pg_query($connect2,$actualiza);

la idea es que no se repita el id_reserva
esta es la estructura:
1
2
3
4
5
6
7
8
9
10
CREATE TABLE reserva
(
  id_reserva integer NOT NULL DEFAULT nextval('reserva_id_seq'::regclass),
  fecha date,
  monto numeric(10,2),
  CONSTRAINT reserva_pkey PRIMARY KEY (id_reserva),
  CONSTRAINT reserva_id_reserva_fkey FOREIGN KEY (id_reserva)
      REFERENCES gastos1 (codigo) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE NO ACTION
)
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
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparacion de variable y actualizacion

Publicado por zendi (1056 intervenciones) el 01/08/2014 04:04:22
Xve, ya resolvi el problema en base al ultimo codigo que habia mencionado
sencillamente lo que hice fue buscar el ultimo registro de la tabla y se le va sumando al campo id_reserva. De modo que va incrementando.
De todos modos Comenta a ver que tal por favor.
Saludos.

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
<?php
$connect2 = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
$descrip = $_POST['cmbogasto'];
$monto   = $_POST['monto'];
$fecha   = $_POST['fecha'];
$tipogasto = $_POST['cmbotipgasto'];
$anio  = substr($fecha,6,4);
$mes   = substr($fecha,3,2);
$dia   = substr($fecha,0,2);
$fechagasto = $anio."-".$mes."-".$dia;
 
///colocar el tipo de gastos
$guardar = "INSERT INTO gastos1(cod_tipo_gasto,descripcion,monto,fecha) VALUES ($tipogasto,'$descrip',$monto,'$fechagasto')";
$agrega  = @pg_query($connect2,$guardar);
 
$codigo = 1;
 
///actualiza la reserva
    if ($tipogasto == 2){
        $diez = $monto * 10/100;
		$total += $diez;
		$reserva = "SELECT id_reserva FROM reserva ORDER BY id_reserva DESC LIMIT 1";
        $asignadeuda = @pg_query($connect2,$reserva);	
 
         while($select2 = @pg_fetch_array($asignadeuda)):
               $id = $select2['id_reserva'];
       		  echo $codigo = $id + 1;
		   $actualiza ="INSERT INTO reserva(fecha,monto,id_reserva) VALUES ('$fechagasto',$total,$codigo)";
           $agrega  = @pg_query($connect2,$actualiza);
 
         endwhile;
      }
header("location:AgregaGastos3.php");
?>
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
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparacion de variable y actualizacion

Publicado por zendi (1056 intervenciones) el 02/08/2014 02:06:53
Hola Xve, bueno canté victoria muy rápido, pero tengo otro problema, resulta que no esta creando registros en la tabla reserva, ya que la primera vez cuando esté vacía, lógicamente no encontrará registros para sumar, en realidad no había previsto eso, la única manera de que genere un registro seria de forma manual y por supuesto desde ahí no habría problemas

Que sugerencia podrías indicarme?
coméntame por favor.
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