Foros del Web » Programando para Internet » PHP »

Paginar XML

Estas en el tema de Paginar XML en el foro de PHP en Foros del Web. Buenas, nuevamente molestando aqui, actualmente estoy creando el sitemap con un archivo sitemaps.php que crea el XML, el problema es que ya tengo mas de ...
  #1 (permalink)  
Antiguo 08/12/2011, 07:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 8 meses
Puntos: 5
Pregunta Paginar XML

Buenas, nuevamente molestando aqui, actualmente estoy creando el sitemap con un archivo sitemaps.php que crea el XML, el problema es que ya tengo mas de 50mil links y a google esto no le gusta, y me pide que ponga varios sitemaps

Cita:
<html>
<head>
<title>Creación de sitemaps para articulos</title>
</head>

<body>
<h1>Sitemaps</h1>
Aqui estamos creando un archivo .xml para los sitemaps de artículos.

<?
//Creamos la cabecera del .xml
$codigo='<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

include('config/config.php');
include('config/db_con.php');
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$top3 = "SELECT * FROM `like`";
$new3 = mysql_query($top3) or die(mysql_error());

$total=mysql_num_rows($new3);
while($fila=mysql_fetch_object($new3)){

$idd=$fila->id;
$today = date("Y-m-d");

$codigo .='<url>
<loc>http://'.$idd.'.'.$sitew.'like.php</loc>
<lastmod>'.$today.'</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url> ';
}
$codigo .='</urlset> ';

//Ahora creamos el archivo con el código necesario
$path = "/home/cxxx/public_html/sitemap.xml";
$modo = "w+";

if ($fp=fopen($path,$modo))
{
fwrite ($fp,$codigo);
echo "<p><b>Archivo sitemap creado correctamente</b>";
}
else{
echo "<p><b>Ha habido un problema y el archivo no ha sido creado correctamente</b>";
}

?>
<p>

</body>
</html>
Eh leido que en un sitemap.xml se puede enlazar a otros de esta manera:

Cita:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

<sitemap>

<loc>http://megustaban.com/sitemap.xml</loc>

<lastmod>2004-10-01T18:23:17+00:00</lastmod>

</sitemap>

<sitemap>

<loc>http://megustaban.com/sitemap2.xml</loc>

<lastmod>2005-01-01</lastmod>

</sitemap>

</sitemapindex>
Eso seria facil de hacer, lo que no se es como hacer es que me imprima por ejemplo 25mil resultados por pagina o por sitemap, ejemplo sitemap.xml?pag=2 y sitemap.xml?pag=3

Como hago para que funcione eso, en PHP se hacerlo pero en lso XML no...


A ver si alguien me hecha una manito, Saludos.
  #2 (permalink)  
Antiguo 08/12/2011, 08:45
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Paginar XML

y crea un xml por pagina, entonces cuanndo don google entre a su sitio
va a encontrar varios sitemaps verdad? y bueno cada site map tiene su propio xml y
no uno inmenso!
  #3 (permalink)  
Antiguo 09/12/2011, 06:28
 
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: Paginar XML

esa es mi idea patriarka, como se te ocurre que pueda hacerlo, mi idea es crear un sitemaps-1.xml, sitemaps-2.xml, sitemaps-3.xml cada 5000 registros crear uno, como se les ocurre que lo pueda hacer?


Gracias!
  #4 (permalink)  
Antiguo 09/12/2011, 08:26
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Paginar XML

y ya lo tenes hecho casi:
lo que tenes que hacer es un nivel mas while

vos tenes esto:
$top3 = "SELECT * FROM `like`";
hay que agregarle un limite (en algun momento este script te va aexplotar! ya vas a ver)

Código PHP:
Ver original
  1. $currentPage = 0;
  2. $itemPerPage= 5000;
  3. $cantidad_a_paginar= 5; //suponiendo que tenes 25000 registros, sabemos que 5*5000=25000
  4. $top3 = "SELECT * FROM `like`limit 0, 5000";
  5. este limite tiene que ir variando como un paginador
  6.  
  7.  
  8. for($currentPage=1; $currentPage<= $cantidad_a_paginar; $currentPage++){
  9.     $top3 = "SELECT * FROM `like`limit $currentPage, $itemPerPage";
  10.     $new3 = mysql_query($top3) or die(mysql_error());
  11.     $codigo=''; //en cada archivo nuevo inicializo como vacio el contenido
  12.     $total=mysql_num_rows($new3);
  13.     while($fila=mysql_fetch_object($new3)){
  14.  
  15.         $idd=$fila->id;
  16.         $today = date("Y-m-d");
  17.  
  18.         $codigo .='<url>
  19.        <loc>http://'.$idd.'.'.$sitew.'like.php</loc>
  20.        <lastmod>'.$today.'</lastmod>
  21.        <changefreq>daily</changefreq>
  22.        <priority>0.8</priority>
  23.        </url> ';
  24.     }
  25.     $codigo .='</urlset> ';
  26.  
  27.       //Ahora creamos el archivo con el código necesario
  28.     $path = "/home/cxxx/public_html/sitemap-{$currentPage}.xml";
  29.     $modo = "w+";
  30.  
  31.     if ($fp=fopen($path,$modo))
  32.     {
  33.         fwrite ($fp,$codigo);
  34.         echo "<p><b>Archivo sitemap creado correctamente</b>";
  35.     }
  36.     else{
  37.         echo "<p><b>Ha habido un problema y el archivo no ha sido creado correctamente</b>";
  38.     }
  39. }

Etiquetas: html, mysql, paginar, 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 00:09.