Sei sulla pagina 1di 8

@INTE ACADEMIA

Curso de PHP

Sesin 26. Crear un CMS (III)


26.1. Nombre de usuario y contrasea Antes de seguir, cambie el nombre de usuario y la contrasea en su archivo db_fns.php por el nombre de usuario y contrasea de su base de datos. function db_connect() { $handle = new mysqli('localhost', 'root', '', 'content'); if (!$handle) { return false; } return $handle; } 26.2. Pages de cada storie Vamos a asignar un page(o tema) a cada noticia. 1. 2. 3. Entre en phpMyAdmin. Acceda a la base de datos Content y entre en la tabla stories. Haga clic en el botn Examinar.

4.

Desde aqu puede modificar los datos. Haga clic en el botn Modificar de cada registro e introduzca la page correspondiente.

1/8

AINTE INFORMTICA S.L.

@INTE ACADEMIA 26.3. El archivo index.php 1.

Curso de PHP

A continuacin vamos a ver el archivo index.php que es la pgina principal del sitio. Este es el aspecto de la pgina al ejecutarla.

2.

Este es el archivo index. Vamos a ver como funciona.

<?php //voy a usar el archive db_fns, que tiene los accesos a algunas funciones importantes como la conexin a la base de datos y otras include_once('db_fns.php'); //lo primero que va a aparecer en la pgina es la cabecera include_once('header.php'); //uso la funcin db_connect que est en el archivo db_fns.php para conectarme a la base de datos $handle = db_connect(); //venga, defino una variable llamada pages_sql que contiene una consulta sql que me saca todas las pages (o temas) de la base de datos ordenadas por code (cdigo) $pages_sql = 'select * from pages order by code';

2/8

AINTE INFORMTICA S.L.

@INTE ACADEMIA

Curso de PHP

//ejecuto la consulta y paso el resultado de la misma a la variable $pages_result $pages_result = $handle->query($pages_sql); //aqu empiezo a imprimir cosas en la pgina //defino una tabla echo '<table border="0" width="400">'; //la orden asigna a la variable pages cada una de las filas de la lista de pages que dio la consulta anterior, as que, mientras hayas mas filas, sigo sacando pages, cuando ya no haya ms filas, se sale del bucle while while ($pages = $pages_result->fetch_assoc()) { //otra consulta para sacar todas las historias de un determinado tema, selecciona las historias con la condicin de que pertenezcan a un tema determinado, que viene determinado por el campo CODE de la variable pages, que contiene la lista de temas de las pginas //otra condicin es que la condicin Publisher (publicado) no sea nula //tambin se ordenan los datos por fecha de publicacin en orden descendente $story_sql = "select * from stories where page = '{$pages['code']}' and published is not null order by published desc"; //se crea una variable llamada story_result que guarda el resultado de la consulta, es decir, la lista de stories de un page $story_result = $handle->query($story_sql);

3/8

AINTE INFORMTICA S.L.

@INTE ACADEMIA //si el nmero de filas de la page actual es distinto de 0 //entonces muestro la lista de stories de una page if ($story_result->num_rows) {

Curso de PHP

//la variable story guarda en un array asociativo la lista de stories de una page $story = $story_result->fetch_assoc(); //ahora empiezo a rellenar las filas de la tabla echo "<tr> <td> //primero la descripcin de la page <h2>{$pages['description']}</h2> //luego la cabecera de la storie <p>{$story['headline']}</p> //esto pone la clase CSS morelink <p align='right' class='morelink'> //y ahora el enlace para ms noticias del enlace <a href='page.php?page={$pages['code']}'> Leer ms {$pages['code']} ... </a> </p> </td> <td width='100'>"; //si hay foto para esa storie if ($story['picture']) { //uso la funcin resize_image.php para cambiarle el tamao a la imagen echo '<img src="resize_image.php?image='; //pongo la URL de la imagen en cdigo URL con la funcin urlencode echo urlencode($story[picture]); //establezco el tamao mximo en altura y anchura de la imagen 4/8 AINTE INFORMTICA S.L.

@INTE ACADEMIA echo '&max_width=80&max_height=60" />'; } echo '</td></tr>'; } } echo '</table>'; //termino la pgina poniendo el pie include_once('footer.php'); ?> 26.4. El archivo resize_image.php

Curso de PHP

Para que se vean las imgenes, es necesario activar la extensin GD que vimos en anteriores sesiones. 1. 2. 3. Haga clic en el icono de WAMP SERVER. Haga clic en PHP EXTENSIONS Haga clic en php_gd2

5/8

AINTE INFORMTICA S.L.

@INTE ACADEMIA 4. 5.

Curso de PHP

Copie algunas imgenes a la carpeta del servidor. Vamos a usar estas fotos para asignarlas a las stories. Entre en la base de datos content y modifique el campo Picture de alguna de las stories de la base de datos. Escriba el nombre de los archivos que ha copiado.

6.

El resultado ser similar al siguiente:

6/8

AINTE INFORMTICA S.L.

@INTE ACADEMIA

Curso de PHP

7. A continuacin tiene el cdigo del script que cambia el tamao de la imagen: <?php //saco los datos de la URL de llamada al servidor //la direccin de la imagen $image = $_REQUEST['image']; //el ancho mximo $max_width = $_REQUEST['max_width']; //el alto mximo $max_height = $_REQUEST['max_height']; //si no se han especificado el ancho y alto mximo //se especifican desde aqu if (!$max_width) $max_width = 80; if (!$max_height) $max_height = 60; //cojo el tamao de la imagen, que es un array de dos elementos $size = GetImageSize($image); //el ancho es el primer elemento del array $width = $size[0]; //el alto es el Segundo elemento del array $height = $size[1]; //para cambiar el tamao, necesito la relacin entre los dos tamaos //as que las divido $x_ratio = $max_width / $width; $y_ratio = $max_height / $height;

7/8

AINTE INFORMTICA S.L.

@INTE ACADEMIA

Curso de PHP

//si el ancho es menor que el ancho mximo y el alto menor que el alto mximo pa que lo voy a cambiar if ( ($width <= $max_width) && ($height <= $max_height) ) { $tn_width = $width; $tn_height = $height; } //si no, pues s que le cambio el tamao else if (($x_ratio * $height) < $max_height) { $tn_height = ceil($x_ratio * $height); $tn_width = $max_width; } else { $tn_width = ceil($y_ratio * $width); $tn_height = $max_height; } //creo la imagen a partir de la original $src = ImageCreateFromJpeg($image); //creo otra imagen con el tamao deseado $dst = ImageCreate($tn_width,$tn_height); //haga una copia de la imagen cambindole el tamao con esta funcin ImageCopyResized ImageCopyResized($dst, $src, 0, 0, 0, 0, $tn_width,$tn_height,$width,$height); //le digo a la pgina que le voyh a mandar una foto header('Content-type: image/jpeg'); //convierta la imagen en jpg ImageJpeg($dst, null, -1); //destruyo lo que no me hace falta. ImageDestroy($src); ImageDestroy($dst); ?>

8/8

AINTE INFORMTICA S.L.

Potrebbero piacerti anche