Comunidad de diseño web y desarrollo en internet online

Sistema De Noticias e Imagen Desde MySQL

Citar            
MensajeEscrito el 20 Sep 2009 07:46 pm
Sistema De Noticias e Imagen Desde MySQL

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 "&nbsp;";
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 // :lol:

Por scowtmaster

21 de clabLevel



Genero:Masculino  

Rep Dom

firefox
Citar            
MensajeEscrito el 21 Sep 2009 01:21 am
Ponlo en tips.....esto es para preguntas sobre errores, pero esto da para tip o es más quien sabe hasta tuto.

Por sforero

478 de clabLevel

1 tutorial

 

social media expert world

chrome
Citar            
MensajeEscrito el 21 Sep 2009 01:38 am
@ sforero

si disculpa mi inorancia, pero me haran el favor de moverlo para las session de TIPS

:-(


Scowt Master // scowtmaster.ya.st // Pienso, Luego Existo // :lol:

Por scowtmaster

21 de clabLevel



Genero:Masculino  

Rep Dom

firefox
Citar            
MensajeEscrito el 21 Sep 2009 02:01 am
OK

Por sforero

478 de clabLevel

1 tutorial

 

social media expert world

chrome
Citar            
MensajeEscrito el 21 Nov 2009 05:04 am
gracias amigo
para decirte que ice todos los pasos q iciste aki y no logre cargarlo kisiera pedirte tu ayuda para correrlo
estoy trabajando con windows y ice ese cambio en la parte de tumb y naa estube revisando el codigo y no le encuentro la falla ... kisiera contactarme contigo

Por marvill

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Dic 2009 05:13 pm
bueno amigo este codigo lo he utilizado mucho y arreglado alguna cosita
para mejorar la seguridad y su reforzamiento cualquier mira te dejo mi
msn es -- [email protected] --- o -- [email protected] --


Scowt Master // scowtmaster.ya.st // Pienso, Luego Existo // :lol:

Por scowtmaster

21 de clabLevel



Genero:Masculino  

Rep Dom

chrome
Citar            
MensajeEscrito el 03 Jul 2013 07:04 pm
Hola, necesito saber porque me aparece esto?

Data too long for column 'foto' at row 1

Al intentar enviar la noticia, creo que es problema de al cargar la imagen.

Saludos y ayuda por favor.

Por Mosiah

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Mar 2014 10:04 pm
Hola a todos!, para solucionar el problema con las imágenes y que por lo que veo es el único problema que tiene este sistema yo hice lo siguiente:

Simplemente me dirigí a mi servidor local que en mi caso es xampp, y busque a donde aloja los datos temporales mi resultado fue C:\xampp\
Así que lo único que tuve que hacer es cambiarles las diagonales y me quedo así....

define("NAMETHUMB", "C:/xampp/tmp/thumbtemp");

Espero les sirva!

En cuanto al sistema de 10!, solo quedaría tener opciones de editar y borrar, si en algún momento lo podes hacer sería bueno!

Gracias y éxitos!

Por pattolucas

0 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.