martes, 25 de febrero de 2014

La despedida

Querido diario;

Esta será practicamente la última entrada del blog, auque seguro que volveré a entrar para consultar los apuntes que contiene, almacenados durante el año.

Se me ha pasado muy rápido este curso lectivo (que aún faltan las prácticas, pero eso). Ha tenido muchas cosas increíbles, sobre todo el viaje a Turquía (mwajajaja).

Respecto a la asignatura, ha sido una que me ha encantado y donde he podido aprender bastante y, además, refrescar lo ya olvidado.

En el examen de la segunda evaluación saqué un diez (así, sin redondear. Que felicidad). No me lo esperaba, pero siempre es de agradecer.

Ahora a seguir aprendiendo, nunca esta de más.

Au revoir. Goodbye


jueves, 13 de febrero de 2014

Día 55. Biblioteca (VI)

Querido diario;

Las secciones de mostrar el listado de libros y realizar las búsquedas ya están acabadas. Aquí su código fuente:

Listado de libros:




Buscar libros:





Ahora vayamos a por la sección de Editar libros.
Dentro de ese .php tenemos tres secciones, añadir, actualizar y borrar. Cada una de estas funciones serán realizadas desde un fichero externo..

Entremos con el de añadir ficheros. El mayor problema es que realizaremos la llamada desde un archivo externo, y hacía una lista desplegable. Problema porque aun no lo hemos visto, que igual luego es sencillo.

¿Cómo crear una lista desplegable?

Se hace con la opción select y option. Es decir.
<select name="nombreQueQueramosDarle">
     <option></option>
</select>

Pero si queremos que este actualizar en tiempo real, deberemos crear <select> y, antes de entrar a <option>, hacer una llamada a la base de datos para que tome los datos en tiempo real. Y ya, después, hacerlo con un echo como aquí:

echo "<option>,$row3[campoQueMostramos],</option>"

martes, 11 de febrero de 2014

Día 53 y 54. SQL

Queridio diario;

Pequeño paréntesis para hablar de las consultas SQL necesarias para el examen.

Consultas:

SELECT <campo/s>
FROM <tabla>
WHERE <condición. ej. idgenero= $aux>;

Inserción:

INSERT INTO <nombreTabla>
(campo,campo2,... que se quiera rellenar)
VALUES
(1,'El quijote');

Buscado:

DELETE *  (o campo)
FROM <tabla>
WHERE <condición. Ej. id=3>

Actualización:

 UPDATE <tabla>
SET campo1=<valor>,campo2=<valor>
WHERE <condición. Ej. titulo="El Quijote">;

miércoles, 5 de febrero de 2014

Día 52. Biblioteca (V)

Querido diario,

Hoy seguimos haciendo la sección de Mostrar libros en PHP.

Concretamente, hoy he llegado tarde por las clases de inglés, pero estaba explicando como intercalar código HTML intercalado con PHP.

Hay dos formas.

<html>
<head>
</head>
<body>
<?php
?>
<Codígo HTML>
</body>
</html>

En esta ocasión, después del primer código PHP y la interrupción de HTML, podemos volver a crear otra sección PHP. Es decir:

<html>
<head>
</head>
<body>
<?php
?>
<Codígo HTML>
<?php
?>
</body>
<html> 

O también tenemos la segunda forma, usando el echo:

<?php
echo "<table>
                <td>
                    <tr>$variable[parametro]</tr>
                <td>
          </table>
?>

Hay que tener en cuenta que a la hora de hacer esta segunda versión, para usar las comillas de HTML las haremos con comillas simples. Si no de otra manera nos saldría como un error de sintaxis, ya que el echo (en PHP), sí que se escribe con comillas dobles.

Día 51. Biblioteca (IV)

Querido diarío;

Hoy hemos tenido una hora sólo de clase, así que he comenzado a hacer la sección de Mostrar Libros, a ver si me salía a mi sólo.

He tenido algunos problemas, pero consigo mostrar un resultado. Mañana continuaré

viernes, 31 de enero de 2014

Día 50. Biblioteca (III)

Mientras sube el profesor los comandos para hacer todo el programa, estoy haciendo la página inicial que no requiere de PHP, sólo HTML.

Creo un frameset dividido en dos páginas. El código es el siguiente:

Index:


Título:


Cuerpo:


El resultado (provisional) es este:


En esta ocasión, cuándo pulse sobre Mostrar libros, Buscar, Editar libros o Configurar secciones se mantendrán todas esas secciones y en la zona de la estantería se cargará la página PHP.

El siguiente paso va a ser ya montar el código en los .php.

Para hacer las llamadas a la base de datos, necesitaré ciertas funciones. Pongo a continuación las requeridas, sacas de un documento enviado por el profesor.

1. Conectar al servidor de la base de datos
Sintaxis: mysql_connect( servidor, usuario, contraseña)

<?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
// some code
mysql_close($con);
?>

2. Selección de la base de datos
Sintaxis: @mysql_select_db (basededatos, $conexion)

$bd_seleccionada = mysql_select_db('nombreBaseDeDatos', $conexión);
if (!$bd_seleccionada) {
    die ('No se puede usar nombreBaseDeDatos : ' . mysql_error());
}

3. Consulta MySQL
Sintaxis: mysql_query(query,connection)

$sql = "SELECT * FROM Person";
mysql_query($sql,$con);
Hay otros tipos de consultas. Si hago el módulo de búsqueda, me interesa un SELECT, si quiero borrar, DELETE, INSERT para agregar y UPDATE para actualizar los datos.

4. Devuelve todos regitros antes mostrados.
Sintaxis: mysql_fetch_array(data,array_type)

<?php
$con = mysql_connect("localhost", "peter", "abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$db_selected = mysql_select_db("test_db",$con);
$sql = "SELECT * from Person WHERE Lastname='Refsnes'";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_array($result));
mysql_close($con);
?>
En esta ocasión si quiero que se muestre, podemos escribir $variable[posicionVector/nombreCampo]. Tal y como está en este ejemplo, mostraría toda la información sin estructurar.

5. Cerrar la sesión de la base de datos 
Sintaxis: mysql_close

mysql_close(connection)
mysql_close($con);



A la hora de hacer la búsqueda, se realizará a través de un formulario, un cuadro de entrada.

<form method="POST" action="buscar.php">
     <input name="Titulo" type="text" size="50" maxlength="100">
     <input name="submit" type="submit" value="A Buscar">

Lo que hacemos es que este formulario se llama a sí mismo en Action.
El primer input le indicamos que sea de tipo texto, con una longitud de 50 ¿píxeles? y con un máximo de cien caracteres.
El segundo input es tipo submit. Es decir, crea un valor. En la etiqueta value crea el texto que queremos que se muestre. Lo que hace un submit es la función referenciada en el parámetro action.
La sección de POST sirve porque en el PHP crearemos una variable que haga referencia a ese cuadro de búsqueda. Es decir: 


$var1=$_POST["Titulo"];
Posteriormente convertiremos esa variable en cadena de texto

settype($var1,"string");

Y luego para mostrar la búsqueda sería repetir los pasos de las sentencias que he escrito arriba.

Hay que tener en cuenta que, en PHP, las cadenas de caracteres se ponen con dobles comillas, pero sin embargo si combino con valores de variables, usaré comillas simples para el contenido PHP.

$prueba=
"SELECT Id, Titulo
FROM libros
WHERE Titulo= '$valor1'";

También se deberá reiterar la construcción de tantas filas (en la tabla), como registros hay en la base de datos.

Para mostrar información enlazada a otra tabla, deberé hacer otra consulta para traer el campo correspondiente.

Si se quiere comprobar que estamos yendo bien, o tener los error controlados, lo idóneo sería hacer que muestre un mensaje si una variable esta fallando, con un mensaje personalizado. Ejemplo

if (! $prueba) {
echo "Hay errores en la consulta";
exit();
Ahora, para que muestre los resultados, por ejemplo en una tabla., la indicamos código PHP para escribir el valor de la búsqueda, todo esto metido dentro de un while.

<table>
<td><?PHP echo $busqueda["CampoAMostrar"];?></td>
<td><?PHP echo $busqueda["CampoAMostrar"];?></td>
<td><?PHP echo $busqueda["CampoAMostrar"];?></td>
<td><?PHP echo $busqueda["CampoAMostrar"];?></td>
</table>

Esto es todo por hoy. La semana que viene comenzaré a hacer el código PHP

jueves, 30 de enero de 2014

Día 49. Biblioteca (II)

Querido diario;

Ya tenemos creada la base de datos de nuestra página web.
De momento, el desarrollo lo tenemos en este punto, ya que la pregunta que nos debemos hacer al empezar a desarrollarla es: ¿Tenemos que almacenar / acceder a datos en nuestra aplicación?

SECCIÓN BASE DE DATOS


Pues eso. Y por supuesto, en cada tabla creada debemos declarar una clave primaria, ya que son los identificadores únicos de la información que vamos a guardar. Así podemos combinar la información entre varias tablas.
Huelga decir que para combinar campos de varias tablas, debemos guardarlo con el mismo tipo y el mismo número de caracteres, pero no es necesario que en las dos tablas tengan el mismo título. Si relacionamos dos claves primarias de diferentes tablas, esto se conoce como foreign key.

En cuanto a tipos, los grandes tipos son:


  • Cadenas
  • Números
  • Fechas
  • Enumeraciones


Hay muchos más, pero estos son los principales. Y por supuesto, dentro de cada uno de los anteriormente mencionados existen varios subgrupos.

Supongamos que queremos hacer una nueva tabla. Vamos a Localhost - Nuestra base de datos.

Y rellenamos los siguientes datos.


Posteriormente a eso, veremos una nueva pantalla en la que indicaremos el nombre del campo, su tipo (lo que mencionaba antes), la longitud/valores, valor predeterminado, su cotejamiento, los atributos, si es nulo o no, si le indicamos autoincremental y el comentario de este campo.


Vayamos a los tipos.
  • INT: Declaramos un campo numérico. Si deseamos un campo auto-numérico, deberemos declarar este tipo, y que sea clave primaria. Si no lo fuera, podríamos crearlo de todas formas, pero MySQL podría quejarse.
  • VARCHAR: Son cadenas de caracteres de longitud variable. Es decir, si le declaro que pueden escribir cien caracteres y sólo ocupo 54, reducirá ese campo a 54 en este caso. Es decir, lo reduce al número de caracteres que se han ocupado. Pero hay una excepción. Si declaramos una longitud de cuatro caracteres, lo convertirá automáticamente en CHAR (que es lo mismo, pero de longitud fija. Aunque no ocupemos los cuatro caracteres, almacenará cuatro).
  • FLOAT: Sirve para almacenar números, pero permite también almacenar decimales. Si lo escribiera INT no dejará almacenar 1075.58, por ejemplo. Con FLOAT sí. Para declarar su longitud escribiremos numerosEnteros,numerosDecimales.
En el ejemplo superior, el campo id lo guardaré como campo INT, y la marca como campo VARCHAR. Pero por ejemplo, la cilindrada será numérica, pero como no vamos a operar con ese campo e incluso nos podría interesar indicar la cilindrada con su texto (ej: 49 cc), escribiremos con tipo VARCHAR.

El ejemplo quedaría así:


En el proyecto de la biblioteca, quedará así la tabla de libros:




Hecho esto, vamos a ver la parte lógica del negocio, es decir, la estructura del diseño.

ESTRUCTURA DE LA WEB

En el index.html dividiremos la página en dos secciones de página. La idea es mantener fijo el titulo en la partre superior y la inferior que vaya siendo quien cargue las páginas.

Es decir, index.html llama a dos ficheros. Cabecera.html y principal.php (que podría ser perfectamente un .html, pero bueno). El primero es sólo para el título, y desde el segundo llamaremos a los ficheros que se encargan de hacer la funcionalidad.

De momento voy a atender a la explicación. Iré publicando la estructura de la web poco a poco, conforme la vaya desarrollando.