sakila.php

<?php
class Sakila {

    private $server = "localhost";
    private $user = "root";
    private $password = "";
    private $db = "sakila";
    public $conn;

    function __construct() {
        try {
            $this->conn = new PDO("mysql:host=$this->server;dbname=$this->db", $this->user, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $this->conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $this->conn->exec("SET CHARACTER SET utf8");
        } catch (PDOException $e) {
            echo "Connection failed: " . $e->getMessage();
        }
    }

    
    function pepe(){
        return 3;
    }
    function getActors() {
        $sql = "select * from actor where 1=1";
        $query = $this->conn->query($sql);
        return $query->fetchAll();
    }

    function getActor($id) {
        $sql = "select * from actor where actor_id=$id";
        $query = $this->conn->query($sql);
        return $query->fetch();
    }

    /**
     * 
     * @param type $actor  array asociativo con los campos del actor
     * ejemplo: ['actor_id'=>1,'first_name'=>'Santiago','last_name'=>'Segura']
     */
    function updateActor($actor) {
        $sql = "update actor set first_name='" . $actor['first_name'] . "', last_name='" . $actor['last_name'] . "'
                where actor_id=" . $actor['actor_id'] . ";";
        $this->conn->exec($sql);
    }

    function deleteActor($id) {
        $sql = "delete from actor where actor_id=$id";
        $this->conn->exec($sql);
    }

    /**
     * Inserta un nuevo actor o devuelve el id si ya existe
     * @param string valor de first_name
     * @param string valor de last_name
     * @return int id
     */
    function newActor($first_name, $last_name) {
        if (!empty($first_name) && !empty($last_name)) {
            $sql = "select * from actor where first_name=:first_name and last_name=:last_name";
            $st = $this->conn->prepare($sql);
            $st->execute([':first_name' => $first_name, ':last_name' => $last_name]);
            if ($actor = $st->fetch()) {
                return $actor['actor_id'];
            }
            $sql = "insert into actor (first_name,last_name) values (:first_name,:last_name)";
            $st = $this->conn->prepare($sql);
            $st->execute([':first_name' => $first_name, ':last_name' => $last_name]);
            return $this->conn->lastInsertId();
        } else {
            return null;
        }
    }

    /**
     * Inserta una película en una categoría
     * @param int id de la categoría
     * @param string título de la película
     */
    function newFilm($category_id, $film) {

        $this->conn->beginTransaction();
        try {
            $sql = "insert into film(title,language_id) values (:film,1)";
            $st = $this->conn->prepare($sql);
            $st->execute([':film' => $film]);
            $film_id = $this->conn->lastInsertId();
            $sql = "insert into film_category(film_id,category_id) values($film_id,$category_id)";
            $this->conn->exec($sql);
            $this->conn->commit();
        } catch (PDOException $e) {
            echo $e->getMessage();
            $this->conn->rollBack();
        }
    }

    /**
     * Crea un select con todas las categorías
     */
    function selectCategory() {
        $sql = "select * from category";
        $q = $this->conn->query($sql);
        $categorias = $q->fetchAll();
        ?>
        <select name="category">
        <?php foreach ($categorias as $categoria) {
            ?>
                <option value="<?= $categoria['category_id'] ?>"><?= $categoria['name'] ?></option>
            <?php } ?>
        </select>
            <?php
        }

    }
    

Casino: Diseño

Deberemos construir una página de un casino con los siguientes apartados:

– Inicio
– Registro
– Fotos

Además incluiremos enlaces a los cuatro juegos que se van a jugar:

Slot Machine
Dados
Blackjack
Ruleta

Tendremos una página javascript, allí tendremos una variable ‘saldo’ que es el dinero del jugador y que de momento valdrá 100.

Ejemplo promesa

function promiseSqrt(value){
return new Promise(function (fulfill, reject){
console.log(‘START execution with value =’, value);
setTimeout(function() {
fulfill({ value: value, result: value * value });
}, 0 | Math.random() * 1000);
});
}

var p = [0,1,2,3,4,5,6,7,8,9];
p.reduce(
function (sequence, value) {
return sequence.then(function() {
return promiseSqrt(value);
}).then(function(obj) {
console.log(‘END execution with value =’, obj.value,
‘and result =’, obj.result);
});
},
Promise.resolve()
).then(function() {
console.log(‘COMPLETED’);
});

Plugin formulario de contacto

Un ejemplo tomado de aquí:

<?php
/*
Plugin Name: Formulario de contacto ejemplo
Plugin URI: http://example.com
Description: Un formulario de contacto de ejemplo para probar plugins
Version: 1.0
Author: Intelisen
Author URI: http://intelisen.com
*/

function html_form_code() {
 echo '<form method="post">';
 echo '<p>';
 echo 'Nombre (requerido) <br/>';
 echo '<input type="text" name="cf-name" pattern="[a-zA-Z0-9 ]+" value="' . ( isset( $_POST["cf-name"] ) ? esc_attr( $_POST["cf-name"] ) : '' ) . '" size="40" />';
 echo '</p>';
 echo '<p>';
 echo 'Email (requerido) <br/>';
 echo '<input type="email" name="cf-email" value="' . ( isset( $_POST["cf-email"] ) ? esc_attr( $_POST["cf-email"] ) : '' ) . '" size="40" />';
 echo '</p>';
 echo '<p>';
 echo 'Asunto (requerido) <br/>';
 echo '<input type="text" name="cf-subject" pattern="[a-zA-Z ]+" value="' . ( isset( $_POST["cf-subject"] ) ? esc_attr( $_POST["cf-subject"] ) : '' ) . '" size="40" />';
 echo '</p>';
 echo '<p>';
 echo 'Mensaje (requerido) <br/>';
 echo '<textarea rows="10" cols="35" name="cf-message">' . ( isset( $_POST["cf-message"] ) ? esc_attr( $_POST["cf-message"] ) : '' ) . '</textarea>';
 echo '</p>';
 echo '<p><input type="submit" name="cf-submitted" value="Enviar"></p>';
 echo '</form>';
}

function deliver_mail() {

 // Si se han enviado los datos, procesar
 if ( isset( $_POST['cf-submitted'] ) ) {

 // Sanear valores
 $name = sanitize_text_field( $_POST["cf-name"] );
 $email = sanitize_email( $_POST["cf-email"] );
 $subject = sanitize_text_field( $_POST["cf-subject"] );
 $message = esc_textarea( $_POST["cf-message"] );

 // Conseguir el mail del administrador
 $to = get_option( 'admin_email' );

 $headers = "From: $name <$email>" . "\r\n";

 // Si todo va bien, mensaje ok
 if ( wp_mail( $to, $subject, $message, $headers ) ) {
 echo '<div>';
 echo '<p>Gracias por contactar.</p>';
 echo '</div>';
 } else {
 echo 'Error inesperado';
 }
 }
}

function cf_shortcode() {
 
 deliver_mail();
 html_form_code();

}

add_shortcode( 'intelisen_contact_form', 'cf_shortcode' );