PHP - Como evitar "Undefined index"

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como evitar "Undefined index"

Publicado por Sebastian Bolivar Tapias (13 intervenciones) el 16/01/2017 18:39:53
Saludos, estoy haciendo una pequeña tabla que me sirve para calcular el precio de venta y costo de unos productos. Es un formulario simple que al darle unos datos realiza los cálculos que necesito, pero cuando entro a la página por primera vez me salen los siguientes errores por que no se han definido las variables necesarias. Cuando presiono el botón de enviar todos los errores desaparecen porque ya las variables tienen un valor, quisiera saber de qué forma puedo evitar que me salgan estos errores antes de presionar el botón.

Gracias por su colaboración.


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
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
<?php
$valor1 = $_POST['T1'];
$valor2 = $_POST['T2'];
$valor3 = $_POST['T3'];
$valor4 = $_POST['T4'];
$porcentagedeliquidacion = $_POST['T5'];
 
$descuentoreal = ($valor2) / 100;
$valordescuento = $valor1 * $descuentoreal;
$costo = $valor1 - $valordescuento;
$ivareal = $costo *0.19;
 
$precioventa = ( (($costo * $porcentagedeliquidacion) + $costo) * 1.19);
$precioventasiniva = $precioventa / 1.16;
$calculodelcosto = $valor3 / 1.68;
$redondearpv = $valor4 / 1.19;
 
?>
 
<div>
 
<form method="post" action="" name="editor_productos_nuevos" id="editor_productos_nuevos">
 
<table class="tg" border="1" style="undefined;table-layout: fixed;">
<colgroup>
<col style="width: 201px">
<col style="width: 230px">
<col style="width: 161px">
</colgroup>
  <tr><!--fila 1-->
    <th class="tg-031e" colspan="3">EDITOR PRODUCTOS NUEVOS</th>
  </tr>
  <tr><!--fila 2-->
    <td class="tg-031e">DATOS</td>
    <td class="tg-031e" colspan="2">RESULTADOS</td>
  </tr>
  <tr><!--fila 3-->
    <td class="tg-031e"><input type="number" name="T1" id="costo" autocomplete="off" value="0"></td>
    <td class="tg-031e"><?php echo "$" . number_format($valor1,2,",","."); ?></td>
    <td class="tg-031e">&nbsp;</td>
  </tr>
  <tr><!--fila 4-->
    <td class="tg-yw4l"></td>
    <td class="tg-yw4l2">VLR DESCUENTO=&nbsp;</td>
    <td class="tg-yw4l"><?php echo "$" . number_format($valordescuento,2,",",".") ;?></td>
  </tr>
  <tr><!--fila 5-->
    <td class="tg-yw4l1">%DESCUENTO</td>
    <td class="tg-yw4l1"><?php  echo $valor2 . "%";?></td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 6-->
    <td class="tg-yw4l">
 
    <input type="number" name="T2" id="descuento" min="0" max="100" value="0">
 
    </td>
    <td class="tg-yw4l2">COSTO UNITARIO TOTAL=&nbsp;</td>
    <td class="tg-yw4l"><?php echo "$" . number_format($costo,2,",","."); ?></td>
  </tr>
  <tr><!--fila 7-->
    <td class="tg-yw4l1">% LIQUIDACIÓN</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 8-->
    <td class="tg-yw4l"><p>
    	<select name="T5">
        	<option value="0.45">REPUESTOS</option>
            <option value="0.22">LLANTAS 22%</option>
            <option value="0.30">LLANTAS 30%</option>
        </select>
    </p></td>
    <td class="tg-yw4l2">PRECIO VENTA=&nbsp;</td>
    <td class="tg-yw4l"><?php echo "$" . number_format($precioventa,2,",",".") ?></td>
  </tr>
  <tr><!--fila 9-->
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 10-->
    <td class="tg-yw4l1" colspan="3">CALCULOS INDIVIDUALES</td>
  </tr>
  <tr><!--fila 11-->
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 12-->
    <td class="tg-yw4l1" colspan="3">COSTO DESDE EL PRECIO DE VENTA</td>
  </tr>
  <tr><!--fila 13-->
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 14-->
    <td class="tg-yw4l1">PRECIO VENTA (/1.68)</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 15-->
    <td class="tg-yw4l"><input type="number" name="T3" id="costo_desde_precio_venta" autocomplete="off" value="0"></td>
    <td class="tg-yw4l1"><?php echo "$" . number_format($valor3,2,",","."); ?></td>
    <td class="tg-yw4l"><?php echo "$" . number_format($calculodelcosto,2,",","."); ?></td>
  </tr>
  <tr><!--fila 16-->
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 18-->
    <td class="tg-yw4l1" colspan="3">REDONDEAR PRECIO VENTA</td>
  </tr>
    <td class="tg-yw4l1">PRECIO VENTA (/1.19)</td>
    <td class="tg-yw4l">&nbsp;</td>
    <td class="tg-yw4l">&nbsp;</td>
  </tr>
  <tr><!--fila 19-->
    <td class="tg-yw4l"><input type="number" name="T4" id="redondear_precio_venta" autocomplete="off" value="0"></td>
    <td class="tg-yw4l"><?php echo "$" . number_format($valor4,2,",","."); ?></td>
    <td class="tg-yw4l"><?php echo "$" . number_format($precioventasiniva,2,",","."); ?></td>
  </tr>
  <tr><!--fila 20-->
    <th class="tg-031e" colspan="3"><input type="submit" value="Calcular" name="B1"> </th>
  </tr>
</table>
 
</form>
</div>
captura1
captura2
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

Como evitar "Undefined index"

Publicado por Brian (17 intervenciones) el 16/01/2017 18:50:25
El problema es que estas igualando las variables a un POST que nunca se realizo, cambia tus primeras lineas por esto:

1
2
3
4
5
6
7
8
9
$valor1 = (isset($_POST['T1'])) ? $_POST['T1'] : '';
 
$valor2 =(isset($_POST['T2'])) ? $_POST['T2'] : '';
 
$valor3 = (isset($_POST['T3'])) ? $_POST['T3'] : '';
 
$valor4 = (isset($_POST['T4'])) ? $_POST['T4'] : '';
 
$porcentagedeliquidacion = (isset($_POST['T5'])) ? $_POST['T5'] : '';

Es un IF en una linea, pregunta si $_POST existe, manda $_POST y si no manda '' vacio es una forma de evitar tu problema.
Saludos

PD:

Igualmente te va a fallar cuando queres dividir esto:
1
$descuentoreal = ($valor2) / 100;

Lo conveniente seria que metas todo dentro de un if, quedaria asi:

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
if(isset($_POST['T1'])){
 
$valor1 = $_POST['T1'];
 
$valor2 = $_POST['T2'];
 
$valor3 = $_POST['T3'];
 
$valor4 = $_POST['T4'];
 
$porcentagedeliquidacion = $_POST['T5'];
 
 $descuentoreal = ($valor2) / 100;
 
$valordescuento = $valor1 * $descuentoreal;
 
$costo = $valor1 - $valordescuento;
 
$ivareal = $costo *0.19;
 
 $precioventa = ( (($costo * $porcentagedeliquidacion) + $costo) * 1.19);
 
$precioventasiniva = $precioventa / 1.16;
 
$calculodelcosto = $valor3 / 1.68;
 
$redondearpv = $valor4 / 1.19;
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como evitar "Undefined index"

Publicado por Sebastian (13 intervenciones) el 16/01/2017 19:08:32
Saludos era justo lo que necesitaba, agradezco mucho tu respuesta.
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