Este tutorial es tratar de enseñar como hacer un sistema de noticia Bien DINÁMICO
Comenzaremos con crear una base de datos de nuestro MYSQL
Código MySQL :
CREATE TABLE IF NOT EXISTS `noticia` ( `id` int(3) NOT NULL auto_increment, `titulo` varchar(255) NOT NULL default '', `subtitulo` text NOT NULL, `detalle` text NOT NULL, `fuente` varchar(255) NOT NULL default '', `categoria` varchar(10) NOT NULL, `foto` blob NOT NULL, `thumb` blob NOT NULL, `mime` varchar(40) NOT NULL default '', `fecha` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
Antes de empezar a crear nuestros INSERT debemos crear nuevo documento y lo nombramos config.php en este se encontrara la conexiones de nuestro Base, Usuario y contraseña de nuestro servidor.
config.php
Código PHP :
<?php $servidor="localhost"; // Nuestro servidor $database="test"; // Nombre de nuestra base de datos $password="******"; // Nuestro password $usuarior="root"; // Nombre de nuestro usuario ?>
Probamos nuestra conexiones estén correcta luego de esto entonce empezamos por la parte crear nuestro pagina
Que se encargar de ingresar los datos a nuestra base de datos, o el llamado administrador.
admin.php
Código PHP :
<?php include_once("config.php"); ?> <?php // Verificamos que el formulario no ha sido enviado aun $postback = (isset($_POST["enviar"])) ? true : false; if($postback){ // errores error_reporting(E_ALL); # Altura de el thumbnail en píxeles define("ALTURA", 100); # Nombre del archivo temporal del thumbnail define("NAMETHUMB", "/tmp/thumbtemp"); define("DBHOST", "$servidor"); define("DBNAME", "$database"); define("DBUSER", "$usuario"); define("DBPASSWORD", "$password"); $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png"); $name = $_FILES["foto"]["name"]; $type = $_FILES["foto"]["type"]; $tmp_name = $_FILES["foto"]["tmp_name"]; $size = $_FILES["foto"]["size"]; if(!in_array($type, $mimetypes)) die("Seleciones una Imagen o El archivo que subiste no es una Imagen válida"); switch($type) { case $mimetypes[0]: case $mimetypes[1]: $img = imagecreatefromjpeg($tmp_name); break; case $mimetypes[2]: $img = imagecreatefromgif($tmp_name); break; case $mimetypes[3]: $img = imagecreatefrompng($tmp_name); break; } $datos = getimagesize($tmp_name); $ratio = ($datos[1]/ALTURA); $ancho = round($datos[0]/$ratio); $thumb = imagecreatetruecolor($ancho, ALTURA); imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]); switch($type) { case $mimetypes[0]: case $mimetypes[1]: imagejpeg($thumb, NAMETHUMB); break; case $mimetypes[2]: imagegif($thumb, NAMETHUMB); break; case $mimetypes[3]: imagepng($thumb, NAMETHUMB); break; } # foto original $fp = fopen($tmp_name, "rb"); $tfoto = fread($fp, filesize($tmp_name)); $tfoto = addslashes($tfoto); fclose($fp); # thumbnail $fp = fopen(NAMETHUMB, "rb"); $tthumb = fread($fp, filesize(NAMETHUMB)); $tthumb = addslashes($tthumb); fclose($fp); // Borra archivos temporales @unlink($tmp_name); @unlink(NAMETHUMB); //proceso de almacenamiento $fuente = $_POST["fuente"]; $categoria = $_POST["categoria"]; $titulo = (ucfirst($_POST["titulo"])); $subtitulo = $_POST["subtitulo"]; $detalle = (nl2br(htmlspecialchars(urldecode($_POST["detalle"])))); $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));; mysql_select_db(DBNAME, $link) or die(mysql_error($link)); $sql = "INSERT INTO noticia(fuente, categoria, titulo, subtitulo, detalle, foto, thumb, mime) VALUES ('$fuente', '$categoria', '$titulo', '$subtitulo', '$detalle', '$tfoto', '$tthumb', '$type')"; mysql_query($sql, $link) or die(mysql_error($link)); echo " Archivos Guardados, correctamente "; exit(); } ?> <html> <head> <title>Mi Sistema de Noticia</title> </head> <body> <form name="frmimage" id="frmimage" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> <p>Titulo<br /> <input name="titulo" type="text" class="text" id="titulo" /> </p> <p> Subtitulo<br /> <textarea name="subtitulo" id="subtitulo" cols="60" rows="5" tabindex="4"></textarea> </p> <p> Detalle<br /> <textarea name="detalle" id="detalle" cols="60" rows="10" tabindex="4"></textarea> </p> <p> Seleciones una imagen<br> <input name="foto" type="file" class="text" id="foto" /> </p> <p> </p> Fuente de la Noticia <br> <input name="fuente" type="text" class="text" id="fuente" /> </p> <p> Categoria:<br> <select name="categoria" id="categoria"> <option>PHP</option> <option>MySql</option> <option>CSS</option> <option>AJAX</option> <option>Seguridad</option> </select> </p> <p> <input name="fecha" type="hidden" id="fecha" /> <input name="enviar" type="submit" id="enviar" value="Publicar" /> </p> </form> </body> </html>
Mucha atención con esto, para donde se encuentra ubicado define("NAMETHUMB", "/tmp/thumbtemp"); esto trabaja dependiendo el sistema operativo bajo el cual esta nuestro servidor si trabaja con LINUX se quedara igual pero, en el caso de que su sistema operativo sea WINDOWS como en mucho caso cambiamos poniendo c:/windows/temp/thumbtemp");
-OJO- con esto mucho debemos tener en cuenta si subimos nuestro sistema de noticia a un servidor propio, debemos saber
bajo cual plataforma trabaja por ejemplo, MIARROBA este servidor trabaja bajo LINUX el cual el código funcionara perfectamente como se encuentra, pero si tenemos WINDOWS intalado en nustra PC y estamos utilizando una APACHE , cambiamos la
direccion de NAMETHUMB por c:/windows/temp/thumbtemp");.
Por que esto?!! Si no cambiamos!! Notaran que cuando estén visualizando la la noticia no se mostraran los
thumbnail de la noticia, pasara a estar en blanco.
index.php
Código PHP :
<?php include_once("config.php"); ?> <?php $conex = mysql_connect ("$servidor","$usuario","$password"); if (!$conex) { die('NO puede conetarse: ' . mysql_error()); } mysql_select_db ("$database", $conex); $resultado = mysql_query ("SELECT * FROM noticia"); while($mostrador = mysql_fetch_array($resultado)) { echo "<img src=images_bd.php?id=$mostrador[id]&tam=2 class=alignleft >"; echo "<a href=detalle.php?id=$mostrador[id]>"; echo $mostrador['titulo']; echo "</a></br>"; echo $mostrador['subtitulo']; echo "Categoria :"; echo $mostrador['categoria']; } mysql_close($conex); ?>
Bueno este index mostrara todo los noticias publicada recientemente , solo tenemos que modificarlo a nuestro gusto y agregarle otros detalle también, pero teniendo en cuenta los cambios en el admin y en la BD , bueno crear un documento nuevo en el que se mostrara el el detalle de la noticia seleccionada.
detalle.php
Código PHP :
<?php include_once("config.php"); ?> <?php $conex = mysql_connect ("$servidor","$usuario","$password"); if (!$conex) { die('NO puede conetarse: ' . mysql_error()); } mysql_select_db ("$database", $conex); $id = (isset($_GET["id"])) ? $_GET["id"] : exit(); $resultado = mysql_query ("SELECT * FROM noticia WHERE id=$id"); while($mostrador = mysql_fetch_array($resultado)) { echo $mostrador['titulo']; echo "<p>"; echo "<img src=images_bd.php?id=$mostrador[id]&tam=1 >"; echo $mostrador['subtitulo']; echo "<br>"; echo $mostrador['detalle']; echo "</p>"; echo"Categoria :" .$mostrador['categoria']; echo " "; echo"Fuente :" .$mostrador['fuente']; } mysql_close($conex); ?>
Bueno un sistema de noticia mas simple que este no encontraran acuerden de estudiar los código y analizarlo Esto le ayudar a poner a funcionar mas para su sistema de noticia.
Ahora crear un documento nuevo el cual se encargar de extraer el la imagen desde la base de datos lo Nombraremos
Images_bd.php
Código PHP :
<?php require_once("config.php") ?> <?php error_reporting(E_ALL); define("DBHOST", "$servidor"); define("DBNAME", "$database"); define("DBUSER", "$usuario"); define("DBPASSWORD", "$password"); $id = (isset($_GET["id"])) ? $_GET["id"] : exit(); $tam = (isset($_GET["tam"])) ? $_GET["tam"] : 1; switch($tam) { case "1": $campo = "foto";break;; case "2": $campo = "thumb";break;; default: $campo = "foto";break;; } $sql = "SELECT $campo, mime FROM noticia WHERE id = $id"; $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));; mysql_select_db(DBNAME, $link) or die(mysql_error($link)); $conn = mysql_query($sql, $link) or die(mysql_error($link)); $datos = mysql_fetch_array($conn); $imagen = $datos[0]; $mime = $datos[1]; header("Content-Type: $mime"); echo $imagen; ?>
Si no tomamos en cuenta los código anterior podremos captar que cuando extraemos las imagen son desde este documento que le nombramos images_bd.php sin este no podremos convertir la imagen que guardamos en la BD, que fueron guardado en los campos como blob ( BINARY).
Luego de haber terminado nuestro sistema y investigar nuestro código podemos poner seguridad en los admin, con usuario poniendo área restringida, instalamos un sistema de usuario, el cual publicara el segunda parte de este sistema de noticia
Dependiendo la respuesta y que lleve este tuturorial.
Las Cosas se hacen sin errores para enseñar y aprender, por un fututo mas razonables
Scowt Master // scowtmaster.ya.st // Pienso, Luego Existo //