Acceso a datos con PDO

Conectar al servidor:

$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);
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

Ejecutar una consulta de acción (también funcionaría con query):

$sql = "update category set name='$nombre' where category_id=$category_id";
            if ($conn->exec($sql) === true) {...}

Recorrer los registros:

$sql = "select * from category ";
$resul = $conn->query($sql);
if ($resul->rowCount()>0) {
  while ($row = $resul->fetch()) {
...
}
}

Obtener todos los registros de una sola vez:

$sql = "select * from category ";
$resul = $conn->query($sql);
$rows=$resul->fetchAll()

Insertar y obtener el último id:

 $sql = "insert into category (name) values ('" . addslashes($nombre) . "')";
            if ($conn->query($sql) == true) {
                $last_id = $conn->lastInsertId();
                echo "Insertada categoría $nombre con id " . $last_id;
            } else {
                echo "Error " . $conn->error;
            }

Enlazar resultados con variables:

$row = $conn->query('SELECT first_name,last_name from actor');
$row->bindColumn('first_name', $nombre);

$row->bindColumn(2, $apellido);
while ($row->fetch()) {
    print "$nombre $apellido. 
\n";
}

Preparar sentencias y luego pasar valores:

$st = $conn->prepare('INSERT INTO actor (first_name,last_name) VALUES (?,?)');
$st->execute(array('Vito','Corleone'));
$st->execute(array('Juan','Perez'));

$st = $conn->prepare('select * from actor where actor_id>?');
$st->execute(array(50));
print_r($st->fetchAll());

Pasar valores con nombre:

$st = $conn->prepare('select * from actor where first_name like :first_name');
$st->execute(array(':first_name'=>'%z%'));

Enlazar parámetros con variables:

$actores=['juan'=>'perez','ana'=>'pi','rosa'=>'buj'];
$st = $conn->prepare('insert into actor (first_name,last_name) values(:first_name,:last_name)');
$st->bindParam(':first_name', $first_name);
$st->bindparam(':last_name', $last_name);
foreach($actores as $first_name=>$last_name){
$st->execute();
}

Número de filas (Ojo, no funciona en todas las bases de datos):

$resul->rowCount()

Ejecutar con arrays:

 $sentencia = $conn->prepare("INSERT INTO actor( first_name,last_name) VALUES (?,?)");
 $sentencia->execute(array('asd','dsa'));

 $sentencia = $conn->prepare("INSERT INTO actor( first_name,last_name) VALUES (:f,:l)");
 $sentencia->execute(array('f'=>'asd','l'=>'dsa'));

Enlace manual php:

http://php.net/manual/es/pdo.prepared-statements.php

Recorrer carpetas en php

$archivos = scandir(".");
print_r($archivos);

$gestor_dir = opendir(".");
while ($nombre_fichero = readdir($gestor_dir)) {
 $ficheros[] = $nombre_fichero;
}

print_r($ficheros);
recorrerCarpeta(".");
function recorrerCarpeta($carpeta) {
 echo "Contenido de: " . $carpeta . "<br/>";
 $archivos = scandir($carpeta);
 array_shift($archivos);
 array_shift($archivos);
 foreach ($archivos as $a){
 if (is_dir($a)){
 recorrerCarpeta($carpeta."/".$a);
 }
 else{
 echo $carpeta."/".$a."<br/>";
 }
 }
}

Funciones de archivo

Escribir en un fichero:

if (!$f = @fopen("pepe.txt", "w")) {
 die("No he podido abrir el fichero: " . error_get_last()['message']);
}
for ($i = 1; $i <= 10; $i++) {
 fwrite($f, "$i x 5=".(5*$i)."\r\n");
}
fclose($f);

if (!$f = @fopen("pepe.txt", "a")) {
 die("No he podido abrir el fichero: " . error_get_last()['message']);
}

for ($i = 1; $i <= 10; $i++) {
 fwrite($f, "$i x 7=".(7*$i)."\r\n");
}
fclose($f);

Leer un fichero:

$f = @fopen("pepe.txt", "r") or die("No he podido abrir el fichero");


//Lee una línea
while (!feof($f)) {
 echo "<h2>".fgets($f)."</h2>";
}


fclose($f);

Leer directamente un fichero:

$cadena= file_get_contents("pepe.txt");
$tabla=file("pepe.txt");

echo $cadena;
print_r($tabla);

 

Ejercicio palabras mal escritas

 <style>
 .celdako,.celdaok{
 cursor: pointer;
 width:100px;
 height:50px;
 text-align: center;
 }
 .celdaok:active {
 background-color:lightgreen;
 
 }
 .celdako:active {
 background-color: red;
 }

 </style>

<?php

 function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $palabras = array(
 array('length', array('lenght', 'legnth', 'langth', 'lentgh', 'lenhgt')),
 array('locomotion', array('lomocotion', 'lotocomion', 'molocotion', 'locamotion', 'locomocion')),
 array('bedroom', array('vedroom', 'bedrum', 'berdoom', 'bedrun', 'bedroon', 'beddroom')),
 array('coin', array('coyn', 'cony', 'cain', 'con')),
 array('stable', array('estable', 'stoble', 'stabel', 'tsable')),
 array('crush', array('cruhs', 'clush', 'cruss', 'crusah')),
 array('fantasy', array('fantasi', 'fantascy', 'fatnasy', 'frantasy')),
 array('pillow', array('pellow', 'pillou', 'pilluw', 'pilow', 'pilou')),
 );

 function array_to_table($tabla, $buena,$ancho=2) {
 $res = "<table border=1>";
 for ($i = 0; $i < count($tabla); $i++) {
 if ($i % $ancho == 0) {
 $res .= "<tr>";
 }
 $res .= '<td class="' . ($tabla[$i] == $buena ? 'celdaok' : 'celdako') . '">' . $tabla[$i] . "</td>";
 if ($i % $ancho == $ancho-1) {
 $res .= "</tr>";
 }
 }
 $res .= "</table>";
 return $res;
 }

 //Seleccionar una palabra al azar rand (0,count($palabras)-1)

 $palabra = $palabras[rand(0, count($palabras) - 1)];
 // muestraTabla($palabra);
 //Coger la palabra buena y seleccionar tres palabras malas al azar
 $tablero[] = $palabra[0];
 // $malos = $palabra[1];

 //shuffle($malos);
 //$malos=array_slice($malos, 0, 8);
 $tablero = array_merge($tablero, $palabra[1]);
 while (count($tablero)<9){
 $a=$palabras[array_rand($palabras)];
 
 $palazar=$a[1][array_rand($a[1])];
 if (!in_array($palazar, $tablero)){
 $tablero[]=$palazar;
 }
 }
 // muestraTabla($tablero);
 //Mezclar
 shuffle($tablero);
 //Y mostrar
 echo array_to_table($tablero, $palabra[0],3);
 ?>