Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/INAEM2021/Arrays/ejercicios»

De WikiEducator
Saltar a: navegación, buscar
(Tienda de verduras)
(Tienda de verduras)
Línea 251: Línea 251:
 
?>
 
?>
 
</source>
 
</source>
 
  
  
Línea 258: Línea 257:
 
*Tras la compra se visualizará la factura del producto siempre que haya unidades
 
*Tras la compra se visualizará la factura del producto siempre que haya unidades
 
*Se mostrará las unidades que quedan de cada producto
 
*Se mostrará las unidades que quedan de cada producto
 +
{{plegable|hide|Posible solución|
 +
<source lang=php>
 +
 +
 +
<?php
 +
$tienda = [
 +
    'lechuga' => ['unidades' => 200,
 +
        'precio' => 0.90],
 +
    'tomates' => ['unidades' => 2000,
 +
        'precio' => 2.15],
 +
    'cebollas' => ['unidades' => 3200,
 +
        'precio' => 0.49],
 +
    'fresas' => ['unidades' => 4800,
 +
        'precio' => 4.50],
 +
    'manzanas' => ['unidades' => 2500,
 +
        'precio' => 2.10],
 +
];
 +
if (isset($_POST['submit'])) {
 +
//Leo la compra
 +
    $compra = $_POST['compra'];
 +
 +
//generar la factura
 +
//Para ello leemos cada producto comprado y voy actualizando
 +
 +
    $factura = "";
 +
    $total = 0;
 +
    foreach ($compra as $producto => $unidades) {
 +
        if ($unidades > 0) { //solo si he comprado, si no, no incluyo en la factura
 +
            $precio = $tienda[$producto]['precio'];
 +
            if ($unidades > $tienda[$producto]['unidades'])
 +
                $unidades = $tienda[$producto]['unidades'];
 +
            $subtotal = $precio * $unidades;
 +
 +
            //Para establecer plural en la palabra unidad o unidades
 +
            $plural = $unidades > 1 ? "es" : "";
 +
 +
            $factura .= "$unidades unidad$plural de $producto a $precio = $subtotal<br />";
 +
            $total = $total + $subtotal;
 +
        }
 +
    }
 +
    $factura .= "Total = $total Euros";
 +
 +
 +
    //generar un informe con los productos que quedan
 +
    //Lo podría hacer en el bucle anterior, es muy parecido
 +
    $informe = "";
 +
    foreach ($compra as $producto => $unidades) {
 +
        if ($unidades > 0) { //solo si he comprado, si no, no incluyo en la factura
 +
            $unidades_iniciales = $tienda[$producto]['unidades'];
 +
            if ($unidades > $unidades_iniciales)
 +
                $unidades = $unidades_iniciales;
 +
 +
            $resto_unidades = $unidades_iniciales - $unidades;
 +
            $informe .= "De $producto había $unidades_iniciales y quedan $resto_unidades unidades.<br />";
 +
        }
 +
    }
 +
 +
}
 +
 +
?>
 +
<!doctype html>
 +
<html lang="en">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <meta name="viewport"
 +
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 +
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 +
    <title>Document</title>
 +
</head>
 +
<body>
 +
<fieldset>
 +
    <legend>Datos para comprar</legend>
 +
    <form action="index.php" method="post">
 +
        <?php
 +
        foreach ($tienda as $producto => $datos) {
 +
            echo "<label for='$producto'>" . ucfirst($producto) . "</label> ({$datos['precio']})€&nbsp&nbsp";
 +
            echo "<input type='text' name='compra[$producto]' id='$producto' /> <br />\n";
 +
        }
 +
        ?>
 +
        <input type="submit" value="Comprar" name="submit">
 +
    </form>
 +
    <!--Visualizar la factuar -->
 +
</fieldset>
 +
<?php if (isset($factura)): ?>
 +
    <h1>Factura </h1>
 +
    <fieldset>
 +
        <legend>Detalle de la factura</legend>
 +
        <?= $factura ?>
 +
    </fieldset>
 +
    <fieldset>
 +
        <legend>Informe de estado de la tienda</legend>
 +
        <?= $informe ?>
 +
    </fieldset>
 +
<?php endif ?>
 +
</body>
 +
</html>
 +
</source>
 +
}}
  
 
===Contar accesos de usuarios identificados===
 
===Contar accesos de usuarios identificados===

Revisión de 21:48 8 mar 2022





Icon activity.jpg

Array de colores

Creamos un array con 5 colores y posteriormente mostramos un título con cada uno de esos colores






Icon activity.jpg

Selecionar un elemento aleatorio de un array

En el caso anterior, seleccionamos un elemento aleatorio del array y mostramos de ese color el título






Icon activity.jpg

Array de 5 ciudades

Crea un array indexado con 5 valores de ciudades y recórrelo con un for y con un foreach. Observa las diferencias.

Cara a nuestra formación intentaremos usar siempre un foreach




Solución



Icon activity.jpg
Actividad
Crea un array con 10 notas aleatorias y posteriormente las visualizas obteniendo los valores

estadísticos de la media, máxima y mínima


Solución



Icon activity.jpg
Actividad
Crea un array con imagenes aleatorias y luego haz que se carguen cada 5 segundos de forma aleatoria



Icon present.gif
Tip: Para recargar de forma periódica la página pasados unos segundos podemos usar el meta de html
<META HTTP-EQUIV=Refresh CONTENT="5; URL=vuestra_pagina.php">


"https://image.shutterstock.com/image-photo/young-woman-skateboarder-skateboarding-city-600w-664570948.jpg"
"https://gratisography.com/wp-content/uploads/2019/05/shutterstock-its-not-stock-block-new.jpg"
"https://www.cerotec.net/data/fotos/gratisography.jpg"
"https://cdn.pixabay.com/photo/2019/09/29/20/34/athens-4514311__340.jpg"
"https://cdn.pixabay.com/photo/2019/10/24/18/36/forest-4574893__340.jpg"
"https://cdn.pixabay.com/photo/2015/09/26/13/25/halloween-959049__340.jpg"
"https://cdn.pixabay.com/photo/2019/09/11/09/27/people-4468350__340.jpg"
"https://cdn.pixabay.com/photo/2019/10/23/18/58/malai-4572548__340.jpg"
"https://cdn.pixabay.com/photo/2019/06/25/05/19/waterfall-4297450__340.jpg"
"https://cdn.pixabay.com/photo/2019/10/23/10/47/aesthetic-4571211__340.jpg"
"https://cdn.pixabay.com/photo/2019/10/23/18/32/freudenberg-4572410__340.jpg"

Tienda de verduras

Dada una tienda de verduras con los siguientes productos

$productos = [
    'lechuga' => ['unidades' => 200,
                   'precio' => 0.90],
    'tomates' =>['unidades' => 2000,
                 'precio' => 2.15],
    'cebollas' =>['unidades' => 3200,
                  'precio' => 0.49],
    'fresas' =>['unidades' => 4800,
                'precio' => 4.50],
    'manzanas' =>['unidades' => 2500,
                  'precio' => 2.10],
];
  • Realiza una aplicación con un formulario para poder comprar productos
  • Tras la compra se visualizará la factura del producto siempre que haya unidades
  • Se mostrará las unidades que quedan de cada producto

Contar accesos de usuarios identificados



Icon activity.jpg

Actividad

Creamos una aplicación dónde los usuarios se identifican (una caja de texto para identificarse)
Luego iremos contando cada vez que un usuario hace un click





Vamos a realizar un recorrido de un array asociativo de varios niveles.
Realizaremos un estudio del array y luego lo recorreremos


Icon activity.jpg

Actividad

Dado un fichero que contiene un array asociativo
El array contiene información de cantantes y de cada cantante su nombre, su década y canciones que tiene
Se trata que trabajes en dos aspectos que se complementas
  1. Entender y explicar el contenido del array, es decir si es asociativo o indexado y los indices que tiene. Si una posición es un array a su vez procedemos a explicarlo igualmente
  2. Posteriormente lo recorreremos mostrando información de los cantantes y para cantante sus canciones
Para hacer esta parte facilito un pequeño css y consistiría en aplicar el div cantante y el div canciones



Ficheros
Artista.pdf Este fichero es un css para el ejercicios

Contenido del ArrayAsociativo.php

Planteando la solución

Contenido del array

Para ver el array una buena forma es cargarlo en un fichero php y hacer o bien un var_dump o bien un print_r
<?php
 
require_once ("datos.php");
 
var_dump( $artistas );
 
 
?>
  • A partir de él podemos mostrar la siguiente imagen que describe el aray

ArrayComplejo.png

  • Observamos que en primera instancia tengo un array asociativo de 6 índices cuyos valores son
185711, 32841, 84062, 84430, 84221, 118504
  • Cada posición tiene como valor un array asociativo de 4 posiciones cuyos índices tiene los valores
name decades link canciones
  • La posición name directamente tiene un valor string que es el nombre del artista
  • La posición decades tiene un valor string que es la década de ese cantante
  • La posición link tiene un valor string que es un url a una página con información sobre el artista
  • La posición canciones es un array indexado de tantas posicione como canciones tenga el artista
  • Cada posición del array indexado canciones es un array asociativo con dos índices
title link
  • La posición title es un string con el título de la canción
  • La posición link es un string con un url donde se puede oir la canción (Actualmente ya no están alojadas en esa posición)