Comunidad de diseño web y desarrollo en internet online

Sistema De Noticias e Imagen Desde MySQL

Citar            
MensajeEscrito el 22 Sep 2009 06:47 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 30 Nov 2009 11:29 am
Muchas gracias por tu aporte, scowtmaster

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox
Citar            
MensajeEscrito el 26 Ene 2010 12:40 am
c:/windows/temp/thumbtemp");

Por scowtmaster

21 de clabLevel



Genero:Masculino  

Rep Dom

firefox
Citar            
MensajeEscrito el 01 Mar 2010 04:55 pm
hola, probe el sistema y las fotos las sube a la bse de datos pero no se muestran en en index, se muestra el icono con la foto quebrada. que podra ser? no me lee la foto, algo del codigo? bueno saludos, est bueno el sistema :)

Por coloman

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Mar 2010 08:55 pm
Se que estamos levantando post viejos pero bueno tengo una pequeña duda! Me salta este error en el Index.php cuando lo veo.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/*******/public_html/Index.php on line 11

la linea es la siguiente como esta escrita en el index que publicastes:

while($mostrador = mysql_fetch_array($resultado))

Sabrias el motivo del por el cual tira este error ? no soy bueno con php y estube consultando al SAN GOOGLE pero no tiene una respuesta para mi pregunta.

Te agradesco cualquier comentario que puedas aportar!.

Nqnikon.

Por Nqnikon

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 17 Abr 2010 12:50 pm
oks Nqnikon mira ante de todo en la bases de mysql se me fue una letra de mas esta es la forma correcta

Código MySQL :

<?php 
$servidor="localhost"; // Nuestro servidor  
$database="test"; // Nombre de nuestra base de datos  
$password="******"; // Nuestro password  
$usuario="root"; // Nombre de nuestro usuario  
?>


se me fue la letra R donde esta la conexion de usuario cambialo.

mira lo siguiente es que seguro esta utilizando un apache y trabajando bajo windows,
el cual algunos apache de esto tiene que configurarle la php.ini, y tambien tener en cuenta
los THUMBAILS como explique arriba.

te recomiendo que utilice un dominio gratis, como http://miarroba.com, habilita en el php y la mysql
y te aseguro que tendra mucho mejores suerte.

para cuando esta empezando con php tienes que saber configurar el apache y te pude resultar fatidioso.

Por scowtmaster

21 de clabLevel



Genero:Masculino  

Rep Dom

firefox
Citar            
MensajeEscrito el 17 Abr 2010 04:23 pm
Jaja mira vos no me di cuenta! eso por prestar atencion a otras cosas y pensar que el problema andaba por otro lado!! te agradesco mucho la respuesta! y bueno vamos a ver si resulta! te vuelvo agradecer por la paciencia! te mando un abraso, despues paso a comentar como me fue!

Nqnikon.

Por Nqnikon

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 22 Abr 2011 07:31 pm
errores :

Notice: Constant paginapruebas already defined in /home/webcindario/p/a/paginapruebas/Images_bd.php on line 8



Notice: Constant paginapruebas already defined in /home/webcindario/p/a/paginapruebas/admin.php on line 15

Notice: Use of undefined constant DBHOST - assumed 'DBHOST' in /home/webcindario/p/a/paginapruebas/admin.php on line 72

Notice: Use of undefined constant DBUSER - assumed 'DBUSER' in /home/webcindario/p/a/paginapruebas/admin.php on line 72

Notice: Use of undefined constant DBPASSWORD - assumed 'DBPASSWORD' in /home/webcindario/p/a/paginapruebas/admin.php on line 72

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'DBHOST' (1) in /home/webcindario/p/a/paginapruebas/admin.php on line 72

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /home/webcindario/p/a/paginapruebas/admin.php on line 72


ayudaaaaaaaaaa

Por ayrton

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2011 02:50 pm
He estado intentando hacer funcionar esta galería pero obtenía "headers already sent by...", como soy novato en programación no entendía muy bien... pero ya descubrí lo que pasaba: el código está perfecto, lo único que hay que hacer es eliminar el salto de línea en images_bd.php, de esta manera:

Código PHP :

<?php require_once("config.php") ?>

<?php...      //ASI NO


Código PHP :

<?php require_once("config.php") ?><?php....    //ASÍ SI!!!



Otro aporte:

Con este código las imágenes se redimensionan pero pierden mucha calidad, es por ello que me puse a investiagar otros códigos y descubrí que lo hay que hacer es resamplearlas. Es muy sencillo, sólo hay que cambiar:

Código PHP :

imagecopyresized(...


por:

Código PHP :

imagecopyresampled(...


manteniendo todos los parámetros intactos...
Saludos y muchas gracias por el aporte!

Por arielmaluenda

0 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 May 2011 05:07 pm
Buenas tardes,

Estoy probando el sistema de noticias en un servidor xampp bajo gnu/linux y las imágenes no se me muestran, no me sale ningún error.


Un saludo, gracias!

Por rokitoh

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jun 2011 11:04 pm
Exelente Exelente post :cool:

Estudiando el codigo pude verificar que aqui encontre la cosas claves para mi proyecto de Open Source propio. Yessss!

Gracias por esta informacion con este codigo hago mas que una noticia.

Saludos, (y)

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 15 Ago 2011 05:29 pm
Hola Buenas Tardes:

Estube probando este fantastico, script lo que me pasa es que sigo teniendo el mismo problema con las imagenes , no me aparecen en el index me salen en blanco o rota ,
cuando compruebo en mi base de datos las guarda correctamente , pero no se muestran, segui todos los pasos y consejos que dais despues del tutorial , pero sigo igual, las imagenes n se muestran en el index , mi servidor es privado y es un apache, y bajo windows, cambie ,NAMETHUMB por c:/windows/temp/thumbtemp");. y nada sigue igual .
lo revise una y otra vez pero no logro dar con la clave, que hago mal ?

Por jimmys67

0 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Ene 2012 11:51 pm
Hola desde argentina te escribo. Gracias por tu aporte me sirve de mucho, pero tengo una duda no veo las imagenes en el index como les pasa a una par de personas aqui. IGUAL AGRADEZCO TU APORTE!

Por ezequielm

0 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 May 2012 09:16 pm
funciona perfectamente el sistema de noticias al principio tuve algunos errores donde tuve que cambiar la direccion porque mi servidor esta en windows.
c:/windows/temp/thumbtemp");
y luego tuve que configurar mi php.ini donde habilite la al extencion para las imagenes
;extension=php_gd2.dll
le quite el punto y coma
extension=php_gd2.dll
y anduvo de 10
y la verdad que es un sistema de noticias muy recomendables para los que se inician como yo..
gracias "scowtmaster" por publicarlo..

Por waltersanchez31

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jun 2012 12:16 am
Hola
Muy bueno el sistema de noticias, hasta el momento me ah andado perfecto.
Pero me gustaría saber como poder clasificar las noticias por las categorías.
Ya sea dejando la categoría como link o crear un menu con nuevas paginas y que solo vallan mostrando las noticias relacionadas con la categoría.
Ojala me puedan ayudar, saludos

Por avenda

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Ene 2013 04:42 am
gracias por el aporte , ahora alguien me puede explicar como lo pongo a una web...

Por cruzsoft

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Ene 2013 04:47 pm
Consulta, cómo se podría alinear una noticia debajo de otra, ya que queda así:

Inspecciones
Sorpresiva inspección de AFIP, UATRE y TRABAJO en la zonaCategoria :PHPCanotaje
Finalizó con éxito curso de canotaje en LamarqueCategoria :MySql

Por glapettina

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Mar 2013 03:11 pm
me aparecen estos errores.......

Warning: imagejpeg() [function.imagejpeg]: Unable to open 'tmp/thumbtemp' for writing: No such file or directory in C:\AppServ\www\sistemano\admin.php on line 43

Warning: fopen(tmp/thumbtemp) [function.fopen]: failed to open stream: No such file or directory in C:\AppServ\www\sistemano\admin.php on line 58

Warning: filesize() [function.filesize]: stat failed for tmp/thumbtemp in C:\AppServ\www\sistemano\admin.php on line 59

Warning: fread(): supplied argument is not a valid stream resource in C:\AppServ\www\sistemano\admin.php on line 59

Warning: fclose(): supplied argument is not a valid stream resource in C:\AppServ\www\sistemano\admin.php on line 61
Archivos Guardados, correctamente

Por alberto.riveram

0 de clabLevel



 

msie7
Citar            
MensajeEscrito el 18 Mar 2014 12:40 am
Hola amigo ya instale en windows el sistemita, gracias de antemano. pued publicar las noticias y todo eso pero el problema es con las imagenes salen rotas.. ya hice los cambios de direccion de NAMETHUMB por c:/windows/temp/thumbtemp");

nota: lo instale en xamp para comenzar antes de subirlo a mi hosting comprado

Por davmanhack

0 de clabLevel



 

chrome

 

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