Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 13-feb-2008, 12:40   #1 (permalink)
rogertm tiene algunos puntos positivos de karma
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.234
Sistema de Noticias (aporte)

hola foreros, he publicado un en mi blog, como crear un sistema de noticias sencillo usando php y mysql, y quiero compartirlo con ustedes, y tal vez sea un buen momento, pues ultimamente he visto varios post relacionados con el tema.

basicamente se conforma de los siguientes archivos:
  • db-cnx.php -> conexion a la BD
  • add-categoria.php -> agregar categorias
  • add-noticia.php -> agregar las noticias
  • list-categoria.php -> mostrar las categorias en una lista
  • list-noticia.php -> mostrar las noticias dependiendo de la categoria pedida, si no, entonnces mostrara todas las noticias
  • index.php -> inicio, incluye los archivos: db-cnx.php, list-categoria.php y list-noticia.php
  • sistemanoticias.sql -> la base de datos
aqui el codigo de cada uno:

sistemanoticias.sql
Código PHP:
-- Base de datos: `sistemanoticias`

CREATE TABLE `sn_categorias` (
  `
cat_IDint(11NOT NULL auto_increment,
  `
catCategoriavarchar(100NOT NULL,
  
PRIMARY KEY  (`cat_ID`)
ENGINE=MyISAM;

CREATE TABLE `sn_noticias` (
  `
not_IDint(11NOT NULL auto_increment,
  `
notTitulovarchar(255NOT NULL,
  `
notTextotext NOT NULL,
  `
notCategoriaIDint(11NOT NULL,
  
PRIMARY KEY  (`not_ID`)
ENGINE=MyISAM
db-cnx.php
Código PHP:
<?php
$db_link 
mysql_connect('localhost''root''');
if(!
$db_link){
    die(
'No se pudo conectar: ' mysql_error());
}
$db_selected mysql_select_db('sistemanoticias'$db_link);
if(!
$db_selected){
    die(
'No se selecciono la BD: ' mysql_error());
}
?>
add-categoria.php
Código PHP:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');

// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
    
// comprobamos que el formulario no envie campos vacios
    
if(!empty($_POST['catCategoria'])){
        
// creamos la variable y le asignamos el valor a insertar
        
$catCategoria $_POST['catCategoria'];
        
// hacemos el INSERT en la BD
        
$sqlInsertCat mysql_query("INSERT INTO sn_categorias (catCategoria)
                                    VALUES ('$catCategoria')"
$db_link)
                                    or die(
mysql_error());
        
// enviamos un mensaje de exito
        
echo "Los datos fueron gurdados correctamente";
    }else{
        
// si el formulario viene vacio
        // enviamos un mensaje de error
        
echo "Debe llenar el formulario";
    }
}
?>
<!-- el formulario -->
<form name="categoria" action="<?php $_SERVER['PHP_SELF'?>" method="post">
    <p>
    Nueva Categor&iacute;a<br />
    <input type="text" name="catCategoria" /> 
    <input type="submit" name="enviar" value="Enviar" />
    </p>
</form>
add-noticia.php
Código PHP:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');

// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
    
// comprobamos que el formulario no envie campos vacios
    
if(!empty($_POST['notTitulo']) && $_POST['notTexto'] &&
    
$_POST['notCategoriaID']){
        
// creamos las variables y les asignamos los valores a insertar
        
$notTitulo $_POST['notTitulo'];
        
$notTexto $_POST['notTexto'];
        
$notCategoriaID $_POST['notCategoriaID'];
        
// hacemos el INSERT en la BD
        
$sqlInsertNot mysql_query("INSERT INTO sn_noticias
                                     (notTitulo, notTexto, notCategoriaID)
                                     VALUES ('$notTitulo', '$notTexto', '$notCategoriaID')"
,
                                     
$db_link) or die(mysql_error());
        
// enviamos un mensaje de exito
        
echo "Los datos fueron gurdados correctamente";
    }else{
        
// si el formulario envia algun campo vacio
        // enviamos un mensaje de error
        
echo "Debe llenar todos los campos del formulario";
    }
}
?>
<!-- el formulario -->
<form name="noticia" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <p>
    T&iacute;tulo de la Noticia<br />
    <input type="text" name="notTitulo" size="50" />
    </p>
    <p>
    Texto de la Noticia<br />
    <textarea name="notTexto" rows="10" cols="50"></textarea>
    </p>
    <p>
    Categor&iacute;a<br />
    <select name="notCategoriaID">
        <option value="">Escoger de la Lista</option>
    <?php
    
// asignamos una categoria a la noticia
    // mediante un select
    
$sqlQueryCat mysql_query("SELECT * FROM sn_categorias"$db_link)
                                or die(
mysql_error);
    
// creamos un bucle while
    // que nos muestre todas las categorias
    // que tenemos guardadas en la BD
    
while($rowCat mysql_fetch_array($sqlQueryCat)){
        echo 
"<option value='$rowCat[cat_ID]'>$rowCat[catCategoria] - $rowCat[cat_ID]</option>";
    }
    
?>
    </select>
    </p>
    <p>
    <input type="submit" name="enviar" value="Enviar" />
    </p>
</form>
list-categoria.php
Código PHP:
<h1>Categor&iacute;as...</h1>
<?php
$sqlQueryCat 
mysql_query("SELECT * FROM sn_categorias"$db_link)
                            or die(
mysql_error);
echo 
"<ul>";
while(
$rowCat mysql_fetch_array($sqlQueryCat)){
    echo 
"<li><a href='?categoria=$rowCat[catCategoria]&amp;id=$rowCat[cat_ID]'>$rowCat[catCategoria]</a></li>";
}
echo 
"</ul>";
?>
list-noticia.php
Código PHP:
<?php
// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
    
// asignamos los valores
    // a las variables que usaremos
    
$cat_ID $_GET['id'];
    
$categoria $_GET['categoria'];
    
$clausula "WHERE notCategoriaID = '$cat_ID'";
    
// tambien armamos el titular de la pagina
    
$titulo "Noticias en la categoria $categoria";
}else{
    
// de lo contrario
    // el titulo sera general
    
$titulo "Todas las noticias";
}
// armamos la consulta
$sqlQueryNot mysql_query("SELECT notTitulo, notTexto FROM sn_noticias
                            $clausula"
$db_link)
                            or die(
mysql_error);
echo 
"<h1>$titulo</h1>";
// mostramos las noticias,
// otra vez usanod un bucle while
while($rowNot mysql_fetch_array($sqlQueryNot)){
    echo 
"<h1>$rowNot[notTitulo]</h1>";
    echo 
nl2br("$rowNot[notTexto]");
}
?>
index.php
Código PHP:
<html>
<head>
    <title>Sistema de Noticias - By RogerTM</title>
</head>
<body>
<h1>Sistema de Noticias - By RogerTM</h1>
<?php include('db-cnx.php'); ?>
<div style="float:left; width: 25%;">
    <?php include('list-categoria.php'); ?>
</div>
<div style="float:right; width: 75%;">
    <?php include('list-noticia.php'); ?>
</div>
</body>
</html>
en mi blog, doy la explicacion de como hacerlo, no la puse aqui por razones obvias.

http://kilometrocero.wordpress.com/2...mysql-parte-i/
http://kilometrocero.wordpress.com/2...ysql-parte-ii/

espero les sirva y tambien espero sus sugerencias y comentarios

saludos y suerte
__________________
Mientras mas aprendo, me doy cuenta que se menos...
ID de usuario en FDW: 110278
Kilometro Cero
Bloggers Cuba
rogertm está desconectado   Responder Citando
Antiguo 15-feb-2008, 09:18   #2 (permalink)
jpunk ha deshabilitado el karma
 
Avatar de jpunk
 
Fecha de Ingreso: octubre-2005
Mensajes: 248
De acuerdo Re: Sistema de Noticias (aporte)

Gracias rogertTM

Genial tu aporte, muy fácil de entender, además la explicación justa en donde se requiere, funciona perfecto.

Excelente para comenzar a crear pequeños proyectos y dar ese paso ya que a veces cuesta un poco lanzarse al agua lo digo por experiencia je je.

Bueno solo una recomendación a tu blog como usuario, no es una critica ni nada; pero seria mejor que el CODE en tu blog, los textos fueran resaltados, pues facilita la interpretación de las fuentes.

Genial tu grano de arena, así es como se fortalece la comunidad Open Source.
Y sigue desarrollando buenos manuales o estos temas que tanto nos interesan.

Chauuu.
jpunk está desconectado   Responder Citando
Antiguo 15-feb-2008, 09:24   #3 (permalink)
spider_boy tiene algunos puntos positivos de karma
 
Avatar de spider_boy
 
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 598
Re: Sistema de Noticias (aporte)

El aporte se agradece... pero una sugerencia... estuve viendo el código, y no parseaste ninguna variable, ya sea por post o por get... creo que deberías hacerlo...

Nos vemos...
spider_boy está desconectado   Responder Citando
Antiguo 15-feb-2008, 09:37   #4 (permalink)
luks77 ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Re: Sistema de Noticias (aporte)

Perdon por mi tonta pregunta pero ¿isset? Que hace??
luks77 está desconectado   Responder Citando
Antiguo 15-feb-2008, 09:50   #5 (permalink)
Carlojas está en el buen camino
 
Avatar de Carlojas
 
Fecha de Ingreso: junio-2007
Ubicación: Bucaramanga, Colombia
Mensajes: 757
Re: Sistema de Noticias (aporte)

La función isset comprueba si una variable está definida o no lo está, isset() sólo trabaja con variables, ya que pasar cualquier otra cosa resultará en un error de intérprete.

PD: Esta muy bueno tu aporte rogertm

Saludos.
Carlojas está desconectado   Responder Citando
Antiguo 15-feb-2008, 10:08   #6 (permalink)
luks77 ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Re: Sistema de Noticias (aporte)

Tenes un error de sintaxis en add-noticias.php te falto poner

include ('db-cnx.php');

Porque me decia que no se puede conectar con la base de datos
luks77 está desconectado   Responder Citando
Antiguo 15-feb-2008, 13:33   #7 (permalink)
ferphp no se puede cailificar en este momento
 
Avatar de ferphp
 
Fecha de Ingreso: julio-2007
Ubicación: San Pedro Sula
Mensajes: 97
Re: Sistema de Noticias (aporte)

muy tutorial, va de maravilla. Una cosa, para hacer que la noticia tenga un resumen y despues ver más..., como sería?, excelente roger.
ferphp está desconectado   Responder Citando
Antiguo 15-feb-2008, 14:00   #8 (permalink)
T4ke0veR tiene algunos puntos positivos de karma
 
Avatar de T4ke0veR
 
Fecha de Ingreso: agosto-2007
Ubicación: Valencia - Venezuela
Mensajes: 1.274
Enviar un mensaje por ICQ a T4ke0veR Enviar un mensaje por MSN a T4ke0veR
Re: Sistema de Noticias (aporte)

Cita:
Iniciado por ferphp Ver Mensaje
muy tutorial, va de maravilla. Una cosa, para hacer que la noticia tenga un resumen y despues ver más..., como sería?, excelente roger.
En donde vayas a incluir la noticia.. colocas
Código PHP:
<?php echo substr($fila['contenido_noticias'], 0150);?>
<?php echo substr($fila['columna'], 0, 150);?>

cantidad de caracteres a extraer

Saludos
__________________
Roba un segundo a tu vida y hazlo eterno...!!!
Hospedaje y ventas de Dominio... Planes para revendedores...
Diseño Gráfico en general.. Programación Web...
T4ke0veR está desconectado   Responder Citando
Antiguo 15-feb-2008, 14:29   #9 (permalink)
Colaborador
okram llegará a ser famoso muy prontookram llegará a ser famoso muy prontookram llegará a ser famoso muy prontookram llegará a ser famoso muy pronto
 
Avatar de okram
 
Fecha de Ingreso: abril-2005
Ubicación: Arequipa - Perú
Mensajes: 1.869
Re: Sistema de Noticias (aporte)

Excelente aporte rogertm . Sólo un par de cosillas:

Cita:
Iniciado por http://kilometrocero.wordpress.com/2008/02/13/como-...-parte-ii/
NOTA: El archivo list-noticia.php tiene una característica, en caso de que no se halla echo clic en ninguna categoría, se mostrarán todas las noticias, de lo contrario, se mostrarán las noticias que pertenezcan a la categoría pedida.
Coincido con jpunk en ese tema de los códigos. No sé hasta que punto WordPress.com permita la coloreación de código.

Ahora, aunque yo no comparto la misma idea, leéte este mensaje Maborak reader (Beta) - Download/Install.

Y después, no se si sea muy exigente a la hora de escoger sistemas prefabricados, pero usualmente me gusta ver demos online y cosas asi antes de descargar y evaluar el código. Pienso que da una primera idea global de la eficacia/eficiencia del "producto". Sólo es una sugerencia (muy personal).

Muy buen trabajo. En estos días le doy una ojeada al código y ya te estoy dando mis comentarios/sugerencias

Un saludo,
__________________
- Facultad de Medicina UNSA - 4to Año » Ginecología & Farmacología
PHPeru.net - Blog
okram está desconectado   Responder Citando
Antiguo 15-feb-2008, 15:58   #10 (permalink)
RODRIASTU está en el buen camino
 
Fecha de Ingreso: agosto-2003
Ubicación: Argentina
Mensajes: 69
Re: Sistema de Noticias (aporte)

3 preguntas!

1-si quiero borrar las noticias y borrar las categorias como hago?

2-no entiendo en donde pongo esa parte para ver la noticia sintetizada y desp en ver mas, ver la noticia completa.

3-cómo hago para poner 1 imágen que acompañe la noticia?


saludos!
__________________
<<Rodr-GO!!!!>>
RODRIASTU está desconectado   Responder Citando
Antiguo 18-feb-2008, 09:08   #11 (permalink)
rogertm tiene algunos puntos positivos de karma
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.234
Re: Sistema de Noticias (aporte)

Cita:
Iniciado por luks77 Ver Mensaje
Tenes un error de sintaxis en add-noticias.php te falto poner

include ('db-cnx.php');

Porque me decia que no se puede conectar con la base de datos
no era eso exactamente, era que tenia un comentario mal comentariado (valga la redundancia). arreglado

Cita:
Iniciado por okram Ver Mensaje
Excelente aporte rogertm . Sólo un par de cosillas:

Cita:
NOTA: El archivo list-noticia.php tiene una característica, en caso de que no se halla echo clic en ninguna categoría, se mostrarán todas las noticias, de lo contrario, se mostrarán las noticias que pertenezcan a la categoría pedida.
Coincido con jpunk en ese tema de los códigos. No sé hasta que punto WordPress.com permita la coloreación de código.

Ahora, aunque yo no comparto la misma idea, leéte este mensaje Maborak reader (Beta) - Download/Install.

Y después, no se si sea muy exigente a la hora de escoger sistemas prefabricados, pero usualmente me gusta ver demos online y cosas asi antes de descargar y evaluar el código. Pienso que da una primera idea global de la eficacia/eficiencia del "producto". Sólo es una sugerencia (muy personal).

Muy buen trabajo. En estos días le doy una ojeada al código y ya te estoy dando mis comentarios/sugerencias

Un saludo,
hola colaborador, como siempre gracias por tus criticas, arreglado lo de la falta de ortografia.
en cuanto a lo de los codigos, lo unico que puedo hacer es cambiar la plantilla, no mas que eso, ye estaba cocinando la idea, a ver por cual me decido.
el link que me pasaste tiene su cosa, por mi parte trato de evitar las declaraciones en ingles, pero no se puede negar que es mas manejable
espero que leas el codigo y me digas que te parece, hasta pense pasartelo primero y me lo evaluaras, pero despues me decidi a lanzarme.

Cita:
Iniciado por RODRIASTU Ver Mensaje
3 preguntas!

1-si quiero borrar las noticias y borrar las categorias como hago?

2-no entiendo en donde pongo esa parte para ver la noticia sintetizada y desp en ver mas, ver la noticia completa.

3-cómo hago para poner 1 imágen que acompañe la noticia?


saludos!
R-1/ ya eso es otra cosa, tal vez en algun momento lo explique en mi blog, pero puedes buscar en l foro acerca del tema, es algo que se ha tratado miles de veces
R-2/ puedes usar el ejemplo que puso T4ke0veR un poco mas arriba o si quieres, en las faq de php del foro, hay un ejemplo que explica cvander de como mostrar el primer parrafo de cada entrada, (perdon, lo busque pero no lo encuentro ahora, pero si esta)
R-3/ en mi opinion lo que se debe hacer es crear un upload para subir las imagenes y usar un editor como FKC-Editor, es un formulario como el que tienes aqui para escribir tus post y tiene una opcion de agregar imagenes (ya en el server o en otra direccion URL)
__________________
Mientras mas aprendo, me doy cuenta que se menos...
ID de usuario en FDW: 110278
Kilometro Cero
Bloggers Cuba
rogertm está desconectado   Responder Citando
Antiguo 18-feb-2008, 13:17   #12 (permalink)
Colaborador
okram llegará a ser famoso muy prontookram llegará a ser famoso muy prontookram llegará a ser famoso muy prontookram llegará a ser famoso muy pronto
 
Avatar de okram
 
Fecha de Ingreso: abril-2005
Ubicación: Arequipa - Perú
Mensajes: 1.869
Re: Sistema de Noticias (aporte)

Hola... en estos momentos estoy revisando tu código. No se si sea problema de mi navegador, pero veo que en vez de comillas [" (“)] hay [”] y en vez de ['] hay [' (')]. Esto me está causando problemas a la hora de ejecutar el código.

Ahora, estoy en el archivo

add-categoria.php

Línea 5:
Código PHP:
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){ 
Podría simplemente ir:
Código PHP:
if($_POST['enviar'] == &#8216;Enviar'){ 
Línea 9, 10, 11, 12:
Código PHP:
$catCategoria $_POST['catCategoria'];
// hacemos el INSERT en la BD
$sqlInsertCat mysql_query("INSERT INTO sn_categorias (catCategoria)
VALUES ('$catCategoria')"
$db_link
No haces ningún tipo de prevención de SQL injection. Aunque se supone que esta página será usada sólo por unos cuantos usuarios permitidos, podría causar problemas a la hora de crear una categoría como O'Reilly si magig-quotes está desactivado (PHP6 será así por defecto). Usa la función mysql_real_escape_string() antes de insertar los datos a la base de datos.

Además, no estaría demás el uso de la función trim()

add-noticia.php

Línea 5: idem

Línea 7:
Código PHP:
if(!empty($_POST['notTitulo']) && $_POST['notTexto'] &&
$_POST['notCategoriaID']){ 
Sólo usaste empty en el primer caso. Ten en cuenta que siempre los campos existirán, por lo que no está validando el texto ni la categoria
Código PHP:
if(!empty($_POST['notTitulo']) && !empty($_POST['notTexto']) &&
!empty(
$_POST['notCategoriaID'])){ 
La misma sugerencia a la hora de insertar los campos a la base de datos que en el caso anterior.

Segunda parte del tutorial
Cita:
NOTA: El archivo list-noticia.php tiene una característica, en caso de que no se haya echo clic en ninguna categoría, se mostrarán todas las noticias, de lo contrario, se mostrarán las noticias que pertenezcan a la categoría pedida.
Segunda vez que te lo hago notar (falta una [h])

list-categoria.php

Línea 4:
Código PHP:
or die(mysql_error); 
Faltan un par de paréntesis en la función mysql_error()

list-noticia.php

Línea 18:
Verificar los datos antes de hacer la consulta

Línea 26:
Código PHP:
echo nl2br("$rowNot[notTexto]");
echo 
nl2br($rowNot['notTexto']); 


Un saludo,
__________________
- Facultad de Medicina UNSA - 4to Año » Ginecología & Farmacología
PHPeru.net - Blog
okram está desconectado   Responder Citando
Antiguo 18-feb-2008, 13:45   #13 (permalink)
Moderador PHP
jpinedo ha deshabilitado el karma
 
Avatar de jpinedo
 
Fecha de Ingreso: septiembre-2003
Ubicación: Piura
Mensajes: 2.748
Re: Sistema de Noticias (aporte)

Cita:
Iniciado por okram Ver Mensaje
Ahora, estoy en el archivo

add-categoria.php

Línea 5:
Código PHP:
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){ 
Podría simplemente ir:
Código PHP:
if($_POST['enviar'] == 'Enviar'){ 
Creo que validar la existencia de la variable es escencial para evitar errores de tipo NOTICE o WARNING en caso de que no esté definida.

Cuando haces la comparación directamente (como sugieres), estás asumiendo que la variable ya está definida. Y mejor no asumimos nada.

Saludos,
jpinedo está desconectado   Responder Citando
Antiguo 19-feb-2008, 12:29   #14 (permalink)
rogertm tiene algunos puntos positivos de karma
 
Avatar de rogertm
 
Fecha de Ingreso: julio-2005
Ubicación: 23.133355, -82.353773
Mensajes: 1.234
Re: Sistema de Noticias (aporte)

Cita:
Iniciado por okram Ver Mensaje
Hola... en estos momentos estoy revisando tu código. No se si sea problema de mi navegador, pero veo que en vez de comillas [" (“)] hay [”] y en vez de ['] hay [' (')]. Esto me está causando problemas a la hora de ejecutar el código.
bueno no se, estas mirando el codigo aqui o en wordpress??? me he dado cuenta que wordpress hace algunos cambios como doble comillas["] por [``] o algo asi

Cita:
Iniciado por okram Ver Mensaje
Ahora, estoy en el archivo

add-categoria.php

Línea 5:
Código PHP:
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){ 
Podría simplemente ir:
Código PHP:
if($_POST['enviar'] == ‘Enviar){ 
siempre lo he hecho asi, pero, hay alguna diferencia???
Cita:
Iniciado por okram Ver Mensaje
Línea 9, 10, 11, 12:
Código PHP:
$catCategoria $_POST['catCategoria'];
// hacemos el INSERT en la BD
$sqlInsertCat mysql_query("INSERT INTO sn_categorias (catCategoria)
VALUES ('$catCategoria')"