Foros del Web » Programando para Internet » PHP »

PHP generar XML apartir de Recordset MYSQL

Estas en el tema de PHP generar XML apartir de Recordset MYSQL en el foro de PHP en Foros del Web. Bueno estoy haciendo un script para un reproductor de videos de youtube, pero no he podido crear el XML. Estoy usando el JW player, como ...
  #1 (permalink)  
Antiguo 28/02/2009, 23:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
PHP generar XML apartir de Recordset MYSQL

Bueno estoy haciendo un script para un reproductor de videos de youtube, pero no he podido crear el XML.
Estoy usando el JW player, como reproductor... y en la bse de datos guardo los codigos de youtube

La base de datos esta estructurada asi:
Código:
id   title 	itemcomment 	       videorcode         picturelink        ddeddate   
1    titulo   comentario   (ultima parte del link        url imagen    fecha agregado
                                           youtube)
Ahora el archivo para crear el xml
Código PHP:
<?php
// Base de datos conexion
$hostname 'localhost';
$database 'basededatos';
$username 'usuario';
$password 'contraseña';

$conect mysql_pconnect($hostname$username$password) or trigger_error(mysql_error(),E_USER_ERROR);
$archivo "video.php?id=".$vcode;  // --> este archivo genera la URL flv del video

// Estructura XML
$xml='
<playlist version="1" xmlns="hxxp://xspf.org/ns/0/">
    <title></title>
    <info></info>
    <tracklist>
        <track>
            <title>'
.$title.'</title>
            <annotation>'
.$descripcion.'</annotation>
            <location>'
.$archivo.'</location>
            <image>'
.$vthumb.'</imagen>
        </track>
    </tracklist>
</playlist>
          '
;
       
// Consulta base de datos       
$database->setQuery("SELECT * FROM #__items WHERE id='$id'" );
$vidyo $database->loadObjectList();
foreach (
$vidyo as $vidyo) {
    
$vcode $vidyo->videoservercode;
    
$vthumb $vidyo->picturelink;
    
$title $vidyo->title;
    
$descripcion $vidyo->itemcomment;
}

// Crea XML
$name_file="video.xml";
$file=fopen($name_file,"w+");
fwrite ($file,$xml);
fclose($file);
?>

Tengo problemas con la conexion a la base de datos, no c que es... sera que ya estoy muy ciego que no me doy cuenta de las cosas.
Ademas tengo una duda ¿Como creo el xml para que salgan varios videos... en la base de datos ahi varios pero a la hora de crear el xml no c como poner para que cree a un numero definido de videos... osea digamos los 5 ultimos videos

Muchas gracias

Última edición por gtuxyco; 01/03/2009 a las 10:55
  #2 (permalink)  
Antiguo 01/03/2009, 11:21
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: PHP generar XML apartir de Recordset MYSQL

¿De donde vienen las variables vthumb, title y description?
Que error te esta dando la conexion a la base de datos?
Para obtener los ultimos 5 tienes que ordenar la consulta por el id descendentemente y hacer un limit 5.
Y para mostrar mas de uno es cosa de crear el xml pertinente para ello, tienes que hacer un bucle e ir imprimiendo el xml.
  #3 (permalink)  
Antiguo 02/03/2009, 10:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: PHP generar XML apartir de Recordset MYSQL

Bueno despues de buscar mucho encontre un codigo que funciona...
pero no crea el xml si no que lo muestra en pantalla.
El codigo es el siguiente
Código PHP:
<?php


// Informacion de conexion a base de datos
$dbhost    'localhost';
$dbname    'xxxxxx';
$dbuser    'xxxxx';
$dbpasswd  'xxxxx';
// adjust the URL to yours
$url       'video.php?id=';


// Conecate a la base de datos
$dbcnx     mysql_connect($dbhost$dbuser$dbpasswd) or die("Could not connect to host: " $dbhost);
$dbselect  mysql_select_db($dbname) or die("Could not connect to database: " $dbselect);

if ((!
$dbcnx) || (!$dbselect))
{
  echo 
"Can't connect to database";
}


// Toma los datos de la base..
$query  sprintf("SELECT title, videoservercode, picturelink, itemcomment FROM #__items");
$result mysql_query($query$dbcnx) or die ("Could not select the menu name\n<br>\n" mysql_error() . "\n<br>\n" $query_1 "\n");


//Imprime los datos en pantalla
header("Content-Type: text/xml;charset=UTF-8");
print <<<END
<playlist version='1' xmlns='hxxp://xspf.org/ns/0/'>
  <title>Playlist generada</title>
  <info>$url</info>
    <trackList>

END;

while(
$data_array mysql_fetch_array($result))
{
  print <<<END
    <track>
      <title>
{$data_array['title']}</title>
      <location>
{$url}{$data_array['videoservercode']}</location>
      <image>
{$data_array['picturelink']}</image>
      <annotation>
{$data_array['itemcomment']}</annotation>
      </track>

END;
}

print <<<END
  </trackList>
</playlist>

END;
?>
Pero ahora quiero ponerle la funcion fwrite y no he podido...
Cuando lo pongo no escribe nada

Código PHP:
// Crea XML
$name_file="video.xml";
$file=fopen($name_file,"w+");
fwrite ($file,$xml);
fclose($file); 
Pues lo que yo estoy haciendo es convertir toda las lineas que imprimen el resultado en la funcion $xml
pero no me bota nada..
:)
Y todabia no he podido hacer lo que dijiste del limit no c como se hace
  #4 (permalink)  
Antiguo 02/03/2009, 10:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: PHP generar XML apartir de Recordset MYSQL

Pues en lugar de imprimirlo asignalo a una variable y esa variable guardala en el fwrite()

Saludos
  #5 (permalink)  
Antiguo 02/03/2009, 12:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: PHP generar XML apartir de Recordset MYSQL

El problema que me surge cuando los pongo como variable es el while
no c como poner para que el loop ese se escriba

lo he puesto asi pero no sale nada
Código PHP:
$variable = while($data_array mysql_fetch_array($result))
{
 echo <<<END
    <track>
      <title>
{$data_array['title']}</title>
      <location>
{$url}{$data_array['videoservercode']}</location>
      <image>
{$data_array['picturelink']}</image>
      <annotation>
{$data_array['itemcomment']}</annotation>
      </track>

END;
} ; 
  #6 (permalink)  
Antiguo 02/03/2009, 14:04
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: PHP generar XML apartir de Recordset MYSQL

O_O No puedes asignarle un while() o cualquier otra estructura de control a una variable.

Código PHP:
while($data_array mysql_fetch_array($result)) 

$variable .= <<<END 
    
<track
      <
title>{$data_array['title']}</title
      <
location>{$url}{$data_array['videoservercode']}</location
      <
image>{$data_array['picturelink']}</image
      <
annotation>{$data_array['itemcomment']}</annotation
      </
track>
END

  #7 (permalink)  
Antiguo 02/03/2009, 16:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Bueno asi si funciona... pero apenas pone uno solo

Código PHP:
$xmlinicio = "
<?xml version='1.0' encoding='utf-8'?>
<playlist version='1' xmlns='hxxp://xspf.org/ns/0/'>
  <title>playlist</title>
  <info>$url</info>
    <trackList>
";
while($data_array = mysql_fetch_array($result))
{
$xml =  <<<END
    <track>
      <title>{$data_array['title']}</title>
      <location>{$url}{$data_array['videoservercode']}</location>
      <image>{$data_array['picturelink']}.jpg</image>
      <annotation>{$data_array['itemcomment']}</annotation>
    </track>

END;
}


$xmlcerrar = "
  </trackList>
</playlist>

";

// Crea XML
$name_file="video.xml";
$file=fopen($name_file,"w+");
fwrite ($file,$xmlinicio);
fwrite ($file,$xml);
fwrite ($file,$xmlcerrar);
fclose($file);
?>
solo bota un resultado..
Perdon es que me he enrredado un poco con esto de PHP...

Anda perdon era que me faltaba el punto...
Ese puto que significa?

Última edición por GatorV; 02/03/2009 a las 17:14
  #8 (permalink)  
Antiguo 02/03/2009, 17:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: PHP generar XML apartir de Recordset MYSQL

Es para concatenar en PHP:
Código php:
Ver original
  1. $var = $una_var . $otra_var;

Saludos
  #9 (permalink)  
Antiguo 18/03/2009, 01:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: PHP generar XML apartir de Recordset MYSQL

Bueno aqui esta el codigo del modulo de joomla que estaba haciendo... es para poner un reproductor a los videos de el componete de seyret
Logro hacer el bucle para crear el XML... pero ahora que lo puse en el modulo siempre me da
Notice: Undefined variable: xml in /www/Final/modules/mod_seyretyoutube/mod_seyretyoutube.php on line 84
Código PHP:
<?php
//--------------------------------------------------------//
//No acceso directo
defined('_JEXEC') or die('Direct Access to this location is not allowed.');

//Get parametros de la configuracion del modulo(XML file)
        // Tamaño
$width =  $params->get('width''');
$height $params->get('height''');
        
// Logo y skin
if ($params->get('logo_url')){
    
$logo_url $params->get('logo_url''');
    
$logo '&logo='.$logo_url;
}
$skin_variant $params->get('skin_variant''');

if (
$params->get('skin_variant')){
    
$skin_variant $params->get('skin_variant''');
    
$skin "modules/mod_seyretyoutube/skin/".$skin_variant.'.swf';
}
        
// Playlist
$playlist_position $params->get('playlist_position''');        
$playlist_url "modules/mod_seyretyoutube/video.xml";
$video      $playlist_url.'&playlist='.$playlist_position
$orderby $params->get('orderby''addeddate'); //ordenar por
$limit     $params->get('limit''6'); // tamaño lista
                    // repetir
if ($params->get('playlist_repeat')){
    
$playlist_repeat $params->get('playlist_repeat''');
    
$repeat '&'.$playlist_repeat;
}                     
// aleatorio
if ($params->get('playlist_shuffle')){
    
$playlist_shuffle $params->get('playlist_shuffle''');
    
$shuffle '&'.$playlist_shuffle;
}
                    
// Automatico 
if ($params->get('autostart')){
    
$autostart "&autostart=true";
}
// Parametros de flash
$count   $params->get'count''');
$version $params->get'version''');

// Conexion a la base de datos
$db     = &JFactory::getDBO();
$query  "SELECT id, title, itemcomment, videoservercode, picturelink FROM jos_seyret_items WHERE videoservertype = 'youtube'ORDER BY ".$orderby." DESC LIMIT ".$limit."";
$result $db->Query($query);

$url    'index.php?option=com_seyret?task=videodirectlink&id=';
//Partes del XML
        //inicio
$xmlinicio "
<playlist version='1' xmlns='hxxp://xspforg/ns/0/'>
  <title>Generated Playlist from a MySQL DataBase</title>
  <info>$url</info>
    <trackList>
"
;
        
// Bucle para la lista
while($data_array =  mysql_fetch_array($result))
{
$vcode   $data_array['videoservercode'];
$vidlink file_get_contents("/components/com_seyret/video.php?id=".$vcode);
$xml    .=  <<<END
    <track>
      <title>
{$data_array['title']}</title>
      <location>$vidlink.flv</location>
      <image>
{$data_array['picturelink']}</image>
      <annotation>
{$data_array['itemcomment']}</annotation>
      <info>
{$url}{$data_array['id']}</info>
    </track>
END;
}
        
//Fin
$xmlcerrar "
    </trackList>
</playlist>

"
;

// Crea el archivo XML
$name_file="video.xml";
$file=fopen($name_file,"w+");
fwrite ($file,$xmlinicio);
fwrite ($file,$xml);
fwrite ($file,$xmlcerrar);
fclose($file);


//---------------------------------------------------------//
?>

<style type="text/css">
    #copyright {display:none;} 
</style>
<div id="videoplayer<?php echo $count ?>"><a href="hxxp://wwwmacromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</div>
<script type="text/javascript" src="<?php echo JURI::base();;?>modules/mod_seyretyoutube/swfobject.js"></script>
<script type="text/javascript">
    var s1 = new SWFObject("<?php echo JURI::base();;?>modules/mod_seyretyoutube/jwplayer.swf","ply<?php echo $count ?>","<?php echo $width ?>","<?php echo $height ?>","<?php echo $version ?>","#FFFFFF");
    s1.addParam("allowfullscreen","true");
    s1.addParam("allowscriptaccess","always");
    s1.addVariable("skin", "<?php echo JURI::base();;?><?php echo $skin ?>");
    s1.addParam('wmode','opaque');
    s1.addParam("flashvars","file=<?php echo JURI::base();;?><?php echo $video ?><?php echo $preview ?><?php echo $logo ?><?php echo $link ?><?php echo $repeat ?><?php echo $shuffle ?><?php echo $autostart ?>");
    s1.write("videoplayer<?php echo $count ?>");
</script>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:41.