<input type="text" id="nombre"> <input type="text" id="cantidad"> <input type="button" id="boton" value="Llamada ajax"> <div id="resultado"></div> <script> document.getElementById("boton").addEventListener("click", function () { var pepe = new XMLHttpRequest(); pepe.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.getElementById('resultado').innerHTML = this.responseText; } } var nombre=document.getElementById('nombre').value; var cantidad=document.getElementById('cantidad').value; pepe.open("GET", "datos.php?nombre="+nombre+"&cantidad="+cantidad); pepe.send(); }) </script>
Categoría: PHP
Mantenimiento categorías
<!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <title>Mantenimiento categorías</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script> </head> <body> <?php require_once 'libreria.php'; $nombre = filter_input(INPUT_GET, 'nombre', FILTER_SANITIZE_STRING); $id = filter_input(INPUT_GET, 'idcategoria', FILTER_VALIDATE_INT); if (!empty($nombre)) { insertarCategoria($nombre); } if (!empty($id)) { borrarCategoria($id); } $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT); $nombre = filter_input(INPUT_GET, 'categoria', FILTER_SANITIZE_STRING); if (!empty($id) && !empty($nombre)) { editarCategoria($id, $nombre); } ?> <h1>Mantenimiento categorías</h1> <form>Nombre: <input type="text" name="nombre"><input type="submit" class="btn btn-success"></form> <hr/> <?php listadoCategorias(); ?> </body> </html>
<!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <title>Editar categoría</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script> </head> <body> <?php require_once 'libreria.php'; $id = filter_input(INPUT_GET, 'idcategoria', FILTER_VALIDATE_INT); if(!empty($id)){ $categoria=getCategoria($id); } ?> <form action="categorias.php"> <input type="hidden" name="id" value="<?=$categoria['idcategorias']?>"> Nombre: <input type="text" name="categoria" value="<?=$categoria['nombre']?>"> <input type="submit" class="btn btn-success"> </form> <a href="categorias.php">Volver a categorías</a> </body> </html>
<?php function conectar() { $server = "localhost"; $user = "root"; $password = ""; $db = "tienda"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password, [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $conn; } catch (Exception $ex) { echo $ex->getMessage(); } } function insertarCategoria($name) { try { $conn = conectar(); $st = $conn->prepare("insert into categorias (nombre) values (:name)"); $st->execute(['name' => $name]); } catch (Exception $ex) { echo $ex->getMessage(); } } function borrarCategoria($id) { try { $conn = conectar(); $st = $conn->prepare("delete from categorias where idcategorias=:id"); $st->execute(['id' => $id]); } catch (Exception $ex) { echo $ex->getMessage(); } } function editarCategoria($id,$nombre){ try{ $conn=conectar(); $st=$conn->prepare("update categorias set nombre=:nombre where idcategorias=:id"); $st->execute(['nombre'=>$nombre,'id'=>$id]); } catch (Exception $ex) { } } function getCategorias() { try { $conn = conectar(); $st = $conn->prepare("select * from categorias"); $st->execute(); $categorias = $st->fetchAll(); return $categorias; } catch (Exception $ex) { echo $ex->getMessage(); } } function getCategoria($id) { try { $conn = conectar(); $st = $conn->prepare("select * from categorias where idcategorias=:id"); $st->execute(['id' => $id]); $categoria = $st->fetch(); return $categoria; } catch (Exception $ex) { echo $ex->getMessage(); } } function listadoCategorias() { $categorias = getCategorias(); ?> <table class="table"> <tr><td>Id</td><td>Nombre</td><td>Acciones</td></tr> <?php foreach ($categorias as $categoria) { ?> <tr><td><?= $categoria['idcategorias'] ?></td> <td><?= $categoria['nombre'] ?></td> <td> <a href="?idcategoria=<?= $categoria['idcategorias'] ?>">Borrar</a> <a href="editar_categoria.php?idcategoria=<?= $categoria['idcategorias'] ?>">Editar</a> </td> </tr> <?php } ?> </table> <?php }
Categorías Sakila
<h1>Categorías</h1> <?php require_once 'libreria.php'; $category = filter_input(INPUT_GET, 'category', FILTER_SANITIZE_STRING); $category_id = filter_input(INPUT_GET, 'category_id', FILTER_VALIDATE_INT); if (!empty($category)) { insertarCategoria($category); } if(!empty($category_id)){ borraCategoria($category_id); } ?> <form> Categoría: <input type="text" name="category"> <input type="submit" class="btn btn-success"> </form> <hr/> <?php listadoCategorias(); ?>
libreria.php
<?php function conectar() { $server = "localhost"; $user = "root"; $password = ""; $db = "sakila"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password, [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $conn; } catch (Exception $ex) { echo $ex->getMessage(); } } function insertarCategoria($name) { try { $conn = conectar(); $st = $conn->prepare("insert into category (name) values (:name)"); $st->execute(['name' => $name]); } catch (Exception $ex) { echo $ex->getMessage(); } } function borraCategoria($id) { try { $conn = conectar(); $st = $conn->prepare("delete from category where category_id=:id"); $st->execute(['id' => $id]); } catch (Exception $ex) { echo $ex->getMessage(); } } function getCategorias() { try { $conn = conectar(); $st = $conn->prepare("select * from category"); $st->execute(); $categorias = $st->fetchAll(); return $categorias; } catch (Exception $ex) { echo $ex->getMessage(); } } function listadoCategorias() { echo "hola"; $categorias = getCategorias(); ?> <table class="table"> <tr><td>Id</td><td>Nombre</td><td>Acciones</td></tr> <?php foreach ($categorias as $categoria) { ?> <tr><td><?= $categoria['category_id'] ?></td> <td><?= $categoria['name'] ?></td> <td><a href="?category_id=<?= $categoria['category_id'] ?>">Borrar</a></td> </tr> <?php } ?> </table> <?php }
Función conectar
function conectar() { $server = "localhost"; $user = "root"; $password = ""; $db = "sakila"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password,[PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $conn; } catch (Exception $ex) { echo $ex->getMessage(); } }
Select con city
<?php $server = "localhost"; $user = "root"; $password = ""; $db = "sakila"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); print_r($_GET); $address = filter_input(INPUT_GET, "address"); $district = filter_input(INPUT_GET, "district"); $city_id = filter_input(INPUT_GET, "city_id"); $postal_code = filter_input(INPUT_GET, "postal_code"); $phone = filter_input(INPUT_GET, "phone"); if(!empty($address) && !empty($district) &&!empty($city_id) && !empty($phone)){ $sql="insert into address (address,district,city_id,postal_code,phone) values "; $sql.="('$address','$district',$city_id,'$postal_code','$phone')"; $conn->exec($sql); } $sql = "select city_id,city from city order by city"; $resul = $conn->query($sql); $ciudades = $resul->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $ex) { echo $ex->getMessage(); } ?> <form> Dirección: <input type="text" name="address"><br/> Distrito: <input type="text" name="district"><br/> Ciudad: <select name="city_id"> <option value="0">Seleccione la ciudad</option> <?php foreach ($ciudades as $ciudad) { ?> <option value="<?= $ciudad['city_id'] ?>"><?= $ciudad['city'] ?></option> <?php } ?> </select><br/> Código postal: <input type="text" name="postal_code"><br/> Teléfono: <input type="text" name="phone"><br/> <input type="submit"> </form>
Galería de imágenes
<h1>Galería de imágenes</h1> <?php $borrar= filter_input(INPUT_GET, 'borrar'); if(!empty($borrar)){ unlink("images/".$borrar); } if (isset($_FILES['imagen'])) { if (explode("/", $_FILES['imagen']['type'])[0] == 'image') { move_uploaded_file($_FILES['imagen']['tmp_name'], "images/" . $_FILES['imagen']['name']); ?> <div class="alert alert-success alert-dismissible"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Ok</strong> El archivo se ha subido con éxito. </div> <?php } else { ?> <div class="alert alert-danger alert-dismissible"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Error</strong> El archivo subido no es de tipo imagen. </div> <?php } } ?> <form action='index.php' method="post" enctype="multipart/form-data"> <input type="file" name="imagen" > <input type="submit" class="btn btn-success" value="Enviar imagen"> </form> <hr/> <div style='display:flex;flex-wrap: wrap;'> <?php $imagenes = scandir("./images"); for ($i = 2; $i < count($imagenes); $i++) { ?> <div class="card" style="width:400px" > <img class="card-img-top" src="images/<?= $imagenes[$i] ?>" alt="Card image"> <div class="card-body"> <h4 class="card-title"><?= $imagenes[$i] ?></h4> <a href="?borrar=<?= $imagenes[$i] ?>" class="btn btn-danger">Borrar imagen</a> </div> </div> <?php } ?> </div>
CRUD actores Sakila
Index.php
<h1>Mantenimiento actores de Sakila</h1> <form> <input type="hidden" name="action" value="insert"> Nombre:<input type="text" name="first_name"> Apellidos:<input type="text" name="last_name"> <input type="submit" class="btn btn-info"> </form> <table class="table"> <tr><td>Id</td><td>Nombre</td><td>Apellidos</td><td>Acciones</td></tr> <?php $server = "localhost"; $user = "root"; $password = ""; $db = "sakila"; $action = filter_input(INPUT_GET, 'action'); $last_name = filter_input(INPUT_GET, 'last_name', FILTER_SANITIZE_STRING); $first_name = filter_input(INPUT_GET, 'first_name', FILTER_SANITIZE_STRING); $actor_id = filter_input(INPUT_GET, 'actor_id', FILTER_VALIDATE_INT); try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Acciones sobre la base de datos if ($action == 'insert' && !empty($first_name) && !empty($last_name)) { $sql = "insert into actor (first_name, last_name) values ('$first_name','$last_name')"; $conn->exec($sql); } if ($action == "delete" && !empty($actor_id)) { $sql = "delete from actor where actor_id=$actor_id"; $conn->exec($sql); } if ($action == 'update' && !empty($first_name) && !empty($last_name) && !empty($actor_id)) { $sql = "update actor set first_name='$first_name', last_name='$last_name' where actor_id=$actor_id"; $conn->exec($sql); } $sql = "select * from actor"; $resul = $conn->query($sql); while ($fila = $resul->fetch(PDO::FETCH_ASSOC)) { ?> <tr><td><?= $fila['actor_id'] ?></td> <td><?= $fila['first_name'] ?></td> <td><?= $fila['last_name'] ?></td> <td><a href="?action=delete&actor_id=<?= $fila['actor_id'] ?>">Borrar</a> <a href="update.php?actor_id=<?= $fila['actor_id'] ?>">Editar</a></td></tr> <?php } } catch (Exception $ex) { echo "Ha ocurrido un error<br/>" . $ex->getMessage(); } ?></table>
update.php
<h1>Editar actor</h1> <?php $server = "localhost"; $user = "root"; $password = ""; $db = "sakila"; $actor_id = filter_input(INPUT_GET, 'actor_id', FILTER_VALIDATE_INT); if (!empty($actor_id)) { try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "select * from actor where actor_id=$actor_id"; $resul=$conn->query($sql); $fila=$resul->fetch(); } catch (Exception $ex) { echo "Ha ocurrido un error<br/>" . $ex->getMessage(); } } ?> <form action="index.php"> <input type="hidden" name="action" value="update"> <input type="hidden" name="actor_id" value="<?=$actor_id?>"> Nombre:<input type="text" name="first_name" value="<?=$fila['first_name']?>"> Apellidos:<input type="text" name="last_name" value="<?=$fila['last_name']?>"> <input type="submit" class="btn btn-info"> </form>
final.php
<h1>Consulta actores de Sakila</h1> <form> Nombre:<input type="text" name="first_name"> Apellidos:<input type="text" name="last_name"> <input type="submit" class="btn btn-info" value="Buscar"> </form> <table class="table"> <tr><td>Id</td><td>Nombre</td><td>Apellidos</td></tr> <?php $server = "localhost"; $user = "root"; $password = ""; $db = "sakila"; $last_name = filter_input(INPUT_GET, 'last_name', FILTER_SANITIZE_STRING); $first_name = filter_input(INPUT_GET, 'first_name', FILTER_SANITIZE_STRING); try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "select * from actor where 1"; if (!empty($first_name)){ $sql.=" and first_name like '%$first_name%'"; } if (!empty($last_name)){ $sql.=" and last_name like '%$last_name%'"; } $resul = $conn->query($sql); while ($fila = $resul->fetch(PDO::FETCH_ASSOC)) { ?> <tr><td><?= $fila['actor_id'] ?></td> <td><?= $fila['first_name'] ?></td> <td><?= $fila['last_name'] ?></td> </tr> <?php } } catch (Exception $ex) { echo "Ha ocurrido un error<br/>" . $ex->getMessage(); } ?></table>
Web scrapping páginas amarillas
<?php function extraeRegexp($cadena, $inicio, $fin) { preg_match_all('#' . $inicio . '(.*?)' . $fin . '#', $cadena, $matches); return $matches[1]; } $total = []; for ($i = 1; $i <= 6; $i++) { $url = "https://www.paginasamarillas.es/search/mascotas-y-tiendas-de-animales/all-ma/barcelona/all-is/barcelona/all-ba/all-pu/all-nc/$i?what=mascotas+y+tiendas+de+animales&where=barcelona&ub=false&qc=true"; $web = file_get_contents($url); $urls = extraeRegexp($web, "<div class=\"envio-consulta\"><a href=\"", "\""); $total = array_merge($total, $urls); } $fichero = fopen("mascotas.csv", "w"); fwrite($fichero, utf8_decode( "Nombre;Categoria;Telefono;Direccion;Cp;Ciudad;Provincia;Web\n")); foreach ($total as $url) { $web = file_get_contents($url); $nombre = extraeRegexp($web, '<h1 itemprop="name">', '</h1>')[0]; $categoria = extraeRegexp($web, '<span class="category">', '</span>')[0]; $telefono = extraeRegexp($web, '<span itemprop="telephone">', '</span>')[0]; $direccion = extraeRegexp($web, '<span itemprop="streetAddress">', '</span>')[0]; $cp = extraeRegexp($web, '<span itemprop="postalCode">', '</span>')[0]; $ciudad = extraeRegexp($web, '<span itemprop="addressLocality">', '</span>')[0]; $provincia = @extraeRegexp($web, '<span class="addressState">', '</span>')[0]; $webaddress = @str_replace("?utm_campaign=paginasamarillas&utm_source=paginasamarillas&utm_medium=referral", "", extraeRegexp($web, 'class="fa icon-link"></i><a href="', '"')[0]); echo $nombre . ";" . $categoria . ";" . $telefono . ";" . $direccion . ";" . $cp . ";" . $ciudad . ";" . $provincia . ";" . $webaddress . "<br/>"; fwrite($fichero, utf8_decode($nombre . ";" . $categoria . ";" . $telefono . ";" . $direccion . ";" . $cp . ";" . $ciudad . ";" . $provincia . ";" . $webaddress . "\n")); } fclose($fichero); ?>
Subir archivos
Subir archivos:
<form method="post" enctype="multipart/form-data"> <input type="file" name="nombre"> <input type="submit"> </form> <?php if (isset($_FILES['nombre'])) { $tipo = explode("/", $_FILES['nombre']['type']); if ($tipo[0] == "image") { $carpeta = "images"; } else { $carpeta = "upload"; } move_uploaded_file($_FILES['nombre']['tmp_name'], "./" . $carpeta . "/" . $_FILES['nombre']['name']); } ?>
Ver contenido carpetas:
<h1>Contenido de upload</h1> <?php $archivos = scandir("upload/"); for ($i = 2; $i < count($archivos); $i++) { ?> <p><a href="upload/<?= $archivos[$i] ?>"><?= $archivos[$i] ?></a> <a href="borrar.php?archivo=upload/<?= $archivos[$i] ?>">Borrar archivo</a> </p> <?php } ?> <h1>Contenido de images</h1> <?php $archivos = scandir("images/"); for ($i = 2; $i < count($archivos); $i++) { ?> <img width="100" src="images/<?= $archivos[$i] ?>"> <a href="borrar.php?archivo=images/<?= $archivos[$i] ?>">Borrar archivo</a> <?php } ?>
Borrar archivo:
<?php $mensaje="Archivo borrado con éxito"; $archivo= filter_input(INPUT_GET, "archivo"); if (file_exists($archivo)){ if(!unlink($archivo)){ $mensaje="ha habido un error borrando el archivo"; } } else { $mensaje="El archivo que ha enviado ($archivo) no existe"; } ?> <h1><?=$mensaje?></h1> <a href="carpetas.php">Volver a carpetas</a>
Web scrapping
//Url a escrapear $url="http://trifulcas.com"; //Archivo para guardar $file="scrap.txt"; $visitadas=[]; $fichero=fopen($file,"w"); scrap($url); fclose($fichero); die(); function scrap($url){ global $visitadas,$fichero; //Guardo la url en visitadas $visitadas[]=$url; //Leo el contenido de la web $web= file_get_contents($url); //Proceso de datos: en este caso simplemente guardo el texto fwrite($fichero,$url); fwrite($fichero,strip_tags($web)); //Busco todos los enlaces de la web preg_match_all("<a href=[\"\'](.+?)[\"\']>", $web, $matches); foreach($matches[1] as $enlace){ //Si son enlaces internos y no han sido visitados llamamos a la función recursivamente if (strpos($enlace,$url)!==false && !in_array($enlace, $visitadas)){ scrap($enlace); } } }