Soluciones examen 2

/*
 * * MySQLi procedural * MySQLi orientat a objectes * PDO
 * 
 * MySql MySqli PDO
 */


$sql = "insert into clientes (mail,password) values (:mail,:password)";
$st = $conn->prepare($sql);
$st->execute(array(':mail' => 'pepe@pepe.com', ':password' => '1234'));


$sql = "SELECT count(idproductos) as total FROM productos";
$st = $conn->prepare($sql);
$st->execute();
$row = $st->fetch();
echo "El número de productos es: " . $row['total'] . "<br/>";


$sql = "SELECT sum(importe) as total FROM pedido";
$st = $conn->prepare($sql);
$st->execute();
$row = $st->fetch();
echo "La suma de los importes de los pedidos es: " . $row['total'] . "<br/>";


$sql = "delete from productos where idproductos=:idproductos";
$st = $conn->prepare($sql);
$st->execute(array(':idproductos' => 5));

$sql = "SELECT mail FROM clientes";
$st = $conn->prepare($sql);
$st->execute();
while ($row = $st->fetch()) {
 echo $row['mail'] . "<br/>";
}

$sql = "SELECT mail FROM clientes where mail like '%@gmail.com'";
$st = $conn->prepare($sql);
$st->execute();
while ($row = $st->fetch()) {
 echo $row['mail'] . "<br/>";
}


$sql = "insert into clientes (mail, password) values (:mail, :password)";
$st = $conn->prepare($sql);
for ($i = 0; $i < 10; $i++)
 $st->execute(array(':mail' => 'test@test.com', ':password' => '1234'));

function import_total_IVA($idclient) {
 global $conn;
 try {
 $sql = "select sum(import*(1+iva)) as total from comandes join clients using (idclients) where idclients=:idclients";
 $stmt = $conn->prepare($sql);
 $stmt->execute(array(':idclients' => $idclient));
 $fila = $stmt->fetch();
 $total = $fila['total'];
 return $total;
 } catch (Exception $ex) {
 return 0;
 }
}

Soluciones examen 1

//56

function lamaslarga($cad1, $cad2) {
 if (strlen($cad1) > strlen($cad2)) {
 return $cad1;
 } else {
 return $cad2;
 }
}

include_once 'funciones.php';

$f = fopen(‘alumnos.txt ’, ‘r’);

$colores = array("rojo", "naranja", "amarillo", "verde", "cian", "azul", "violeta");

if ($resultado) {
 ?> <h1>Bien</h1> <?php } else { ?> <h2>Mal</h2> <?php
}

function invertir_cad($tabla) {
 for ($i = 0; $i < count($tabla); $i++) {
 $tabla2[$i] = strrev($tabla[$i]);
 } return $tabla2;
}

function tablero($numCeldas) {
 $num = 0;
 echo "<table border=1>";
 for ($i = 0; $i < $numCeldas; $i++) {
 echo "<tr>";
 for ($j = 0; $j < $numCeldas; $j++) {
 echo "<td>" . ($i + $j) . "</td>";
 } 
 echo "</tr>";
 } echo "</table>";
}

Ejemplos repaso

 <?php
 $a = 5;
 echo 'Hola <b>que</b> tal?';
 if ($a == 5) {
 echo '<h1>Cabecera con echo</h1>'
 . '<h2>lalallalala</h2>'
 . '<p>texto tralalala</p>';
 }

 if ($a == 5) {
 ?>
 <h1>Cabecera sin echo</h1>
 <?php
 }

 $p = "cadena";
 $n = 5.5;
 $b = false;
 echo $p;
 $p = 74;
 echo $p;
 $tabla = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
 $tabla2 = [1, 2, 3, 4];

 $tabla3 = ['ana' => 1, "juan" => 3, "rosa" => 5];
 shuffle($tabla);
 for ($i = 0; $i < count($tabla); $i++) {
 echo $tabla[$i] . "<br/>";
 }
 sort($tabla);
 foreach ($tabla as $elemento) {
 echo $elemento . "<br/>";
 }

 foreach ($tabla3 as $clave => $valor) {
 echo $clave . "--->" . $valor . "<br/>";
 }

 echo nombredelafuncion(4, 4);

 echo "##" . levenshtein("Barcelona", "Bracelona");

 cabecera("Ola k ase???");

 echo strrev("Ola k ase???");

 function nombredelafuncion($parametro1, $parametro2) {
 return $parametro1 + $parametro2;
 }

 function cabecera($texto) {
 ?>
 <h1><?= $texto ?></h1>
 <?php
 }

 $server = "localhost";
 $user = "root";
 $password = "";
 $db = "tienda";

 try {
 $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password);
 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $conn->query("SET NAMES 'utf8';");
 } catch (PDOException $e) {
 echo "Connection failed: " . $e->getMessage();
 }

 //Inserta un producto
 $sql = "insert into productos (nombre,precio) values (:nombre,:precio)";
 $st = $conn->prepare($sql);
 $st->execute(array(
 ':nombre' => 'Tuerca',
 ':precio' => 10
 ));
 echo "Filas afectadas: " . $st->rowCount() . "<br/>";
 echo "Id producto: " . $conn->lastInsertId();

 //Borra un producto
 $sql = "delete from productos where idproductos=:idproductos";
 $st = $conn->prepare($sql);
 $st->execute(array(
 ':idproductos' => 11
 ));
 echo "Filas afectadas: " . $st->rowCount() . "<br/>";

 //Editar un producto
 $sql = "update productos set nombre=:nombre, precio=:precio where idproductos=:idproductos";
 $st = $conn->prepare($sql);
 $st->execute(array(
 ':idproductos' => 14,
 ':nombre' => 'arandela',
 ':precio' => 100
 ));
 echo "Filas afectadas: " . $st->rowCount() . "<br/>";

 $sql = "insert into productos (nombre,precio) values (:n,:p)";
 $st = $conn->prepare($sql);
 for ($i = 0; $i < 10; $i++)
 $st->execute(array(
 ':n' => 'producto' . $i,
 ':p' => $i * 3
 ));
 
 $sql="select * from productos";
 $st=$conn->prepare($sql);
 $st->execute();
 while ($row=$st->fetch()){
 echo $row['nombre']."<br/>";
 }
 
 echo "<hr/>";
 $st->execute();
 $filas=$st->fetchAll();
 foreach($filas as $fila_individual){
 echo $fila_individual['nombre']."<br/>";
 }
 ?>

SQL ejercicio tienda

CREATE TABLE `tienda`.`productos` (
 `idproductos` INT NOT NULL AUTO_INCREMENT,
 `nombre` VARCHAR(50) NULL,
 `precio` DECIMAL(5,2) NULL,
 `descripcion` VARCHAR(400) NULL,
 PRIMARY KEY (`idproductos`));
 
 CREATE TABLE `tienda`.`clientes` (
 `idclientes` INT NOT NULL AUTO_INCREMENT,
 `mail` VARCHAR(100) NULL,
 `password` CHAR(32) NULL,
 `direccion` VARCHAR(200) NULL,
 `cpostal` CHAR(5) NULL,
 `ciudad` VARCHAR(50) NULL,
 PRIMARY KEY (`idclientes`));
 
 CREATE TABLE `tienda`.`pedidos` (
 `idpedidos` INT NOT NULL AUTO_INCREMENT,
 `idclientes` INT NULL,
 `fecha` DATETIME NULL,
 `importe` DECIMAL(6,2) NULL,
 `iva` DECIMAL(2,2) NULL,
 PRIMARY KEY (`idpedidos`));

 CREATE TABLE `tienda`.`pedidos_productos` (
 `idpedidos_productos` INT NOT NULL AUTO_INCREMENT,
 `idpedidos` INT NULL,
 `idproductos` INT NULL,
 `precio` DECIMAL(5,2) NULL,
 `cantidad` INT NULL,
PRIMARY KEY (`idpedidos_productos`)); ALTER TABLE `tienda`.`pedidos_productos` ADD INDEX `fk_productos_idx` (`idproductos` ASC); ALTER TABLE `tienda`.`pedidos_productos` ADD CONSTRAINT `fk_productos` FOREIGN KEY (`idproductos`) REFERENCES `tienda`.`productos` (`idproductos`) ON DELETE RESTRICT ON UPDATE NO ACTION; ALTER TABLE `tienda`.`pedidos_productos` ADD INDEX `fk_pedidos_idx` (`idpedidos` ASC); ALTER TABLE `tienda`.`pedidos_productos` ADD CONSTRAINT `fk_pedidos` FOREIGN KEY (`idpedidos`) REFERENCES `tienda`.`pedidos` (`idpedidos`) ON DELETE RESTRICT ON UPDATE NO ACTION; ALTER TABLE `tienda`.`pedidos` ADD INDEX `fk_clientes_idx` (`idclientes` ASC); ALTER TABLE `tienda`.`pedidos` ADD CONSTRAINT `fk_clientes` FOREIGN KEY (`idclientes`) REFERENCES `tienda`.`clientes` (`idclientes`) ON DELETE RESTRICT ON UPDATE NO ACTION;