Comunidad PHPeros

Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: naveda en 02 de Noviembre de 2006, 19:59:19 pm

Título: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 02 de Noviembre de 2006, 19:59:19 pm
Hola PHPeros, este tutorial será el primero de los 3 que pretendo hacer sobre este tema ;)
Voy a intentar ayudaros lo maximo posible en cuanto al tema de los sistemas de noticias.

Para evitar confusiones, el sistema se hará utilizando una base de datos MySQL.

En esta primera parte del tutorial vamos a dedicarnos a crear la base del sistema de noticias. En la segunda parte del tutorial avanzaremos en el sistema añadiendo un archivo de administración sencillo y, por ultimo, en la tercera parte del tutorial se avanzará aun mas añadiendo opciones BBCode y Emoticonos.

Antes de nada vamos a comentar las partes basicas del Sistema de Noticias:

[Formulario de Envio]:
El formulario será sencillo, 1 campo de texto, un cuadro de texto y un Boton de Envio.
Código: [Seleccionar]
<form action="enviar.php" method="POST">
<input type="text" name="titulo" value="Titulo de la noticia"><br>
<textarea name="noticia">El texto de la noticia</textarea><br>
<input type="submit" name="enviar" value="Enviar Noticia">
</form>

Los datos enviados desde el formulario deben ser procesados y almacenados en la base de datos, eso lo conseguimos con el PHP. Para guardar datos en una base de datos MySQL debemos crear primeramente una tabla en la base de datos.

Para crear una tabla en la base de datos debemos usar codigo SQL:
Código: [Seleccionar]
create table `noticias` (
id int primary key auto_increment,
titulo varchar(255) not null,
noticia text not null,
autor varchar(255) not null,
fecha varchar(255) not null
);
Con el codigo SQL anterior crearemos una tabla llamada noticias en la que habrán 5 campos, ID (Numero Identificador de cada noticia), TITULO, NOTICIA, AUTOR (Lo usaremos en la 2ª parte del tutorial), FECHA (2ª Parte del tutorial).

Explicación Detallada del Codigo SQL anterior:


El formulario se procesa mediante PHP:
<?PHP
if (isset($_POST['enviar'])) { //Se comprueba si el boton enviar ha sido pulsado
if (!empty($_POST['titulo']) && !empty($_POST['noticia'])) { //Se comprueba si los campos no estan vacios
$sql = "INSERT INTO `noticias` (titulo,noticia,autor,fecha) values"; //Definimos el codigo para...
$sql.= "('".$_POST['titulo']."','".$_POST['noticia']."','Autor','".time()."')"; //...Ingresar los datos del formulario en la DB
if (mysql_query($sql)) { //Aquí se ingresa y se comprueba si se ha ingresado bien
echo "Noticia Enviada Correctamente";
} else { //Si algo ha fallado
echo "Ha ocurrido un error, no se ha procesado la noticia";
}
} else { //Si faltan campos por completar
echo "La noticia no se ha enviado, completa el formulario";
}
} else { ?>
<form action="enviar.php" method="POST">
<input type="text" name="titulo" value="Titulo de la noticia"><br>
<textarea name="noticia">El texto de la noticia</textarea><br>
<input type="submit" name="enviar" value="Enviar Noticia">
</form>
<? } ?>

Para mostrar la noticia, primero tenemos que extraerla de la base de datos y despues procesar los datos extraidos para mostrarlos adecuadamente.
<?PHP
$query = @mysql_query("SELECT * FROM `noticias` ORDER BY `id` DESC"); //Se extraen las noticias en orden reciente
if (@mysql_num_rows($query)) { // Se comprueba si hay alguna noticia publicada
while ($noticia = @mysql_fetch_array($query)) { //Se hace un bucle para mostrar cada noticia una a una
echo '<table border="0" width="100%">
<tr><td align="center">'.$noticia['titulo'].'</td></tr>
<tr><td>'.$noticia['noticia'].'</td></tr>
<tr><td>Enviada por '.$noticia['autor'].' || Fecha: '.$noticia['fecha'].'</td></tr>
</table><hr>';
}
} else {
echo "No hay ninguna noticia publicada";
}
@mysql_free_result($noticia); //Se borran los datos usados
?>

Funciones Utilizadas:

Para entender completamente el codigo debes "saber":

Siguiente Parte »
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: RamFu en 02 de Noviembre de 2006, 21:28:07 pm
Muy Bueno ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Enanotf en 02 de Noviembre de 2006, 21:48:03 pm
Buenas tengo un pequeño problema con la tabla del SQL me da el siguiente error; si alguien me aclara como se arregla le doy las gracias de antemano ;)



Código: [Seleccionar]
Error

consulta SQL:

Errorconsulta SQL : CREATE TABLE `noticias` (
id int PRIMARY KEY AUTO_INCREMENT ,
titulo varchar( 255 ) NOT NULL ,
noticia text NOT NULL ,
autor varchar( 255 ) NOT NULL ,
fecha varchar( 255 ) NOT NULL
);

MySQL ha dicho: Documentación
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Error

consulta SQL:

CREATE TABLE `noticias` (
id int PRIM
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: callosino en 03 de Noviembre de 2006, 15:40:03 pm
Enanotf, a mi me pasaba eso, cuando posteo esto naveda por 1 vez, y cuando lo modifico y termino la 1 parte, lo intente otra vez y funciono, yo pienso que hay que esperar
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: -RiPeRcOp- en 05 de Noviembre de 2006, 18:12:30 pm
olle pues omo q cuando lo hago no me deja enviar las noticias es decir no tiene como abrirlas no tiene un archivo Conectar.php o algo hasi esta bien o esta sin terminar xD ???
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 05 de Noviembre de 2006, 18:54:51 pm
Yo doy por sentado que vosotros sabeis que hay que conectar a la base de datos, y eso os lo dejo a vosotros.... Recuerdo que no damos codigos enseñamos a crearlos... Y por lo tanto yo doy por entendido que al llegar a un nivel suficiente como para saber crear un sistema de noticia se sabe que para extraer datos de una base de datos es necesario conectarse a ella de antemano...

Bueno por si tu mente no ha entendido... CONCLUSION:
Debes conectar a la base de datos
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Drek en 05 de Noviembre de 2006, 19:32:28 pm
pero naveda aun tienes que acabarlo no? o ya esta listo
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 05 de Noviembre de 2006, 19:39:41 pm
Esta es la primera parte pero ya podeis empezar a verla y aprender a crear un sistema similar...
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 06 de Noviembre de 2006, 20:59:20 pm
>.< Aquí les dejo el código que edité.. me da error..
Citar
Parse error: syntax error, unexpected T_IF in /home/virtual/sitio103039/www/Sn/enviar.php on line 3
Aquí les dejo el archivo enviar.php
Citar
<?PHP
include ("conectar.php");
if (isset($_POST['enviar'])) { //Se comprueba si el boton enviar ha sido pulsado
if (!empty($_POST['titulo']) && !empty($_POST['noticia'])) { //Se comprueba si los campos no estan vacios
$sql = "INSERT INTO `noticias` (titulo,noticia,autor,fecha) values"; //Definimos el codigo para...
$sql.= "('".$_POST['titulo']."','".$_POST['noticia']."','Autor','".time()."')"; //...Ingresar los datos del formulario en la DB
if (mysql_query($sql)) { //Aquí se ingresa y se comprueba si se ha ingresado bien
echo "Noticia Enviada Correctamente";
} else { //Si algo ha fallado
echo "Ha ocurrido un error, no se ha procesado la noticia";
}
} else { //Si faltan campos por completar
echo "La noticia no se ha enviado, completa el formulario";
}
} else { ?>
<form action="enviar.php" method="POST">
<input type="text" name="titulo" value="Titulo de la noticia"><br>
<textarea name="noticia">El texto de la noticia</textarea><br>
<input type="submit" name="enviar" value="Enviar Noticia">
</form>
<? } ?>
El error sería en
Citar
if (isset($_POST['enviar'])) {
Pero en teoría está bien..  :-\
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 06 de Noviembre de 2006, 21:48:22 pm
Wee yo solito encontré el error!
Estaba en la 2 linia
Citar
include ("conectar.php");
Me dejé ; jeje.. error mio  ::)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 06 de Noviembre de 2006, 23:27:37 pm
Vale bien, ahora me dice que la noticia ha sido mandada correctamente pero, cuando voy a: noticias.php no visualizo nada.. probé de hacer:
include ("Sn/noticias.php") //"Sn" es la carpeta donde tengo el sistema de noticias
Y no me muestra nada  :-\
¿Lo mejor sería que no lo tubiera en una carpeta "Sn" y lo tubiera en la carpeta raíz?
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: JuAnCHO en 06 de Noviembre de 2006, 23:40:30 pm
Vale bien, ahora me dice que la noticia ha sido mandada correctamente pero, cuando voy a: noticias.php no visualizo nada.. probé de hacer:
include ("Sn/noticias.php") //"Sn" es la carpeta donde tengo el sistema de noticias
Y no me muestra nada  :-\
¿Lo mejor sería que no lo tubiera en una carpeta "Sn" y lo tubiera en la carpeta raíz?
Yo siempre he usado include con archivos en al misma raiz. No se si así funcionará. Prueba a meterlo todo en una misma carpeta ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Raken en 06 de Noviembre de 2006, 23:45:40 pm
Sí, pueden usarse subdirectorios para la inclusión de páginas de include()
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: JuAnCHO en 06 de Noviembre de 2006, 23:47:30 pm
Sí, pueden usarse subdirectorios para la inclusión de páginas de include()
oKis, Ya me has aclarado algo a mi tmb :D
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 06 de Noviembre de 2006, 23:51:11 pm
¿Entonces, donde está el error?
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: JuAnCHO en 06 de Noviembre de 2006, 23:56:07 pm
¿Entonces, donde está el error?
Yo he visto que en el include que nos has dado no has cerrado con " ; "
Revisalo ... xD
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 07 de Noviembre de 2006, 00:03:51 am
Esto.. muy bien, pero si lees más abajo mis posts ya lo indiqué que había encontrado el error u.u (PDT:Ahora lo he modificado en el foro) ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Raken en 07 de Noviembre de 2006, 00:04:51 am
No es fallo del include. La página noticias.php se ve blanca por sí sola.

El error viene de alguna de las consultas de noticias.php, y este no se muestra porque Naveda escribe una @ delante del código para evitar mostrar mensajes de error.

Elimina las arrobas (@) del código y revisa el error.
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 07 de Noviembre de 2006, 00:18:05 am
Al quitar las "@"..
Citar
Warning: mysql_query(): Access denied for user 'admin103039'@'localhost' (using password: NO) in /home/virtual/sitio103039/www/Sn/noticias.php on line 2

Warning: mysql_query(): A link to the server could not be established in /home/virtual/sitio103039/www/Sn/noticias.php on line 2

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio103039/www/Sn/noticias.php on line 3

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio103039/www/Sn/noticias.php on line 4

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio103039/www/Sn/noticias.php on line 14
Todas las que quité dieron error :-\
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Raken en 07 de Noviembre de 2006, 00:26:57 am
Mala conexión a la base de datos.... o mejor dicho... hay conexión a la base de datos?

EDIT: No me mandes los códigos por privado! Yo no soy toda la comunidad!

<?php

$Host = "localhost";
$Usuario = "admin103039";
$Contraseña = "noteladigoxD";
$DBname = "db_naruto-fanaticos_gratishost_com";

$link = mysql_connect ($Host, $Usuario, $Contraseña);

mysql_select_db ($DBname, $link);

?>

Cambia contraseña por contrasena. No uses acentos ni caracteres del idioma cuando estás escribiendo código................
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Drek en 07 de Noviembre de 2006, 18:53:22 pm
dios esto si que uff aver quien sabe no da errores pero no sale la noticia:

-http://www.mispruevas.webspacemania.com/enviar.php (http://www.mispruevas.webspacemania.com/enviar.php)
-http://www.mispruevas.webspacemania.com/noticias.php (http://www.mispruevas.webspacemania.com/noticias.php)
-Lo curioso  que pone eso pero en el msql si que salen las noticias :S i en la url no

Gracias de ante mano
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 07 de Noviembre de 2006, 20:36:13 pm
Ya he corregido el error, se encontraba en la linea:
if (!@mysql_num_rows($query)) {
Y el codigo correcto es:
if (@mysql_num_rows($query)) {

El codigo hacia lo contrario de lo que se deseaba, mostraba que no habia noticias cuando si las habia y mostraba o mejor dicho intentaba mostrar las noticias cuando no habia.

Ahora esta solucionado ya que he quitado el caracter ! que significa negación en las instrucciones condicionales de PHP.

Siento el error :S
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 07 de Noviembre de 2006, 21:09:30 pm
Bueno.. me sucede el mismo error que a Drek.
Envio la noticia y me dice que se a enviado, pero cuando voy a noticias.php, me dice que no hay ninguna noticia  :-\
¿A que es debido? PDT: Ya modifiqué el noticias.php quitandole el ! pero sigue diciendome que no hay noticias  :-X
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Drek en 07 de Noviembre de 2006, 21:13:46 pm
sii ya esta me funciona mirarlo:

http://www.mispruevas.webspacemania.com/noticias.php

pero me gustaria saber como cambiar eso de autor y que salga y lo de fecha :) MUXISIMAS GRACIASS  ATODOS :D
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 07 de Noviembre de 2006, 21:30:11 pm
El autor y todo eso se mostrará con el archivo admin_noticias.php (Explicado en el segundo tutorial) ;)
PDT: ¿Que hicistes para que te funcionara? xD
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Drek en 07 de Noviembre de 2006, 21:42:56 pm
sinceramente ya te lo dije en msn exacamente lo que fuisteis diciendo :)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 07 de Noviembre de 2006, 22:50:24 pm
Ale arreglado, me había dejado el include ("conectar.php") en el noticias.php  xD
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Raken en 08 de Noviembre de 2006, 00:21:35 am
Ale arreglado, me había dejado el include ("conectar.php") en el noticias.php  xD

Pues eso. Conexión nula. ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Llobet en 12 de Noviembre de 2006, 15:57:48 pm
No consigo hacer que funcioné! :S He puesto el archivo conectar.php, he hecho el include() pero nada no hay manera! No me marca ningún error, pero las noticias no se agregan :S

¿Que hay mal?
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Drek en 12 de Noviembre de 2006, 15:59:33 pm
no se agregan donde a msql o al noticias.php? si es en las noticias
postea el codigo y si es en msql es porque no habras hecho el sql no lo habras metido o no se
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Ishamato en 12 de Noviembre de 2006, 19:12:56 pm
¿Mirastes que el include sea include ("conectar.php"); ?
Con el ; me refiero..
Otra forma para comprobar si todo está en orden, es ir a la base de datos y mirar si las noticias se escriben en las tablas que posteriormente creamos ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Drek en 12 de Noviembre de 2006, 21:40:47 pm
como ya dije puede ser que se le aya olvidado el msql que aya hecho el conectar pero no  la tabla  en msql
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 12 de Diciembre de 2006, 21:53:20 pm
La tablas estan creadas, al menos deberían ya que esta es la 2ª parte y es necesario leerse la primera...
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: sagitari en 01 de Enero de 2007, 20:41:50 pm
En el archivo enviar.php hay un error en la última línea ; (e la linea 68);

} else { ?>

es así:

} else {} ?>

 ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Bighack en 01 de Enero de 2007, 20:47:55 pm
x'DDDDDDDDDDDDDDDDDDDDDDdddd
Vaya error..para eso se pone asi
} ?>
y yasta xDDDD
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 01 de Enero de 2007, 22:20:42 pm
No hay ningun error de sintaxis ;)
Lo miré todo antes de publicarlo y despues de corregir un fallo que me dijeron lo probe en mi localhost. Funciona 100%
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: sagitari en 01 de Enero de 2007, 23:55:45 pm
En el archivo enviar.php hay un error en la última línea ; (e la linea 68);

} else { ?>


es así:

} else {} ?>

 ;)

Pues a mi no me funcionaba sin corregir eso.

----
----
@Bighack:

claro que hice eso que has puesto, pero me daba error ;S
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 02 de Enero de 2007, 00:05:42 am
¿que error te da? Fijate que en sintaxis el error no esta porque:

Código: [Seleccionar]
} else { ?>
<form action="enviar.php" method="POST">
<input type="text" name="titulo" value="Titulo de la noticia"><br>
<textarea name="noticia">El texto de la noticia</textarea><br>
<input type="submit" name="enviar" value="Enviar Noticia">
</form>
<? } ?>

Abro y cierro las llaves :D
Lo dicho, informame sobre el error en concreto, linea... ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Shago en 04 de Agosto de 2007, 17:15:58 pm
tengo un problema cuando envio la noticia me sale esto (ya tengo la tabla en mysql)

Warning: mysql_query(): Access denied for user 'admin147349'@'localhost' (using password: NO) in /home/virtual/sitio147349/www/enviar.php on line 8

Warning: mysql_query(): A link to the server could not be established in /home/virtual/sitio147349/www/enviar.php on line 8
Ha ocurrido un error, no se ha procesado la noticia

Lo unico que creo que pueda ser es q la mysql esta ocupada por otro archivo... eso tiene que ver?
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: G2K en 04 de Agosto de 2007, 17:47:16 pm
Amigo eso es fallo de la configuración del conectar.php ;)

Un saludo
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: FeDe en 05 de Agosto de 2007, 13:47:47 pm
Buenas,

Naveda, que yo vea.. falta el archivo conectar.php & la inclusión de dicho archivo... sino no podría conectarse a la base de datos, no sé si tengo razón o es porque es la primera parte...

Saludos ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 05 de Agosto de 2007, 13:57:19 pm
Si te fijas he dicho varias veces que cada uno conecta como quiere, no voy a poner ese codigo porque ya sería dar todo hecho, aquí estamos para enseñar con Tutoriales, que eso es lo que es.
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: FeDe en 05 de Agosto de 2007, 14:00:39 pm
Buenas de nuevo,

Ok.. no me he leído todos los POST, solo por encima alguno que otro...

Así que te pido disculpas :P

Saludos :)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: javier_modding en 17 de Agosto de 2007, 04:11:38 am
Me sale un error


Ha ocurrido un error, no se ha procesado la noticia


-.-! no entiendo porque pasa eso -.-
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 17 de Agosto de 2007, 20:14:44 pm
Es posible que porque no has creado la tabla donde se introducen las noticias. Usa el codigo SQL que aparece en este tutorial y creala.
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Faver en 30 de Noviembre de 2007, 00:34:07 am
Perdon por revivir post :$ Pero esque tengo una duda xd
www.areagfx.webspacemania.com/habbohoy/enviar.php
Relleno el formulario y me dice:

Warning: mysql_query(): Access denied for user 'admin156803'@'localhost' (using password: NO) in /home/virtual/sitio156803/www/habbohoy/enviar.php on line 6

Warning: mysql_query(): A link to the server could not be established in /home/virtual/sitio156803/www/habbohoy/enviar.php on line 6
Ha ocurrido un error, no se ha procesado la noticia

^^ que paso?  grax :D
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: G2K en 30 de Noviembre de 2007, 10:19:42 am
Mal configurado el conectar... o el usuario de la db no tiene permisos o no existe ;)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Faver en 30 de Noviembre de 2007, 23:23:11 pm
Pero el conectar lo tengo bien... y las tablas en la SQL si que estan ^^
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: G2K en 02 de Diciembre de 2007, 09:55:59 am
Acceso denegado para el usuario admin156803 (Lo dice claramente el error, eso si en ingles :P)
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: westwest en 10 de Enero de 2008, 21:41:19 pm
kerria saber cuando vas a poner la 2ª parte por k ando algo liado... xD
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Joel en 06 de Febrero de 2008, 20:06:47 pm
Y como vamos a entrar al admin para editar las noticias si no he registrado ningun user ni pass ni tampoco viene con instalador :S

Esta malo esto ¿Entonces como ago?  :-X
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 06 de Febrero de 2008, 20:09:05 pm
Y como vamos a entrar al admin para editar las noticias si no he registrado ningun user ni pass ni tampoco viene con instalador :S

Esta malo esto ¿Entonces como ago?  :-X

Leete el tutorial completo, con sus 3 partes y verás...
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Joel en 06 de Febrero de 2008, 20:16:12 pm
Leete el tutorial completo, con sus 3 partes y verás...

Si vi las 3 partes, y lo hize entero y lo modifique yo porque se veia feo todo y lo puse en unas lindas casillas y con una letra mas llamativas  :laugh:
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 06 de Febrero de 2008, 20:20:25 pm
No me gusta la prepotencia Joel... guardatela para tus confianzas ;)
Si no hay ninguna duda más...
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Joel en 06 de Febrero de 2008, 20:38:38 pm
Me sale que hay un error  :o

Warning: Cannot modify header information - headers already sent by (output started at /home/virtual/sitio169540/www/noticias/admin_noticias.php:1) in /home/virtual/sitio169540/www/noticias/admin_noticias.php on line 129
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: CarlosRdrz en 06 de Febrero de 2008, 20:43:32 pm
Algo habras hecho.
Ninguno de los codigos que se han puesto en este tema alcanzan las 129 lineas.
Y si vas a preguntar acerca de si influye demasiado agregarle codigo a un sistema así (sin los conocimientos necesarios) la respuesta es si.

Saludos
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Joel en 06 de Febrero de 2008, 20:45:50 pm
Algo habras hecho.
Ninguno de los codigos que se han puesto en este tema alcanzan las 129 lineas.
Y si vas a preguntar acerca de si influye demasiado agregarle codigo a un sistema así (sin los conocimientos necesarios) la respuesta es si.

Saludos

Esque las lineas se me saltaron osea, mira asi, te muestro todo el codigo lo hize en una celda de diseño pero en php:

<style type="text/css">
<!--
body {
   background-image: url(imagenes/2lt4saq.jpg);
}

.titulo {
   padding-top: 5px;
   margin: 0;
   color: #cc0000;
   font-family: Verdana;
   font-size: 24px;
   font-weight: bold;
}

.frame {
   width: 180px;
   height: 350px;
   overflow: auto;
}

.Enlacemenu { 
   color: #aa3300;
   font-size: 10px;
   font-style: normal;
   font-family: verdana;
   text-decoration: none;
}

.Enlacemenu: hover {
   color: steelblue;
   font-size: 10px;
   font-style: normal;
   text-decoration: none;
}

.Boton {
   font-size: 10px;
   font-family: Verdana, Arial, Helvetica, sans-serif;
   border: 1px solid #909090;
   color: #3E5766;
   font-weight: bold;
   background-color: #D6D6D6;
}

.Campo {
   font-size: 10px;
   font-family: verdana;
   border: 1px solid #909090;
   background-color: #DDDDDD;
}

.Select {
   font-size: 10px;
   border: 1px #000000 outset;
   list-style-position: inside;
   list-style-type: disc;
   padding-top: 1px;
   padding-right: 1px;
   padding-bottom: 1px; padding-left: 1px;
   font-family: Verdana;
}

A:link {color:#000000;FONT-SIZE: 10px; FONT-FAMILY: Verdana, Helvetica;text-decoration:none}

A:visited {color:#000000;FONT-SIZE: 10px; FONT-FAMILY: Verdana, Helvetica;text-decoration:none}
.Estilo2 {
   color: #000000;
   font-size: 10px;
   font-style: normal;
   font-family: verdana;
   text-decoration: none;
   font-weight: bold;
}
.Estilo5 {color: #FF0000; font-size: 10px; font-style: normal; font-family: verdana; text-decoration: none; }
.Estilo6 {color: #000000}
-->
</style><table width="958" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="206" height="68">&nbsp;</td>
    <td width="15">&nbsp;</td>
    <td width="513">&nbsp;</td>
    <td width="15">&nbsp;</td>
    <td width="209">&nbsp;</td>
  </tr>
  <tr>
    <td height="32">&nbsp;</td>
    <td valign="top"><img src="imagenes/vak_groot_01_004.gif" width="15" height="32" /></td>
    <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="imagenes/vak_groot_02_003.gif">
      <!--DWLayoutTable-->
      <tr>
        <td width="513" height="32" align="left" valign="middle"><img src="imagenes/panel.gif" width="148" height="11" /></td>
        </tr>
    </table></td>
    <td valign="top"><img src="imagenes/vak_groot_03.gif" width="15" height="32" /></td>
  <td>&nbsp;</td>
  </tr>
  <tr>
    <td height="546">&nbsp;</td>
    <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="imagenes/vak_groot_04.gif">
      <!--DWLayoutTable-->
      <tr>
        <td width="15" height="546">&nbsp;</td>
        </tr>
    </table></td>
    <td align="center" valign="middle" bgcolor="#FFFFFF"><?PHP
/* ANTES DE TODO EL CODIGO HAY QUE CONECTAR A LA BASE DE DATOS */
if(isset($_POST['login']) && isset($_POST['user']) && isset($_POST['pass'])) {

   

$admin = array("usuario","pass"); //Ejemplo

   

if ($admin[0] == $_POST['user'] && $admin[1] == $_POST['pass']) {

   

   

//Acceso Concedido

   

   

setcookie("admin",$_POST['pass'],time()+3600); //El acceso durar&#225; "1 hora (3600 segundos)"

   

} else {

   

   

exit("El usuario o contraseña son incorrectos. Acceso denegado.");

   

}
}
if (!isset($_COOKIE['admin'])) {
?>
      <br />
      <br />
      <span class="Estilo2">Login admin:</span>
      <form action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
        <span class="Estilo2">Usuario:        </span>
        <input name="user" type="text" class="Campo" value="Usuario">
&nbsp;<span class="Estilo2">Password:</span>
<input name="pass" type="password" class="Campo" value="pass"><br>
<br />
<input name="login" type="submit" class="Boton" value="Acceder">
      </form>
      <?php
exit();
}
echo '<p align="center"><a href="'.$_SERVER['PHP_SELF'].'">Principal</a></p><hr>'; //Enlace en cada pagina hacia la principal
if (isset($_GET['borrar'])) { //Borrado de Noticias

   

if (is_numeric($_GET['borrar'])) {

   

   

//Borrado de las noticia con id = a $_GET['borrar']

   

   

$borrando = "DELETE FROM `noticias` WHERE id = '".$_GET['borrar']."'";

   

   

if (mysql_query($borrando)) {

   

   

   

echo "La noticia #".$_GET['borrar']." ha sido borrada con éxito.";

   

   

} else {

   

   

   

exit("Ha ocurrido alg&#250;n error, la noticia no se ha borrado.");

   

   

}

   

} else {

   

   

exit("Error: Noticia inexistente.");

   

}
} elseif (isset($_GET['editar'])) { //Edicion de Noticias

   

if (!is_numeric($_GET['editar'])) {

   

   

exit("Error: Noticia inexistente.");

   

}

   

if (isset($_POST['edit_form'])) {

   

   

$sql = "UPDATE `noticias` SET titulo = '".$_POST['titulo']."', ";

   

   

$sql.= "autor = '".$_POST['autor']."', ";

   

   


   

   

$sql.= "fecha = '".$_POST['fecha']."', ";

   

   

$sql.= "noticia = '".$_POST['noticia']."' WHERE id = '".$_GET['editar']."'";

   

   

if (mysql_query($sql)) {

   

   

   

echo "La noticia #".$_GET['editar']." ha sido editada con éxito.";

   

   

} else {

   

   

   

exit("Error: La noticia no se ha editado correctamente.");

   

   

}

   

} else {

   

   

$sql = mysql_query("SELECT * FROM `noticias` WHERE id = '".$_GET['editar']."'");

   

   

if (!mysql_num_rows($sql)) {

   

   

   

exit("Error: Noticia inexistente.");

   

   

}

   

   

$noticia = mysql_fetch_assoc($sql);

   

?>

   

      <form action="<?=$_SERVER['PHP_SELF'];?>?editar=<?=$_GET['editar'];?>" method="POST">
       
       
       
       
       
  <span class="Estilo2">Titulo:</span>
  <input name="titulo" type="text" class="Campo" value="<?=$noticia['titulo'];?>"><br>
       
       
       
       
       
  <span class="Estilo2">Autor:</span>
  <input name="autor" type="text" class="Campo" value="<?=$noticia['autor'];?>"><br>
       
       
       
       
       
  <span class="Estilo2">Fecha:</span>
  <input name="fecha" type="text" class="Campo" value="<?=$noticia['fecha'];?>" readonly><br>
       
       
       
       
       
  <br />
  <textarea name="noticia" cols="30" rows="4" class="Campo"><?=$noticia['noticia'];?></textarea><br>
       
       
       
       
       
  <br />
  <input name="edit_form" type="submit" class="Boton" value="Editar Noticia">
      </form>
      <?php

   

   

mysql_free_result($noticia);

   

}
} else { //Listado de Noticias

   

$query = mysql_query("SELECT * FROM `noticias` ORDER BY `id` DESC"); //Se extraen las noticias en orden reciente

   

if (mysql_num_rows($query)) { // Se comprueba si hay alguna noticia publicada

   

   

while ($noticia = mysql_fetch_array($query)) { //Se hace un bucle para mostrar cada noticia una a una

   

   

   

echo '<table border="0" width="100%">

   

   

   

   

<tr><td align="center">'.$noticia['titulo'].'</td></tr>

   

   

   

   

<tr><td>'.$noticia['noticia'].'</td></tr>

   

   

   

   

<tr><td>Escrita y enviada por: '.$noticia['autor'].' || Fecha: '.$noticia['fecha'].'</td></tr>

   

   

   

   

<tr><td><b>Opciones Admin:</b> ';

   

   

   

echo '<a href="'.$_SERVER['PHP_SELF'].'?borrar='.$noticia['id'].'">Borrar</a> ||

   

   

   

   

<a href="'.$_SERVER['PHP_SELF'].'?editar='.$noticia['id'].'">Editar</a></td></tr>

   

   

   

</table><hr>';

   

   

}

   

} else {

   

   

echo "Lo siento, no hay ninguna noticia publicada.";

   

}

   

mysql_free_result($noticia); //Se borran los datos usados
}
?>
      <br />
      <br />      <img src="imagenes/habbo_reading.png" width="114" height="105" /><br />
      <br />
      <span class="Estilo5"><span class="Estilo6">Creado por Joel -</span> V1 Beta</span></td>
    <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="imagenes/vak_groot_06.gif">
      <!--DWLayoutTable-->
      <tr>
        <td width="15" height="546">&nbsp;</td>
        </tr>
    </table></td>
    <td></td>
  </tr>
 
 
 
 
 
 
 
 
 
 
 
  <tr>
    <td height="10"></td>
    <td valign="top"><img src="imagenes/vak_groot_07.gif" width="15" height="10" /></td>
    <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="imagenes/vak_groot_08.gif">
      <!--DWLayoutTable-->
      <tr>
        <td width="513" height="10"></td>
        </tr>
    </table></td>
    <td valign="top"><img src="imagenes/vak_groot_09.gif" width="15" height="10" /></td>
    <td></td>
  </tr>
  <tr>
    <td height="115"></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
 
 

 
 
</table>

El problema esta en el:
setcookie("admin",$_POST['pass'],time()+3600); //El acceso durar&#225; "1 hora (3600 segundos)"
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 06 de Febrero de 2008, 20:47:43 pm
No se puede mostrar ningun dato antes del uso de funciones como set_cookie() o header()
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Joel en 06 de Febrero de 2008, 20:48:57 pm
No se puede mostrar ningun dato antes del uso de funciones como set_cookie() o header()

Mmm  :angel: Pero en el codigo de admin_noticias.php salia perfecto lo copie y lo pege en
archivo php y luego me sale ese error.. ¿Pero como?  :'(
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: CarlosRdrz en 06 de Febrero de 2008, 20:50:51 pm
Tienes este codigo antes:
Código: [Seleccionar]
<style type="text/css">
<!--
body {
   background-image: url(imagenes/2lt4saq.jpg);
}

.titulo {
   padding-top: 5px;
   margin: 0;
   color: #cc0000;
   font-family: Verdana;
   font-size: 24px;
   font-weight: bold;
}

...
...
...

Y eso es lo que hace que salte el error, como ya te dijieron no deberia haber nada.
Saludos
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Joel en 06 de Febrero de 2008, 20:55:27 pm
Tienes este codigo antes:
Código: [Seleccionar]
<style type="text/css">
<!--
body {
   background-image: url(imagenes/2lt4saq.jpg);
}

.titulo {
   padding-top: 5px;
   margin: 0;
   color: #cc0000;
   font-family: Verdana;
   font-size: 24px;
   font-weight: bold;
}

...
...
...

Y eso es lo que hace que salte el error, como ya te dijieron no deberia haber nada.
Saludos

Aaa.. ok gracias  :D

Y ahora me sale este error xD

Warning: mysql_query() [function.mysql-query]: Access denied for user 'admin169540'@'localhost' (using password: NO) in /home/virtual/sitio169540/www/noticias/admin_noticias.php on line 298

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/virtual/sitio169540/www/noticias/admin_noticias.php on line 298

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio169540/www/noticias/admin_noticias.php on line 302
Lo siento, no hay ninguna noticia publicada.
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio169540/www/noticias/admin_noticias.php on line 406
Título: Re: Sistema de Noticias Simple - 1ª Parte
Publicado por: Bill en 27 de Noviembre de 2008, 22:05:31 pm
Disculpa naveda pero, cuando publico mi noticia me sale noticia enviada correctamente y boy a mirara la noticia y sale No hay ninguna noticia publicada
Título: Re:Sistema de Noticias Simple - 1ª Parte
Publicado por: crunch en 26 de Septiembre de 2009, 16:44:32 pm
Muy bueno,y... lo siento por revivir tema, pero esque así cualquiera puede enviar noticias. como puedo hacer  que solo puedan los admins de mi MC? y que luego en el nombre del autor, salga su nombre?
Sería con if session y qué mas?...
Título: Re:Sistema de Noticias Simple - 1ª Parte
Publicado por: Hugox en 27 de Septiembre de 2009, 08:31:45 am
para que solo el administrador pueda seria algo asi

if($_COOKIE['USUARIO'] == "Tu Usuario" && $_COOKIE['contrasena']){
y para que salga el autor asi
$query = mysql_query("SELECT * FROM noticias WHERE id = "'$_GET['id']'"");
$fetch = mysql_query_fetch($query);
(En el while) Autor: $fetch['autor']
Título: Re:Sistema de Noticias Simple - 1ª Parte
Publicado por: crunch en 27 de Septiembre de 2009, 11:14:13 am
Pero eso no es solo para poner el usuario del tio?
Yo digo para que comprueben si es de rango de Admin del MC
Título: Re:Sistema de Noticias Simple - 1ª Parte
Publicado por: naveda en 27 de Septiembre de 2009, 18:59:26 pm
Para nuevas dudas, abrid un tema nuevo.