Comunidad de diseño web y desarrollo en internet online

Generar codigo con PHP

Citar            
MensajeEscrito el 22 Ene 2011 01:52 pm
Buenos dias a todos ! este es mi primer post o mas bien un trabajo que me trae de cabeza y como aqui normalmente siempre hay soluciones a todo pues os pregunto.

Haber os pongo en situacion, estoy intentando hacer que mediante PHP me genere un codigo xml para RSS. Entonces tengo un html con un formulario donde se rellenan el titulo, la url y la descripcion del channel y los items del rss y un PHP donde cojo esas variables definidas en el html y las inserto en el codigo y luego las muestro con un "echo"... os pongo el codigo:

Código HTML :

<?xml version="1.0" encoding="UTF-8">
<html>
   <head>
      <title>Generador RSS</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>      
   <FORM NAME="RSSGen" METHOD="POST" ACTION="generator.php" ENCTYPE="TEXT/PLAIN">
   <h3>Canal.</h3>
   Titulo: </BR><INPUT id="iTituloChannel" NAME="TituloChannel" SIZE=20 MAXLENGTH=30 type="text" ><br/><br/>
   URL: </BR><INPUT ig="iURLChannel" NAME="URLChannel" SIZE=20 MAXLENGTH=30 type="text" ><br/><br/>
   Descripción: </BR><TEXTAREA id="iDescriptionChannel" NAME="DescriptionChannel" ROWS=5 COLS=40 ></TEXTAREA>
   <h3>Item.</h3> 
   Titulo: </BR><INPUT id="iTituloItem1" NAME="TituloItem1" SIZE=20 MAXLENGTH=30 type="text" ><br/><br/>
   URL: </BR><INPUT id="iURLItem1" NAME="URLItem1" SIZE=20 MAXLENGTH=30 type="text"><br/><br/>
   Descripción: </BR><TEXTAREA id="iDescrptionItem1" NAME="DescriptionItem1" ROWS=5 COLS=40 ></TEXTAREA>
   <h3>Item.</h3> 
   Titulo: </BR><INPUT id="iTituloItem2" NAME="TituloItem2" SIZE=20 MAXLENGTH=30 type="text"><br/><br/>
   URL: </BR><INPUT id="iURLItem2" NAME="URLItem2" SIZE=20 MAXLENGTH=30 type="text"><br/><br/>
   Descripción: </BR><TEXTAREA id="iDescrptionItem2" NAME="DescriptionItem2" ROWS=5 COLS=40 ></TEXTAREA>
   <INPUT TYPE="submit" VALUE="Procesar"><br/>
   </FORM>
    
   </body>
</html>


Código PHP :

<?php
$chtitle = isset($_POST['TituloChannel'])? $_POST['TituloChannel'] : '';
$churl = isset($_POST['URLChannel'])? $_POST['URLChannel'] : '';
$chdesc = isset($_POST['DescriptionChannel'])? $_POST['DescriptionChannel'] : '';
$itm1title = isset($_POST['TituloItem1'])? $_POST['TituloItem1'] : '';
$itm1url = isset($_POST['URLItem1'])? $_POST['URLItem1'] : '';
$itm1desc = isset($_POST['DescriptionItem1'])? $_POST['DescriptionItem1'] : '';
$itm2title = isset($_POST['TituloItem2'])? $_POST['TituloItem2'] : '';
$itm2url = isset($_POST['URLItem2'])? $_POST['URLItem2'] : '';
$itm2desc = isset($_POST['DescriptionItem2'])? $_POST['DescriptionItem2'] : '';
//$chtitle = $_POST['iTituloChannel'];
//$churl = $_POST['iURLChannel'];
//$chdesc = $_POST['iDescriptionChannel'];
//$itm1title = $_POST['iTituloItem1'];
//$itm1url = $_POST['iURLItem1'];
//$itm1desc = $_POST['iDescriptionItem1'];
//$itm2title = $_POST['iTituloItem2'];
//$itm2url = $_POST['iURLItem2'];
//$itm2desc = $_POST['iDescriptionItem2'];
$hora = date(DATE_RFC822);
echo '<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<rss version=\"2.0\">
<channel>
<title>'.$chtitle.'</title>
<link>'.$churl.'</link>
<description>'.$chdesc.'</description>
<pubDate>'.$hora.'</pubDate>
<item>
<title>'.$itm1title.'</title>
<link>'.$itm1url.'</link>
<description>'.$itm1desc.'</description>
</item>
<item>
<title>'.$itm2title.'</title>
<link>'.$itm2url.'</link>
<description>'.$itm2desc.'</description>
</item>
</channel>
</rss>';
?>


Bueno el php he definido las variables dos veces, en lo que no esta comentado es una manera de que no me salga la advertencia de que los espacios estan en blanco (aun no lo estan) y me devuelve este error "Notice: Undefined index ..."

si alguien me puede hechar una mano se lo agradeceria, por cierto el "echo" no me muestra las lineas del codigo tampoco, no se si sera por que los <> son caracteres especiales pero e probado a ponerles \ delante y sigue igual.

Un saludo y gracias de antemano.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 24 Ene 2011 02:56 am
seria bueno que pongas toda la linea del notice que te sale para saber ya que ahi te indica en que parte del script falla

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Ene 2011 11:39 am
Bueno, el error me daba porque habia que usar GET. Al final lo hice de otra manera distinta. Os dejo el codigo.

Este es el HTML, solo cabie el "método".

Código HTML :

<?xml version="1.0" encoding="UTF-8">
<html>
   <head>
      <title>Generador RSS</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
      
   <FORM NAME="RSSGen" METHOD="GET" ACTION="rssGen.php" ENCTYPE="TEXT/PLAIN">
   <h3>Canal.</h3>
   Titulo: </BR>
   <input name="TituloChannel" type="text" value="" size="50">
   <br/><br/>
   URL: </BR><INPUT NAME="URLChannel" SIZE=50 ><br/><br/>
   Descripción: </BR><TEXTAREA NAME="DescriptionChannel" ROWS=5 COLS=50 ></TEXTAREA>
   <h3>Item.</h3> 
   Titulo: </BR><INPUT NAME="TituloItem1" SIZE=50 ><br/><br/>
   URL: </BR><INPUT NAME="URLItem1" SIZE=50 ><br/><br/>
   Descripción: </BR><TEXTAREA NAME="DescriptionItem1" ROWS=5 COLS=50 ></TEXTAREA>
   <h3>Item.</h3> 
   Titulo: </BR><INPUT NAME="TituloItem2" SIZE=50 ><br/><br/>
   URL: </BR><INPUT NAME="URLItem2" SIZE=50 ><br/><br/>
   Descripción: </BR><TEXTAREA NAME="DescriptionItem2" ROWS=5 COLS=50 ></TEXTAREA>
   <INPUT TYPE="submit" VALUE="Descargar Fichero RSS"><br/>
   </FORM>
     
   </body>
</html>


Este es el PHP nuevo. Usando XMLWriter.

Código PHP :

<?php
//Generador de codigo XML-RSS.;
//email: [email protected];
//Fuente: http://ar2.php.net/manual/es/ref.xmlwriter.php;

//Variables.
$hora = date(DATE_RFC822);

//Generador de codigo;
$memory = xmlwriter_open_memory();
xmlwriter_start_document($memory,'1.0','UTF-8'); //<?xml version="1.0" encoding="UTF-8"?\>

xmlwriter_start_element ($memory,'rss'); 
xmlwriter_write_attribute( $memory, 'version', '2.0');//<rss version="2.0">

xmlwriter_start_element ($memory,'channel'); //<channel>
xmlwriter_write_element ($memory,'title', $_GET['TituloChannel']); //<title>titulo</title>
xmlwriter_write_element ($memory,'link', $_GET['URLChannel']); //<link>http://enlace.es</link>
xmlwriter_write_element ($memory,'description', $_GET['DescriptionChannel']);//<description>Descripcion (parrafada)</description>
xmlwriter_write_element ($memory,'pubDate', $hora);

xmlwriter_start_element ($memory,'item'); //<item>
xmlwriter_write_element ($memory,'title', $_GET['TituloItem1']); //<title>titulo</title>
xmlwriter_write_element ($memory,'link', $_GET['URLItem1']); //<link>http://enlace.es</link>
xmlwriter_write_element ($memory,'description', $_GET['DescriptionItem1']);//<description>Descripcion (parrafada)</description>
xmlwriter_end_element ($memory); //</item>

xmlwriter_start_element ($memory,'item'); //<item>
xmlwriter_write_element ($memory,'title', $_GET['TituloItem2']); //<title>titulo</title>
xmlwriter_write_element ($memory,'link', $_GET['URLItem2']); //<link>http://enlace.es</link>
xmlwriter_write_element ($memory,'description', $_GET['DescriptionItem2']);//<description>Descripcion (parrafada)</description>
xmlwriter_end_element ($memory); //</item>

xmlwriter_end_element ($memory); //</channel>
xmlwriter_end_element ($memory); //</rss>
$xml = xmlwriter_output_memory($memory,true);
//echo $xml; //Esto nos muestra directamente el rss en el navegador.
//Generador documento rss. Para descargar. 
//http://www.webtaller.com/construccion/lenguajes/php/lecciones/bajar-archivos-php.php
header( 'Content-Type: application/octet-stream');
header( 'Content-Disposition: attachment; filename="rss.xml"');
print($xml);
?>


Y nos devuelve lo siguiente:

Código XML :

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>Canal 1º ASIR</title><link>juandecolonia.es</link><description>una descripcion mas</description><pubDate>Mon, 24 Jan 11 02:58:19 -0500</pubDate><item><title>Fila de alante.</title><link>lospringaos.es</link><description>Esos huelen</description></item><item><title>Fila de atras.</title><link>losfukincracks.es</link><description>Nosotros molamos mas.</description></item></channel></rss>


Espero que a alguien le sirva de ayuda. Un saludo.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 24 Ene 2011 05:09 pm
como detalle agrega un \r de vez en caundo...

que como ves te saca todo en una línea y para depurar eso es un asco..

lo mejor es mostrarlo en una estructura correcta..

Código XML :

<?xml version...>
  <rss>
    <item>
    </item>
...

Por nax_hh

Claber

168 de clabLevel

1 tutorial

 

Reus

firefox
Citar            
MensajeEscrito el 24 Ene 2011 07:04 pm
Bueno, para verlo tienes razon habria que añadir unos saltos, pero para la depuracion asta donde tengo entendido el navegador o el programa con que se habre el fichero quita todos los saltos y lo hace una sola. Al final buscaba una manera de evitar tener que entrar y editar el codigo directamente cuando habia que modificarlo.

Ahora me surge otra cosa, el procedimiento me lo hace perfecto pero lo que me intereza es que me coja tambien caracteres especiales como las tildes, ñ, comillas etc... pero el resultado son simbolos raros.

alguna sugerencia ?

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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