Regresar a la página www.ComoCrearTuWeb.com
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 17

Tema: Generar un rss feed con php

  1. #1
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18

    Generar un rss feed con php

    Bueno amigos aquí después de una larga ausencia y reindicándome después de mi anterior error con los rss feed pues aquí les dejo una forma de hacer un rss feed con php (estos códigos los e editado io para que se nos haga mas fácil la vida xD).

    Bueno para comenzar debemos crear una bd del nombre que sea con esta estructura sql
    Código PHP:
    CREATE TABLE IF NOT EXISTS `news` (
    `
    idint(4NOT NULL auto_increment,
    `
    titulovarchar(255) default NULL,
    `
    tipovarchar(255) default NULL,
    `
    fechadate NOT NULL,
    `
    leertext,
    `
    descripcion`text,
    KEY `id` (`id`)
    ENGINE=MyISAM  DEFAULT CHARSET=latin1
    Una vez echo esto debemos crear un simple archivo conexion.php que no es nada difícil de hacer solo sigan este formato
    (la explicación de la estructura de los códigos esta en los archivos)

    Código PHP:
    <?php
    function Conectarse()
    {  
    //conectamos a la base
    if (!($link=mysql_connect("servidor","usuario","contraseña")))
    {
    echo 
    "Error conectando a la base de datos.";
    exit();
    }   
    //Seleccionamos la base
    if (!mysql_select_db("base_de_datos",$link))
    {
    echo 
    "Error seleccionando la base de datos.";
    exit();
    }
    return 
    $link;
    }
    ?>
    y por ultimo generamos un archivo llamado rss.php con este formato

    Código PHP:
     <?php
    //Indicamos a php que lo que estamos por crear es un archivo XML
    header('Content-type: text/xml; charset="unicode-UTF-8"'true);

    //y como todo archivo XML debemos definirlo de esta manera:
    echo '<?xml version="1.0" encoding="iso-8859-1"?>';

    //Aquí la conexión o archivo de conexión a nuestra base de datos
    include ("conexion.php");
    $link=Conectarse();

    // Generamos nuestro documento
    echo '
    <rss version="2.0" >'
    ;

    //Hacemos una consulta y la ordenamos por el id para la fecha del chanel
    $notc mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 1");

    //Creamos un while para poder generar la fecha 
    while($row mysql_fetch_array($notc)){
    echo 
    '
    <channel>
      <title>titulo del rss</title>
      <link>url de la web</link>
      <description>corta descripción de la pagina</description>
      <language>es</language>
      <lastBuildDate>'
    .$row[fecha].'</lastBuildDate>
      <generator>Notepad</generator>
    '
    ;
    }
    //Hacemos la consulta y la ordenamos por id para mostrar siempre el último
    $resultado=mysql_query("select * from news order by id Desc",$link);

    //"Cortaremos" el artículo en 300 caracteres para hacer nuestra descripción
    $description=substr($row[descripcion],0,300)."[…]";

    //Creamos un while para poder generar todos los extractos de noticias de nuestro sitio
    while($row mysql_fetch_array($resultado)){
    echo 
    '  <item>
        <title><![CDATA['
    .$row[titulo].']]></title>
        <link>'
    .$row[leer].'</link>
        <pubDate>'
    .$row[fecha].'</pubDate>
        <description><![CDATA['
    .$row[descripcion].''.$description.']]></description>
        <category><![CDATA['
    .$row[tipo].']]></category>
        <guid isPermaLink="true">'
    .$row[leer].'</guid>
      </item>
    '
    ;
    }
    echo
    '</channel>
    </rss>'
    ;
    ?>
    Y listo si hicimos todo bien se vera a la perfección nuestro rss feed.
    Por ultimo no nos olvidemos de agregar esta lienea de codigo "<link rel="alternate" type="application/rss+xml" title="My RSS Feed" href="el link del rss" />" entre las etiquetas head de nuestra web para que sea accesible nuestro rss feed.

    Si desean ver el código funcionando visiten mi web
    http://www.mangasve.com.ve/rss.php

    Bueno eso es todo espero que les funcione.

    Edito:
    Se me olvidaba un detalle, explicar la BD, ósea para que es cada parte xD
    * id= id no es mas que un valor que va a aumentar por cada entrada que hagamos en la BD, esto se hace para ordenarla y no hace falta editarla.
    * titulo= creo que este se explica solo pero en fin es el titulo de nuestra entrada.
    * tipo= el tipo no es mas que un organizador para el rss feed, ósea si tenemos una pagina de noticias internacionales, el tipo lo podríamos poner por país ósea Venezuela, Colombia, brasil, etc.
    * fecha= muy importante para saber cuando a sido editado por ultima vez el documento.
    * leer= el que todos se preguntaran que es, pues sencillamente es la url de la noticia/entrada.
    * descripcion= es la descripción de la noticia.

    Bueno chicos al fin cumplo mi promesa y les enseño a hacer el formulario para actualizar el rss

    es muy sencillo solo deben crear un archivo en blanco y ponerle un nombre lo mas complicado posible pero que puedan recordar(recuerden que debe terminar con .php)
    ¿para que se hace esto? pues simple es para evitar que alguien descubra este link y nos publique basura en el rss

    luego copiamos este código en nuestro archivo ya nombrado
    Código PHP:
    <?php
    // Deshabilitar todo reporte de errores 
    error_reporting(0); 


    if (
    $_POST['post'])

    {

    //obtener datos
    $titulo $_POST['titulo'];
    $genero $_POST['genero'];
    $tipo $_POST['tipo'];
    $url $_POST['leer'];
    $descripcion $_POST['descripcion'];

    if(
    $titulo&&$genero&&url&&tipo&&$descripcion)

    {
    //insertar datos
    mysql_connect("el servidor","el usuario de la BD","la clave de la bd") or die (mysql_error());
    mysql_select_db("el nombre de la bd") or die (mysql_error());

    $fechadate("Y/m/d");

    $insertar mysql_query("INSERT INTO news VALUES ('','$titulo','$genero','$tipo','$fecha','$url','$descripcion')") or die (mysql_error());

    die (
    "Tus Noticias han sido Publicadas Para volver Pulsa <a href='el nombre qu le pongas al archivo'>aqui</a>");

    }
    else
    echo 
    "Favor llenar todos los campos.!";

    }

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=unicode-UTF-8" >
    <title>postear noticia</title>
    </head>
    <body style="margin:0 auto;padding-top:100px">
    <div style="width:600px; margin: auto">
    // el nombre del documento
    <form action ='el nombre del documento' method='POST'>
    <fieldset>
    <legend>POSTEADOR DE NOTICIAS</legend>
    <div style="background:#3399FF;padding:5px">
    <spam style="margin-right:62px;">Titulo:</spam> <input type = 'text' size="50" name = 'titulo'><hr>
    <spam style="margin-right:50px;">Genero:</spam> <input type = 'text' size="50" name = 'genero'><hr>
    <spam style="margin-right:75px;">Tipo:  </spam> <input type = 'text' size="50" name = 'tipo'>
    <p>Los capítulos y/o tomos que se actualizan</p><hr>
    <spam style="margin-right:86px;">Url:   </spam> <input type = 'text' size="50" name = 'leer'><hr>
    <spam style="margin-right:12px;">Descripción:</spam> <input type = 'text' size="50" name = 'descripcion'>
    <p>descripción y sinopsis completa</p><hr>
    <input type = 'submit' name='post' value='Publicar Noticias'>
    </div>
    </fieldset>
    </form>
    </div>
    </body>
    </html>
    aora me dirán como edito esto >_<

    es simple solo deben poner la información donde les indico y listo solo guarden y suban al servidor

    mysql_connect("el servidor","el usuario de la BD","la clave de la bd") or die (mysql_error());
    mysql_select_db("el nombre de la bd") or die (mysql_error());

    die ("Tus Noticias han sido Publicadas Para volver Pulsa <a href='el nombre qu le pongas al archivo'>aqui</a>");

    chicos hay miles de formas con las que pueden mejorar este código, pero esta solo es la forma mas cenciya creada nada mas para que funcione asi que solo les falta experimentar y ver que sucede xD

    PD para agregar imágenes solo deben ponerlas como si fueran a poner una imagen en html y listo

    Si este tema les a gustado o les pareció útil, pónganme un punto de reputación por favor ^_^
    http://www.comocreartuweb.com/consul...ation&p=263252
    Última edición por codomodragon; 29/03/2012 a las 15:44 Razón: Terminar tutorial
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  2. #2
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    905
    Poder de Reputación
    14
    Bueno después de analizar la estructura y saber que hay mucha gente que no tiene ni papa de php vamos a explicar un poco el código de nuestro compadre.

    Me centrare en el archivo llamado rss.php:


    1. Las etiquetas de apertura y cierre de php.

    Las etiquetas de apertura y cierre de php suelen ser ( <? y ?> o <?php Y ?>. La primera es la denominada apertura corta y la segunda es la apertura larga; la aceptación por parte de nuestro servidor dependerá de como tengamos configurado el php.ini de nuestro apache.


    La/s linea/s de comentario.

    Para hacer saber al navegador que estamos escribiendo lineas de comentario ; siempre debemos anteponer la doble barra ( // ) para que no tenga en cuenta lo que hay en esa linea.

    Por ejemplo :

    <link>http://www.mangasve.com.ve/</link>

    Esta linea de código este dentro de un comentario y por lo tanto el navegador solo leerá esto:

    <link>http:

    Como no queremos que eso nos pase pues lo ideal seria escribir el código de la siguiente manera:

    //Comentario: este es el enlace a mi web
    <link>http:www.mangasve.com.ve/</link>


    header

    Hablaremos ahora de la función header (); es usada para enviar una cabecera HTTP pura.

    Nota: Solo disponible a partir de PHP 4.4.2 y PHP 5.1.2 , esta función previene que sean enviadas más de una cabecera al mismo tiempo, como protección contra ataques de inyección en cabeceras.

    Bien ahora la linea de código,ok?

    header('Content-type: text/xml; charset="unicode-UTF-8"', true);

    Bien, en la linea de código podemos ver tres cosas interesantes:

    1. El tipo de contenido o Content-type, en este caso texto y código XML.

    Content-type: text/xml

    2. El tipo de codificación o charset, en este caso UTF-8 , aunque creo que la iso-8859-1 no vendría mejor.

    charset="unicode-UTF-8"


    3. True

    Nota:Bueno realmente no se que pinta true dentro de una función, pues suelen ir asociadas a variable y a cadenas.

    Otra cosa interesante que podemos ver es que cada concepto dentro de la función esta separado por punto y coma ( ; )

    Yo lo escribiría así:

    <?
    //Indicamos al navegador que es un documento en XML

    header('Content-Type: text/xml');

    //Versión y juego de carácteres de nuestro documento

    echo '<?xml version="1.0" encoding="iso-8859-1"?>';


    Bueno supongo que os preguntareis para que sirve echo. Bueno , bueno , ya lo explico calma.

    La instrucción echo sirve para mostrar en nuestra web lo escrito. En este caso cabecera de un documento XML. Este tipo de cabecera ya lo vimos en el tutorial de feeds RSS:

    http://www.comocreartuweb.com/consul...ighlight=feeds

    Con lo cual no os tiene que ser desconocido.
    Última edición por lantiga; 25/03/2011 a las 15:02
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

  3. #3
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    905
    Poder de Reputación
    14
    Bien supongo que ahora toca hablar de include .

    include es un comando que sirve principalmente para incluir información que esta dentro de otro documento php; seria algo así como hacer una vinculación. Eso no ahorrará tiempo y conseguiremos un código más limpio ( con el tiempo)
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

  4. #4
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    905
    Poder de Reputación
    14
    Creo que por ahora esto seria lo que denominaríamos introducción a php.

    ah, se me olvidaban las variables; bueno como es un tema muy, muy, muy largo de explicar solo os diré que se identifican con el símbolo ( $ )

    Haber si tengo tiempo y os hago un "tuto" de php en condiciones.
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

  5. #5
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    Amiga antes que nada recuerda que se supone que al comenzar esto de hacer un rss feed con php es necesario tener conocimientos básicos de php, si no pues se ara con xml nada más.

    Ósea no es necesario que se esplique php ya que no es el caso, el Tuto es solo para crear el feed no para explicar php.

    pero gracias por ltu interes

    PD: lo de unicode-utf-8 tienes toda la razón eso fue un desliz mío, ya que anduve experimentando con mi servidor que es medio pedante con los acentos.
    Última edición por codomodragon; 25/03/2011 a las 16:05
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  6. #6
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    905
    Poder de Reputación
    14
    Bueno ya me va bien ir haciendo referencias a php para cuando termine el tuto de php; igualmente hay veces que me lio un poco entre php y java pues el código es bastante similar, ya me entiendes.
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

  7. #7
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    mm similar bueno a mi me párese mas parecido el php al c pero bueno cada quien lo ve diferente.
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  8. #8
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    Actualizado
    Explicación de la bd agregada
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  9. #9
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    905
    Poder de Reputación
    14
    disculpa compadre un id no es un ¿ identificador ?

    Se que es una etiqueta más destinada a Atom que a RSS pero ahora mismo me dejas fuera de juego.
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

  10. #10
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    amm no entiendo cuales tu duda, esta fácil solo dije que es un valor numérico echo para diferenciar el orden de las entradas de la BD y no hace falta editarlo ya que este se auto incrementa con cada entrada, o en otras palabras lo mismo que crees tu.
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  11. #11
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    buen chicos al fin termine este tutoría espero que les sirva a todos
    y si no pues ni modo XD
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  12. #12
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    15
    Hola, se que llego un poco tarde (1 año mas o menos) pero es ahora cuando me empiaza a interesar los feeds.
    No me he medito de cabeza (todavía) hasta no tener un poquito mas claras las cosas.
    Creo entender, codomodragon, que lo que publica el feeds son noticias que los visitantes a tus paginas introducen en un form, que se guarda en una bbd y despues se incluyen en el archivo .xml a traves del while de la consulta php. ¿Es así?
    Si es así y aqui entramos en lo que a mi me atañe, esas noticias ¿pueden ser imagenes?
    Me explico: estoy creando una web de un lugar para que el personal pueda subir imagenes que las visualizaran todos los users que quieran. Y un RSS FEEDS para comunicar a aquel que se suscriba que: "fulanito de tal", ha subido una nueva imagen. No estaría nada mal.
    ¿Que me dices?
    Lo mejor de caerse al tropezar, es volverse a levantar.

  13. #13
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    15
    Vale pues lo he hecho, siguiendo vuestros tutos y adaptandolo a mis necesidades, YA tengo rss con los feeds de las imagenes nuevas de los users.
    Gracias
    Lo mejor de caerse al tropezar, es volverse a levantar.

  14. #14
    Recien Llegado! Pasaba por aquí...
    Fecha de Ingreso
    21 jun, 13
    Mensajes
    1
    Poder de Reputación
    0

    generar feed

    pongo el código le pongo la base de datos y demás pero cuando en el formulario le pongo publicar notica me sale error con la url, me podrían decir como se hace, gracias.

  15. #15
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    amigo quisas te falto modificar esta linea en el formulario
    Código PHP:
    <form action ='el nombre del documento' method='POST'
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •