Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CASO DESARROLLADO 01
Caso desarrollado 1: Salario de empleados usando condicional simple:
Diseñar una aplicación web con PHP que permita determinar el salario bruto, descuento y salario
neto de un empleado, el cual ingresa el número total de horas trabajadas y selecciona la categoría
del empleado. Esta categoría determina el costo por hora del empleado.
La interfaz gráficainicialeslasiguiente:
• El salario bruto se determina mediante el producto de las horas trabajadas; el pago por hora
según la categoría del empleado.
• El descuento se calcula en base al 15 % del salario bruto.
• El salario neto es la sustracción del descuento sobre el salario bruto.
• La aplicación no deberá mostrar mensajes de error.
• Al presionar el botón Calcular, deberá mostrar los resultados correctos y, a la vez, los
valores ingresados en el formulario deberán mantenerse después de mostrado el resultado de la
aplicación.
• Los valores monetarios en la aplicación deberán mostrarse en el formato adecuado, es decir,
$ 1582.69 en vez de 1582.69.
• La aplicación debe mostrar los resultados tal como se muestra en la siguiente imagen:
CAP. 4: ESTRUCTURAS CONDICIONALES 123
Archivo: salario.php
<?php
error_reporting(0);
$empleado=$_POST['txtEmpleado']; else
$categoria=$_POST['selCategoria']; $selJ="";
$horas=$_POST['txtHoras']; if ($categoria=='Administrativo')
if ($categoria=='Jefe') $selA='SELECTED';
$selJ='SELECTED'; else
$selA="";
if ($categoria=='Operario')
$selO='SELECTED';
else
$selO="";
if ($categoria=='Practicante')
$selP='SELECTED';
else
$selP="";
?>
<tr>
<td>Salario Bruto</td>
<td>
<?php echo "$ ".number_format($sBruto, 2,'.','');?>
</td>
</tr>
<tr>
<td>Descuento</td>
<td>
<?php echo "$ ".number_format($descuento,2,'.',''); ?>
</td>
</tr>
<tr>
<td>Salario Neto</td>
<td>
<?php echo "$ ".number_format($sNeto,2,'.','');?></td>
</tr>
</table>
</form>
Comentarios:
error_reporting(0);
$empleado=$_POST['txtEmpleado'];
$categoria=$_POST['selCategoria'];
$horas=$_POST['txtHoras'];
Omitiremos los errores ocasionados por la impresión de variables antes de ser llenadas de valor,
si observamos la siguiente imagen notamos que el error se ocasiona por la no definición de la
variable txtEmpleado.
Para evitar este error usamos la instrucción error_reporƟng(0). Luego capturamos los valores
ingresados por el usuario en los controles del formulario usando la función $_POST.
txtHoras
selCategoria
selCategoria
txtEmpleado
btnCalcular btnLimpiar
Finalmente, capturamos los valores de los controles usando la función $_POST como el nombre
del empleado, categoría del empleado y las horas trabajadas.
CAP. 4: ESTRUCTURAS CONDICIONALES 125
if ($categoria=='Jefe')
$selJ='SELECTED';
else
$selJ="";
if ($categoria=='Administrativo')
$selA='SELECTED';
else
$selA="";
if ($categoria=='Operario')
$selO='SELECTED';
else
$selO="";
if ($categoria=='Practicante')
$selP='SELECTED';
else
$selP="";
Para poder mantener la categoría seleccionada por el usuario, se debe aplicar la propiedad
SELECTED, para lo cual se han creado variables para cada opción de la categoría, por ejemplo,
en la categoría Jefe la variable sería $selJ. Entonces, si el usuario selecciona la categoría Jefe
se llena la variable $selJ del valor SELECTED y así podrá mantenerla seleccionada después de
mostrado el resultado.
<tr>
<td width="150">Empleado</td>
<td><input type="text" name="txtEmpleado" size="70"
value="<?php echo $empleado; ?>" />
</td>
</tr>
Aquí se imprime el nombre seleccionado por el usuario en el mismo control txtEmpleado, aun
después de mostrada la información resultante.
<tr>
<td>Categoria</td>
<td>
<select name="selCategoria">
<option value="Jefe" <?php echo $selJ;?> >Jefe</option>
<option value="Administrativo" <?php echo $selA; ?> >
Administrativo </option>
<option value="Operario" <?php echo $selO; ?> >
Operario</option>
<option value="Practicante" <?php echo $selP; ?> >
Practicante</option>
</select>
</td>
</tr>
En líneas anteriores usamos variables para asignar la etiqueta SELECTED, según la opción del
menú de categorías seleccionadas; ahora se le asignará a cada una de las opciones después del
atributo VALUE, ya que el usuario podría seleccionar cualquiera de ellas.
126 DESARROLLO DE APLICACIONES WEB CON PHP
if ($categoría=='Jefe') $pagoHora=50;
if ($categoría=='Administrativo') $pagoHora=30;
if ($categoría=='Operario') $pagoHora=15;
if ($categoría=='Practicante') $pagoHora=5;
$sBruto=$pagoHora*$horas;
$descuento=$sBruto*15.0/100.0;
$sNeto=$sBruto-$descuento;
Ahora asignaremos el pago, por hora, según la categoría seleccionada. Como observamos, se ha
evaluado una a una las categorías, ya que estamos evaluando la condicional simple del If, ya que
de otra manera podríamos usar condicionales múltiples.
Luego se calcula en salario bruto ($sBruto), descuento ($descuento); recuerde que este se
divide con 15.0/100.0 para asegurar un valor fraccionario y finalmente el salario neto ($sNeto).
<td>Salario Bruto</td>
<td>
<?php echo "$ "
.number_format($sBruto,2,'.','');
?>
</td>
La impresión del valor salario bruto pudo haber sido mucho más simple como, por ejemplo:
number_format($variable,Cantidad_decimales,'simbolo_decimal','simbolo_millones');
Finalmente la impresión con number_format hace que el número 1500 tome forma de moneda
y se imprima correctamente; no olvidarse que la función solo permite asignar decimales pero
no muestra el símbolo de la moneda, por eso es que se imprime el símbolo $ directamente,
mediante la función echo, de la siguiente manera: