registros - paginacion php mysql bootstrap
Paginación en la API Indeed.com xml feed 25 resultados por página, ¿Cómo paginar? (1)
has_more
función has_more
devuelve true si hay 25 resultados en el xml
$start = 0;
do {
$xml = simplexml_load_file(...$start...);
// process $xml
$start += 25;
} while(has_more($xml));
Configuré el feed xml de Indeed.com en mi sitio. Su API solo permite 25 resultados por consulta. ¿Cómo puedo paginar los resultados si hay más de 25?
No he encontrado una respuesta satisfactoria o lo suficientemente exhaustiva en línea. He buscado durante semanas en esto.
Esto es lo que tengo en mi código:
PHP:
// Indeed.com API URL parameters
$url = ''http://api.indeed.com/ads/apisearch''.''?'';
$publisher = ''xxxxxxxxxxxxxxxx'';
$q = $query;
$location = '''';
if (isset($_POST[''location''])) {
$location = $_POST[''location''];
} else {
$geo = geoCheckIP($_SERVER[''REMOTE_ADDR'']);
if (isset($geo) && ($geo != "not found, not found")) {
$location = $geo;
}
}
$sort = ''date'';
$radius = ''20'';
$st = '''';
$jt = '''';
$start = ''0'';
$limit = ''25'';
$fromage = '''';
$highlight = ''0'';
$filter = ''1'';
$latlong = ''0'';
$co = ''us'';
$chnl = '''';
$userip = $_SERVER[''REMOTE_ADDR''];
$useragent = isset($_SERVER[''HTTP_USER_AGENT'']) ? ($_SERVER[''HTTP_USER_AGENT'']) : ''unknown'';
$v = ''2'';
$xml = simplexml_load_file($url."publisher=".$publisher."&q=".$q."&l=".$location."&sort=".$sort."&radius=".$radius."&st=".$st."&jt=".$jt."&start=".$start."&limit=".$limit."&fromage=".$fromage."&highlight=".$highlight."&filter=".$filter."&latlong=".$latlong."&co=".$co."&chnl=".$chnl."&userip=".$userip."&useragent=".$useragent."&v=".$v);
CUERPO HTML
<div class="paradiv">
<h1><?php echo $xml->totalresults . " " . $jobroll_title . " Near " . $location ?></h1>
<!-- BEGIN INDEED ORDERED LIST-->
<ol class="jobs">
<?php
foreach($xml->results->result as $result) { ?>
<li class="job <?php echo (++$liBgColor%2 ? ''odd'' : ''even''); ?>">
<div class="title_wrapper">
<div id="jobtitle"><strong><a onmousedown="<?php echo $result->onmousedown;?>" rel="nofollow" href="<?php echo $result->url;?>" target="_blank"><?php echo $result->jobtitle;?></a></strong></div>
<div id="company"><?php echo $result->company;?></div>
</div>
<div id="snippet">
<?php $result->snippet = str_replace(" ", ". ", $result->snippet); echo $result->snippet;?>
</div>
<div id="location"><strong>Location:</strong> <?php echo $result->formattedLocationFull;?></div>
<div id="date"><span class="posted <?php echo (++$locationBgColor%2 ? ''even'' : ''odd''); ?>">Posted <?php echo $result->formattedRelativeTime;?></span></div>
<div id="details-2"><strong><a onmousedown="<?php echo $result->onmousedown;?>" rel="nofollow" href="<?php echo $result->url;?>" target="_blank">Details</a></strong></div>
</li>
<?php } ?>
</ol>
<!-- END INDEED ORDERED LIST -->
<!-- THIS IS WHERE THE PAGINATION WILL DISPLAY -->
<div class="pagenumber"><?php echo "Page Number " . "<a href=/"" . (rtrim(dirname($_SERVER[''PHP_SELF'']), ''/'')) . "/">" . $xml->pageNumber . "</a>" ?></div>
</div>
Así es como funciona. Un usuario llega a la página web, luego la página carga los resultados del trabajo según la ubicación de los usuarios. Si se encuentran menos de 25 resultados para su código postal, entonces no hay problema y no se necesita paginación.
Pero si el feed xml tiene más de 25 resultados, mostrará 25 y eso es todo. Si quiero mostrar el resto, tengo que paginar. Esto es con lo que necesito ayuda.
Así es como funciona su URL de API.
http://api.indeed.com/ads/apisearch?publisher=xxxxxxxxxxxxxxx&q=java&l=austin%2C+tx&sort=&radius=&st=&jt=&start=0&limit=25&fromage=&filter=&latlong=1&co=us&chnl=&userip=1.2.3.4&useragent=Mozilla/%2F4.0%28Firefox%29&v=2
La parte que dice &start=0&limit=25
es cómo mostrar los resultados en función del número de página del xml.
Entonces, por ejemplo: &start=0&limit=25
sería la página 0 mostrando 25 resultados, &start=25&limit=25
sería la página 1 mostrando los siguientes 25 resultados y &start=50&limit=25
sería la página 2 mostrando los 25 resultados restantes. Este ejemplo se basa en si hay un total de 75 resultados en el feed xml.
Y en mis // Indeed.com API URL parameters
anteriores lo tengo configurado para comenzar en la página 0 y limitarlo a 25. No permiten más de 25 en el límite. Si se establece más alto, se usará el valor predeterminado de 25.
$start = ''0'';
$limit = ''25'';
Necesito ayuda para implementar una forma de paginar utilizando mi código PHP actual. ¿Cómo puedo agregar lo que tengo en mi código PHP?