Foros del Web » Programando para Internet » PHP »

Alternas dos consultas y crear un XML

Estas en el tema de Alternas dos consultas y crear un XML en el foro de PHP en Foros del Web. Hola, muy buens. Estoy teniendo un problema a la hora de programar algo que parecía bastante sencillo. Estoy intentando alternar dos bases de datos, ambas ...
  #1 (permalink)  
Antiguo 22/08/2011, 03:03
 
Fecha de Ingreso: agosto-2011
Mensajes: 12
Antigüedad: 12 años, 8 meses
Puntos: 0
Alternas dos consultas y crear un XML

Hola, muy buens. Estoy teniendo un problema a la hora de programar algo que parecía bastante sencillo.
Estoy intentando alternar dos bases de datos, ambas con noticias, y que me saquen un xml con esta estructura:
Cita:
<noticia id='65'>
<titular>noticia 3</titular>
<cuerpo></cuerpo>
<resumen><p>noticia 3notticia 3noticia 3</p></resumen>
<fecha>2001-01-01</fecha>
<foto_gr>fotos_portada/382912759669350px.jpg</foto_gr>
<seccion>1</seccion>
</noticia>



<noticia id='66'>
<titular>noticia 4</titular>
<cuerpo><p>4noticia 4noticia 4noticia 4</p></cuerpo>
<resumen><p>noticia 4noticia 4noticia 4noticia 4noticia 4</p></resumen>
<fecha>2001-01-01</fecha>
<foto_gr>fotos_portada/382912759669350px.jpg</foto_gr>
<seccion>2</seccion>
</noticia>


<noticia id='67'>
<titular>noticia 5</titular>
<cuerpo><p>noticia 5 5ncia 5</p></cuerpo>
<resumen><p>noticia 5noticia 5noticia 5noticia 5noticia 5</p></resumen>
<fecha>2001-01-01</fecha>
<foto_gr>fotos_portada/382912759669350px.jpg</foto_gr>
<seccion>1</seccion>
</noticia>


Cada noticia proviene de una base de datos diferente y no se como ordenar l consulta para que me salgan alternos y si una base ya no tiene mas noticias, continue con la otra.

De momento he llegado hasta aquí, pero estoy atascado!!:::

Cita:
$sql1 = mysql_query('select * from nbgzpvmv_datos.not_ampa ORDER BY id DESC ');
$n1 = mysql_num_rows($sql1);

$sql2 = mysql_query('select * from nbgzpvmv_datos.not_actv ORDER BY id DESC');
$n2 = mysql_num_rows($sql1);



// Empezamos a generar el archivo xml


echo '<?xml version="1.0" encoding="UTF-8"?>';
echo "\n\n";
echo utf8_encode("<datos>");
echo "\n";

//ESTO ES PARA COLOCAR LA CONSULTA MAS LARGA EN PRIMER LUGAR

if($n1>$n2){
$n=$n1;
}else {
$n=$n2;
}


//AQUÍ ES DONDE TENGO EL PROBLEMA

for ($i=0; $i<$n; $i++) {
echo utf8_encode("<noticia ");

$id=mysql_result($sql, $i,'id');

$tit_cast=mysql_result($sql, $i,'tit_cast');
$tit_val=mysql_result($sql, $i,'tit_val');


$cuerpo_cast=mysql_result($sql, $i,'cuerpo_cast');
$cuerpo_cast=corregirtildes($cuerpo_cast);
$cuerpo_cast=utf8_decode($cuerpo_cast);


$cuerpo_val=mysql_result($sql, $i,'cuerpo_val');
$cuerpo_val=corregirtildes($cuerpo_val);
$cuerpo_val=utf8_decode($cuerpo_val);


$resumen_cast=mysql_result($sql, $i,'resumen_cast');
$resumen_cast=corregirtildes($resumen_cast);
$resumen_cast=utf8_decode($resumen_cast);

$resumen_val=mysql_result($sql, $i,'resumen_val');
$resumen_val=corregirtildes($resumen_val);
$resumen_val=utf8_decode($resumen_val);


$fecha=mysql_result($sql, $i,'fecha');
$foto_gr=mysql_result($sql, $i,'foto_gr');

$directorio="fotos_portada/";
$foto_gr_url=$directorio . $foto_gr;

if (!$foto) {$foto="fotodefault.jpg"; }

//<noticia id="1" titular="títula 1r" cuerpo="1 aquí el cuerpo de la notícia1 ñ" fecha="2011-01-24" foto="fotodefault.jpg"></noticia>
echo utf8_encode("id='$id'>\n <titular>$tit_cast</titular>\n<cuerpo>$cuerpo_cast</cuerpo>\n<resumen>$resumen_cast</resumen>\n<fecha>$fecha</fecha>\n<foto_gr>$foto_gr_url</foto_gr>\n</noticia>\n");


}



echo utf8_encode("</datos>");


ob_end_flush();


Alguna idea??
  #2 (permalink)  
Antiguo 22/08/2011, 03:35
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Alternas dos consultas y crear un XML

Creo que tu problema es de copy-paste:
Código PHP:
Ver original
  1. $sql1 = mysql_query('select * from nbgzpvmv_datos.not_ampa ORDER BY id DESC ');
  2. $n1 = mysql_num_rows($sql1);
  3.  
  4. $sql2 = mysql_query('select * from nbgzpvmv_datos.not_actv ORDER BY id DESC');
  5. $n2 = mysql_num_rows($sql1);

Mira bien la última sentencia de este trozo. Coges el tamaño de $sql1 para $n2. Seguro lo copiaste de arriba y no viste esto. Puede que te dé problemas más tarde al intentar acceder a índices del array que no existen.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: mysql, sql, xml
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 20:09.