<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form>
Nombre: <input type="text" name="nombre">
Sueldo: <input type="number" name="sueldo">
<input type="submit">
</form>
<?php
session_start();
$nombre = filter_input(INPUT_GET, "nombre");
$sueldo = filter_input(INPUT_GET, "sueldo", FILTER_VALIDATE_INT);
$borrar = filter_input(INPUT_GET, "borrar");
if (!empty($borrar)) {
unset($_SESSION['empleados'][$borrar]);
}
if (!empty($nombre) && is_numeric($sueldo)) {
//Si empleados está vacía añadimos directamente el valor
if (empty($_SESSION['empleados'])) {
$_SESSION['empleados'][$nombre] = $sueldo;
} else {
//Creamos un array para copiar empleados
$auxiliar = [];
foreach ($_SESSION['empleados'] as $c => $v) {
//Si el sueldo es menor lo metemos antes
if ($sueldo < $v) {
$auxiliar[$nombre] = $sueldo;
}
//Y siempre copiamos el elemento, lo que pasa es
//Que si el sueldo era menor lo hemos añadido en
//el if anterior
$auxiliar[$c] = $v;
}
//Si después de recorrer el array no lo hemos introducido
//Es que debe ir al final
if (!isset($auxiliar[$nombre])) {
$auxiliar[$nombre] = $sueldo;
}
//Sustituimos el array empleados por la copia
$_SESSION['empleados'] = $auxiliar;
}
}
if (!isset($_SESSION['empleados'])) :
$_SESSION['empleados'] = [];
endif;
?>
<table>
<tr><th>Empleado</th><th>Sueldo</th><th>Acciones</th></tr>
<?php
foreach ($_SESSION['empleados'] as $c => $v):
?>
<tr><td><?= $c ?></td><td><?= $v ?></td>
<td><a href="?borrar=<?= $c ?>">Borrar</a></td></tr>
<?php
endforeach;
?>
</table>
</body>
</html>
Mes: marzo 2019
Ejercicio empleados
Vamos a realizar un ejercicio en el cual tendremos el mantenimiento de una lista de empleados. Tendremos una caja con el nombre y una con el sueldo. Cuando el usuario le de a enviar nos añadirá el empleado a la variable de sesión ‘Empleados’ con la clave el nombre del empleado y valor el sueldo.
Ej: Juan 3000
$_SESSION[‘empleados’][‘Juan’]=>3000;
Hay que hacer las siguientes opciones:
1.- Poder dar de alta empleados
2.- Visualizarlos en una tabla
3.- Añadir la opción para borrarlos
4.- Poder cambiar el sueldo de un empleado
5.- (Complicada) Poner el empleado justo antes del primer empleado que tenga más sueldo que él.
Funciones Array (V)
Funciones de búsqueda en arrays:
Ejemplos:
$tabla=range("a","j");
if (in_array("b",$tabla)){
echo "Está la b<br/>";
}
if (in_array("w",$tabla)){
echo "Está la w<br/>";
}
$pos= array_search("b", $tabla);
echo "|".$pos."|<br/>";
$pos= array_search("w", $tabla);
echo "|".$pos."|<br/>";
$asociativa=array("a"=>1,"b"=>2,"c"=>3,"d"=>4,);
$pos= array_search(3, $asociativa);
echo "|".$pos."|<br/>";
if (array_key_exists("d",$asociativa)){
echo "Existe la clave d<br/>";
}
Ejercicio añadir nombres a variable de sesión
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="get">
Nombre:
<input type="text" name="nombre">
<input type="submit">
<input type="submit" name="reset" value="reset">
</form>
<?php
session_start();
$nombre = filter_input(INPUT_GET, "nombre");
$reset = filter_input(INPUT_GET, "reset");
$borrar = filter_input(INPUT_GET, "borrar");
if (is_numeric($borrar)){
//unset($_SESSION['lista'][$borrar]);
array_splice($_SESSION['lista'],$borrar,1);
}
if (empty($reset)) {
if (!empty($nombre)) {
$_SESSION['lista'][] = $nombre;
}
foreach ($_SESSION['lista'] as $c=>$elemento) {
echo $elemento." |<small><a href='?borrar=$c'>Borrar</a></small> |<br>";
}
} else {
$_SESSION['lista'] = [];
}
?>
</body>
</html>
Lo mismo con form
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="get">
Nombre:
<input type="text" name="nombre">
<input type="submit">
<input type="submit" name="reset" value="reset">
</form>
<?php
session_start();
$nombre = filter_input(INPUT_GET, "nombre");
$reset = filter_input(INPUT_GET, "reset");
$borrar = filter_input(INPUT_POST, "borrar");
if (is_numeric($borrar)) {
//unset($_SESSION['lista'][$borrar]);
array_splice($_SESSION['lista'], $borrar, 1);
}
if (empty($reset)) {
if (!empty($nombre)) {
$_SESSION['lista'][] = $nombre;
}
foreach ($_SESSION['lista'] as $c => $elemento) {
?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>"><?= $elemento ?>
<input type="hidden" name="borrar" value="<?= $c ?>">
<input type="submit" name="reset" value="Borrar">
</form>
<?php
}
} else {
$_SESSION['lista'] = [];
}
?>
</body>
</html>
Funciones Array (IV)
Obtener partes de un array y modificarlo:
Ejemplos:
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 2);
// $entrada ahora es array("rojo", "verde")
muestraTabla($entrada);
$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 2,1);
// $entrada ahora es array("rojo", "verde","amarillo")
muestraTabla($entrada);
$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 1, -1);
// $entrada ahora es array("rojo", "amarillo")
muestraTabla($entrada);
$entrada = array("rojo", "verde", "azul", "amarillo");
$foo=array_splice($entrada, 1, count($entrada), "naranja");
// $entrada ahora es array("rojo", "naranja")
//$foo es array("verde","azul","amarillo")
muestraTabla($entrada);
muestraTabla($foo);
$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, -1, 1, array("negro", "granate"));
// $entrada ahora es array("rojo", "verde",
// "azul", "negro", "granate")
muestraTabla($entrada);
$entrada = array("rojo", "verde", "azul", "amarillo");
array_splice($entrada, 3, 0, "púrpura");
// $entrada ahora es array("rojo", "verde",
// "azul", "púrpura", "amarillo");
muestraTabla($entrada);
$tabla=range("a","j");
$a=array_slice($tabla,3);
muestraTabla($a);
$a=array_slice($tabla,3,2);
muestraTabla($a);
$a=array_slice($tabla,-3);
muestraTabla($a);
$a=array_slice($tabla,-3,1);
muestraTabla($a);
$a=array_slice($tabla,-4,-2);
muestraTabla($a);
Funciones Array (III)
Funciones para crear arrays con rangos o valores:
Ejemplos:
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
$a = range(1, 5);
muestraTabla($a);
$b = range(1, 100, 10);
muestraTabla($b);
$c = range('a', 'e');
muestraTabla($c);
$d = array_fill(2, 10, "pepe");
muestraTabla($d);
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
// el resultado es array(12, 10, 9, 0, 0)
muestraTabla($result);
$result = array_pad($input, -7, 4);
// el resultado es array(4, 4, 4, 4, 12, 10, 9)
muestraTabla($result);
$result = array_pad($input, 2, "noop");
// sin relleno
muestraTabla($result);
Frameworks para desarrollar REST ws
Vídeos de clase
https://www.youtube.com/channel/UCpSt6arMgODWN5584jZ41TQ/videos?shelf_id=0&view=0&sort=dd
Ejemplos arrays
<?php
$a=[1,2,3,4];
$suma=0;
while(!empty($a)){
$suma+=array_pop($a);
}
echo $suma;
print_r($a);
echo "<hr>";
echo contarPalabras("Hola que tal, yo estoy muy bien");
echo "<hr>";
echo palabraMasLarga("en un lugar de la mancha");
function contarPalabras($cadena){
return count(explode(" ",$cadena));
}
function palabraMasLarga($cadena){
$palabras= explode(" ", $cadena);
$larga="";
foreach($palabras as $palabra){
if(strlen($palabra)>strlen($larga)){
$larga=$palabra;
}
}
return $larga;
}
Funciones array (II)
Pasar de cadena a array y viceversa:
Ejemplos:
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
$cadena = "hola que tal estamos";
$tabla = explode(' ', $cadena);
muestraTabla($tabla);
$lista = "jamon,pollo,bistec,fuet";
$carne = explode(",", $lista);
muestraTabla($carne);
$letras = str_split($lista);
muestraTabla($letras);
echo implode('-',$tabla)."<br/>";
echo implode('***-***',$carne)."<br/>";
echo implode('.',$letras)."<br/>";