<!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/>";