PHP - problema con una variable

   
Vista:

problema con una variable

Publicado por zendi (824 intervenciones) el 22/07/2014 20:07:43
Tengo un problema con este codigo,
necesito enviar el valor de la variable cod_tipo_gasto de este select al INSERT que esta en negrilla pero no lo esta haciendo, lo he probado de todas formas, pero no funciona. El problema esta en que lo envia vacio.
Si alguien pudiera ayudarme.

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
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
<tr>
     <td align='right' class='sr' >Tipo Gasto:</td>
     <td><select name="cmbotipgasto"><option value="0">[Seleccione un Tipo de Gasto]</option>
<?php
$tipo_gasto = @pg_query($connect,$tipo_gasto);
while($select3 = @pg_fetch_array($tipo_gasto)){
			$codigo = $select3['codigo'];
            $descrtipogasto = $select3['descripcion'];
            echo "<OPTION VALUE='$cCodigo'>$descrtipogasto</OPTION>";
          }
?>
        </select></td></tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Monto:</td>
		<td class="sr"><input type="text" name="monto" size="5" maxlength="5" align="right"/></td>
	  </tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Fecha:</td>
		<td class="sr"><input type="text" value="<?php echo $hoy;?>" readonly=".F." name="fecha" size="10" maxlength="10" align="right"/></td>
	  </tr>
	</table>
<table align="center">
   <tr>
    <td>
         <input class="color1" type="submit" name="action" value="Guardar"/>
         <input class="color1" type="reset" value="Deshacer">
         <INPUT class="color1" TYPE="BUTTON" VALUE="Salir" ONCLICK="window.location.href='menu1.php'">
    </td>
    </tr>
</table>
</fieldset>
<br/>
<?php
$tipogasto = $_POST['cmbotipgasto'];
$descrip = $_POST['cmbogasto'];
$monto   = $_POST['monto'];
$fecha   = $_POST['fecha'];
$anio  = substr($fecha,6,4);
$mes   = substr($fecha,3,2);
$día   = substr($fecha,0,2);
$fechagasto = $anio."-".$mes."-".$día;
///colocar el tipo de gastos
 $guardar = "INSERT INTO gastos1(
						cod_tipo_gasto,
						descripcion,
						monto,
						fecha) 
				 VALUES ($tipogasto,
				        '$descrip',
						 $monto,
     					'$fechagasto')";
$todosgastos = "SELECT * FROM gastos1 ORDER BY fecha";
$seleccionados = @pg_query($connect,$todosgastos);

el error que arroja es este:
1
INSERT INTO gastos1( cod_tipo_gasto, descripcion, monto, fecha) VALUES (, 'ASCENSORES', 985, '2014-07-22')
alli se ve que debiera actualizar los cuatro campos pero solo trae 3, y no la variable que actualizara el cod_tipo_gasto.
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 Salvador

problema con una variable

Publicado por Salvador (125 intervenciones) el 22/07/2014 20:31:13
Zendi

el problema esta con tu definicion de nombres de variables, tal vez en lugar de enviar

$codigo = $select3['codigo'];
$descrtipogasto = $select3['descripcion'];
echo "<OPTION VALUE='$cCodigo'>

definiste $codigo y enviaste el value como $cCodigo.... creo que te sobro una C
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

problema con una variable

Publicado por zendi (824 intervenciones) el 23/07/2014 14:15:06
Hola Salvador, Bueno ahora si lo hace, pero se queda a medio camino por que no actualiza la base de datos, bueno seguire buscando la solucion, si puedes seguir ayudandome por favor.


este es el codigo completo:
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
   $connect = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
   $diarios = "SELECT * FROM diario ORDER BY descripcion";
   $tipo_gasto = "SELECT * FROM tipos_gastos ORDER BY descripcion";
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Gastos</title>
<style type="text/css">
  .sr {
    background-color: #FFFFCF;
    color: #000000;
    font-family: Arial;
    font-size: 12px;
      }
  input.color1 {background-color: #00CC99; font-weight: bold; font-size: 12px; color: white;}
</style>
</head>
<body>
 <?php
     $hoy=date('d-m-Y');
  ?>
 
<form action="AgregaGastos.php" method='POST'>
<fieldset style='width:auto'><LEGEND>Gastos</LEGEND>
   <table align='center'>
<tr>
     <td align='right' class='sr' >Gasto:</td>
     <td><select name="cmbogasto"><option value="0">[Seleccione un gasto]</option>
 
<?php
 
$diarios = @pg_query($connect,$diarios);
while($select2 = @pg_fetch_array($diarios)){
			$codigo = $select2['codigo'];
            $descrip = $select2['descripcion'];
            echo "<OPTION VALUE='$descrip'>$descrip</OPTION>";
          }
?>
        </select></td></tr>
 
<!--tipo gastos-->
<tr>
     <td align='right' class='sr' >Tipo Gasto:</td>
     <td><select name="cmbotipgasto"><option value="0">[Seleccione un Tipo de Gasto]</option>
<?php
$tipo_gasto = @pg_query($connect,$tipo_gasto);
while($select3 = @pg_fetch_array($tipo_gasto)){
			$codigo = $select3['codigo'];
            $descrtipogasto = $select3['descripcion'];
            echo "<OPTION VALUE='$codigo'>$descrtipogasto</OPTION>";
          }
?>
        </select></td></tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Monto:</td>
		<td class="sr"><input type="text" name="monto" size="5" maxlength="5" align="right"/></td>
	  </tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Fecha:</td>
		<td class="sr"><input type="text" value="<?php echo $hoy;?>" readonly=".F." name="fecha" size="10" maxlength="10" align="right"/></td>
	  </tr>
	</table>
<table align="center">
   <tr>
    <td>
         <input class="color1" type="submit" name="action" value="Guardar"/>
         <input class="color1" type="reset" value="Deshacer">
         <INPUT class="color1" TYPE="BUTTON" VALUE="Salir" ONCLICK="window.location.href='menu1.php'">
    </td>
    </tr>
</table>
</fieldset>
<br/>
<?php
$tipogasto = $_POST['cmbotipgasto'];
$descrip = $_POST['cmbogasto'];
$monto   = $_POST['monto'];
$fecha   = $_POST['fecha'];
$anio  = substr($fecha,6,4);
$mes   = substr($fecha,3,2);
$día   = substr($fecha,0,2);
$fechagasto = $anio."-".$mes."-".$día;
///colocar el tipo de gastos
$guardar = "INSERT INTO gastos1(
						cod_tipo_gasto,
						descripcion,
						monto,
						fecha) 
				 VALUES ($tipogasto,
				        '$descrip',
						 $monto,
     					'$fechagasto')";
$todosgastos = "SELECT * FROM gastos1 ORDER BY fecha";
$seleccionados = @pg_query($connect,$todosgastos);
echo "<table align='center' border='1' bordercolor='#00CC99' bgcolor='#99CC00'>
       <tr>
           <th width='100' style='font-size:15px;'>Gasto
           <th width='100' style='font-size:15px;'>Monto
           <th width='100' style='font-size:15px;'>Fecha
           <th width='100' style='font-size:15px;'>Codigo
           <th width='100' style='font-size:15px;'>&nbsp;
 
  	   </tr>
	 </table>";
        echo "<table border='1' bordercolor='#FFCC99'>";
		$total=0;
 
while($select4 = @pg_fetch_array($seleccionados)):
	 $descripcion = $select4['descripcion'];
	 $monto       = $select4['monto'];
	 $fecha       = $select4['fecha'];
     $anio  = substr($fecha,0,4);
     $mes   = substr($fecha,5,2);
     $día   = substr($fecha,8,2);
	 $articulo    = $select4['codigo'];
 
                echo "<table align='center' border='1' bordercolor='#FFCC99' bgcolor='#99CC00'>
	            <tr class='sr'>
			       <td width='100' align='left' style='font-size:10px;'>$descripcion</td>
			       <td width='100' align='center' style='font-size:10px;'>$monto</td>
			       <td width='100' align='center' style='font-size:10px;'>$día"."/"."$mes"."/"."$anio</td>
			       <td width='100' align='center'><a href='modificar.php?art=$articulo' title='Modificar el gasto'>$articulo</td>
 
 		           <td width='100' style='font-size:10px;'>
				   <a href='eliminagasto.php?cod=$articulo'
				   onClick='return confirm(\"¿Está Seguro de Eliminar este Registro?\");'
				   <img src='img/equis.gif' title='Eliminar' heigth='25' width='25'>Eliminar</a></td>
 
						</tr>
        		      </table>";
     	  $total +=$monto;
		  $ntotal = number_format($total,2,',','.');
					  
            endwhile;
$dtotal = "SELECT COUNT(*) AS tot FROM gastos1";
$totgas = @pg_query($connect,$dtotal);
while($select1 = @pg_fetch_array($totgas)):
     $gasto    = $select1['tot'];
     echo"<table align='center' border='1' bordercolor='#FFCC99'>
	      <tr class='sr'>
            <td width='150' style='color:#000000'>Cantidad de Gastos
			<td width='150' align='right'>$gasto
		  </tr></table>";
endwhile;
echo "<br><table align='center' border='1' bordercolor='#FFCC99' bgcolor='#99CC00'>
	        <tr class='sr'>
	          <td width='150' style='color:#000000'>Total
			  <td width='150' align='right'>$ntotal
  		    </tr></table>";
 
			
?>
</form>
</body>
</html>
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 SALVADOR

problema con una variable

Publicado por SALVADOR (125 intervenciones) el 23/07/2014 18:00:23
Te sugiero que le quites el @ a las intrucciones a ver si te manda algun error, en base a eso vemos como lo solucionamos.

De entrada veo que tienes acentos en tus variables, $día por ejemplo, no estoy muy seguro que esto sea permitido.

$fechagasto = $anio."-".$mes."-".$día;

Tambien te sugiero que aunque $monto sea numerico, lo pongos en comilla simple, de igual forma, requieres comilla simple en $tipogasto

1
2
3
4
5
6
7
8
9
$guardar = "INSERT INTO gastos1(
						cod_tipo_gasto,
						descripcion,
						monto,
						fecha) 
				 VALUES ($tipogasto,
				        '$descrip',
						 $monto,
     					'$fechagasto')";

Basicamente creo que tus errores son de sintaxis.

Avisame.
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

problema con una variable

Publicado por zendi (824 intervenciones) el 23/07/2014 23:06:11
Que tal Salvador, realice lo que me dijiste, pero continua el problema, francamente le he dado muchas vueltas pero no veo cual es el error, es increible esto, he colocado echo al INSERT y en realidad si trae el valor de las variables pero no actualiza la base de datos. Hay un detalle que no percibo.

esta es la tabla que se debe actualizar:
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE gastos1
(
  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
)

que puedes ver, que yo no veo?
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 SALVADOR

problema con una variable

Publicado por SALVADOR (125 intervenciones) el 24/07/2014 00:27:48
Podrias poner un ejemplo de un insert para ver los valores que le estas enviando a la base de datos ?
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

problema con una variable

Publicado por zendi (824 intervenciones) el 24/07/2014 01:55:53
Este es el famoso insert con los valores enviados por el formulario:
1
INSERT INTO gastos1( cod_tipo_gasto, descripcion, monto, fecha) VALUES ('2', 'ASCENSORES', 100, '2014-07-23')
la tabla tiene 5 campos, pero por supuesto el campo codigo es serial y debiera autoincrementarse y no habria problema, no hace falta enviarle una variable.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE gastos1
(
  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
)
WITHOUT OIDS;
ALTER TABLE gastos1 OWNER TO postgres;
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 SALVADOR

problema con una variable

Publicado por SALVADOR (125 intervenciones) el 24/07/2014 02:18:36
Prueba poniendo comillas simples al monto a ver que pasa, realmente no veo ninguna falla, solo me salta eso para que no este actualizando.

prueba y me avisas
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

problema con una variable

Publicado por zendi (824 intervenciones) el 24/07/2014 02:56:28
Bueno ya lo resolvi, aplique lo de: DIVIDE Y VENCERAS, el asunto aqui es que en el action del formulario:
1
<form action="AgregaGastos.php" method='POST'>
estoy llamando el mismo formulario, y no es asi, creé otro codigo asi:
1
<form action="ingresagastos.php" method='POST'>
y ahora si lo hace.
este es el codigo que creé:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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);
$día   = substr($fecha,0,2);
$fechagasto = $anio."-".$mes."-".$día;
///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);
header("location:AgregaGastos.php");
?>



Aunque es extraño todo esto.
Gracias por tu anuencia y la ayuda que me brindaste.

avisame que te parece.
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 SALVADOR

problema con una variable

Publicado por SALVADOR (125 intervenciones) el 24/07/2014 18:20:31
Excelente, si asi te funciona esta perfecto, creo que en cuanto a programacion el 30% de un programa es saber instrucciones, lo demas es saber aplicarlas, y lo has hecho muy bien. felicidades.

Suerte, yo tambien aprendi algo esta vez.

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