Comunidad de diseño web y desarrollo en internet online

Paginar resultados de una busqueda sin resetar la pagina

Citar            
MensajeEscrito el 30 Mar 2009 08:16 pm
Hola a todos! Quisiera saber si alguno de uds. tiene idea de como cuernos se puede hacer para paginar los resultados de una búsqueda pero SIN QUE SE RESETEE LA PAGINA como se muestra en esta web:

PAGINADOR SIN QUE SE RESETEE LA PAGINA NI EL FLASH

No saben como estoy de enfurecido porque no encuentro la manera de solucionarlo... encima mi cliente me lo pidió y este trabajo tiene q estar listo para la semana que viene. Además, estoy seguro que no es imposible porque alguien ya lo ha hecho.

El código Javascript está dentro, pero lo que no sé como hacer es que el resultado de la búsqueda aparezca dentro de un DIV y al presionar la siguiente página, esta cambie y muestre los siguientes registros.

Si alguien me puede dar una mano... se lo voy a agradecer.

Saludos cordiales. Picasso.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 30 Mar 2009 09:49 pm
La solucion a esto es AJAX, mira en tuto que ahy aqui y veras como hacerlo

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 31 Mar 2009 04:00 am
facil creas un archivo q te pagina y el otro q te cambia las paginas y listo que dificil tiene jajajajaja saludos el paginador tiene que arrojar el dato q le vas a mandar al core de la paginacion osea el archivo en php,asp o jsp en lo que lo quieras hacer cualquier cosa para estamos para ayudarnos

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 31 Mar 2009 03:14 pm
talcual: sip... es verdad lo que dices y por supuesto, ya tengo creada la consulta y el paginador... pero actualmente mi paginador funciona CAMBIANDO TODA LA PAGINA y justamente necesitaría que esto sea SIN QUE SE RESETEE la misma.
Además, como es una página que recibe los datos de un buscador, son bastantes los que paso por GET.

Te muestro mi paginador:

Código :

function paginar($actual, $total, $por_pagina, $enlace) {

  $pag = $_GET['pag'];
  $id_tipopropiedad = "&id_tipopropiedad=". $_GET['id_tipopropiedad'];
  $id_operacion = "&id_operacion=". $_GET['id_operacion'];
  $select1 = "&select1=". $_GET['select1'];
  $select2 = "&select2=". $_GET['select2'];
  $id_moneda = "&id_moneda=". $_GET['id_moneda'];


  $total_paginas = ceil($total/$por_pagina);
  $anterior = $actual - 1;
  $posterior = $actual + 1;
  if ($actual>1)
    $texto = "<a href=\"$enlace$anterior$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">ANTERIOR</a> ";
  else
    $texto = "<b>&laquo; ANTERIOR</b> ";
  for ($i=1; $i<$actual; $i++)
    $texto .= "<a href=\"$enlace$i$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">$i</a> ";
  $texto .= "<b>$actual</b> ";
  for ($i=$actual+1; $i<=$total_paginas; $i++)
    $texto .= "<a href=\"$enlace$i$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">$i</a> ";
  if ($actual<$total_paginas)
    $texto .= "<a href=\"$enlace$posterior$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">SIGUIENTE &raquo;</a>";
  else
    $texto .= "<b>SIGUIENTE</b>";
  return $texto;

      // Cierro la conexion
      mysql_close($conexion); 

}

echo paginar($pag, $total, $tampag, "prop-search.php?pag=");



Así, el buscador y esta página result.php funcionan a la perfección. El tema es que tengo un flash arriba con música y se resetea la misma cada vez que cambio de página y quisiera que los resultados se paginen sin que se resetee ese flash.

Realmente no soy de pedir cosas a menos que esté con la soga al cuello como lo estoy ahora y encima con AJAX no estoy canchero y ese es un punto en contra.

Por eso les pido si pueden darme una mano con esto.

Desde ya y nuevamente, les doy gracias de antemano por todo.

Saludos cordiales. Picasso.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 31 Mar 2009 03:30 pm

Picasso escribió:

El tema es que tengo un flash arriba con música y se resetea la misma cada vez que cambio de página y quisiera que los resultados se paginen sin que se resetee ese flash.


primero que nada yo te recomedaria que arrancaras el sitio con el audio pausado ya que esto crea desagrado por algunos internautas.

segundo debes cambiar la forma como miras el paginador, es decir si ves el manual de ajax veras que puedes enviarles los datos por get muy similar a lo que haces al crear los vinculos para paginar solo bastaria que crearas las funciones en los vinculos que tomaran esas variables y se las enviaras a la pagina que hace la paginacion y lo que esta retorne lo imprimas en el div que contiene la informacion.

pd: si nodas pie con bola, me dices y te hago un ejemplo, pero espero que lo hayas intentado por lo menos

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 31 Mar 2009 06:05 pm
jpcw: realmente lo miro del derecho y del revés y no lo entiendo... además debo confezarte que no he incursionado en AJAX más que con algún ejemplo simple que he sacado de algún tutorial.
Es más... en otro foro me dijeron que debo hacer una pagina aparte donde solamente imprima la parte de la tabla, y con AJAX le envias los parámetros de que número de pagina mostrar, así solamente refrescas el div con la pagina que quieres ver... imagínate mi cara... cada vez me confundo más. :cry:

Realmente ahora que veo todo lo que se puede hacer, me pareció interesante como para hacer o seguir algún curso, pero bueno, este pedido que me han hecho me dijeron que solo se puede hacer de esta manera y me falta sol oesto para entregar este trabajo esta semana.

Y si colega, voy a necesitar un salvavidas y si no es mucha molestia, si puedes darme un ejemplo así me doy cuenta de como implementarlo.

Desde ya, no sabes como te agradezco ya, por el hecho que hayas leído mi pedido.

Un cordial saludo. Picasso.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 02 Abr 2009 03:04 pm
Bueno... la verdad no le encuentro la vuelta y sigo sin entender la programación hecha en AJAX. Lo que yo hice es esto y hasta acá funciona bien, solo que la paginación lo hace de manera completa, o sea, pasa de página a página y se resetea todo.

Las páginas de mi proyecto son las siguientes:
buscador.php (lo llamo con un include en las páginas donde se encuentre)
result.php (contiene la consulta a la BDD y muestra los resultados de la misma)

result.php

Código :

    include('con.php');
   
   $CantxCol = 2; //Cantidad de columnas
   $Cant = 0; // Variable para ser usada como contador

   // conexion a la base
   $conexion = mysql_connect($host_db, $usuario_db, $pass_db) or die ("no se ha podido conectar a la BD");
   mysql_select_db($base_db, $conexion) or die ("no se ha podido seleccionar la BD");


// realizar esta funcion si se presiono el boton de enviar en el formulario de busqueda
if(isset($_GET['searchprop']))

// declarar variables los datos del formulario
$id_tipopropiedad = $_GET['id_tipopropiedad'];
$id_operacion = $_GET['id_operacion'];
$select1 = $_GET['select1'];
$select2 = $_GET['select2'];
$id_moneda = $_GET['id_moneda'];
{


// declarar las condiciones usando la opci&oacute;n WHERE, dependiendo de lo enviado en el formulario
$condiciones = "";
if ($id_tipopropiedad != "") $condiciones .= " AND propiedades.id_tipopropiedad = $id_tipopropiedad";
if ($id_operacion != "" && $condiciones != "") $condiciones .= " AND propiedades.id_operacion = $id_operacion";
if ($select1 != "" && $condiciones != "") $condiciones .= " AND propiedades.id_localidad = $select1";
if ($select2 != "" && $condiciones != "") $condiciones .= " AND propiedades.id_zona = $select2";
if ($id_moneda != "" && $condiciones != "") $condiciones .= " AND propiedades.id_moneda = $id_moneda";

// obtener datos de la base
$pag = $_GET['pag'];      
      if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
      
$sql = "SELECT COUNT(*) FROM propiedades..... $condiciones ORDER BY id_propiedad";

$result = mysql_query($sql, $conexion);

      list($total) = mysql_fetch_row($result);
      $tampag = 4;
      $reg1 = ($pag-1) * $tampag;
         $result = mysql_query("SELECT * FROM propiedades..... $condiciones ORDER BY id_propiedad LIMIT $reg1, $tampag", $conexion) or die (mysql_error());

      if (mysql_num_rows($result)){ 

      // Muestro los registros
           while ($fila = @mysql_fetch_array($result))
              { 

// muestro los resultados....

//paginador
function paginar($actual, $total, $por_pagina, $enlace) {

  $pag = $_GET['pag'];
  $id_tipopropiedad = "&id_tipopropiedad=". $_GET['id_tipopropiedad'];
  $id_operacion = "&id_operacion=". $_GET['id_operacion'];
  $select1 = "&select1=". $_GET['select1'];
  $select2 = "&select2=". $_GET['select2'];
  $id_moneda = "&id_moneda=". $_GET['id_moneda'];

  $total_paginas = ceil($total/$por_pagina);
  $anterior = $actual - 1;
  $posterior = $actual + 1;
  if ($actual>1)
    $texto = "<a href=\"$enlace$anterior$id_tipopropiedad$id_operacion$select1$select2$id_moneda\"> ANTERIOR</a> ";
  else
    $texto = "<b>&laquo; ANTERIOR</b> ";
  for ($i=1; $i<$actual; $i++)
    $texto .= "<a href=\"$enlace$i$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">$i</a> ";
  $texto .= "<b>$actual</b> ";
  for ($i=$actual+1; $i<=$total_paginas; $i++)
    $texto .= "<a href=\"$enlace$i$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">$i</a> ";
  if ($actual<$total_paginas)
    $texto .= "<a href=\"$enlace$posterior$id_tipopropiedad$id_operacion$select1$select2$id_moneda\">SIGUIENTE</a>";
  else
    $texto .= "<b>SIGUIENTE</b>";
  return $texto;

      // Cierro la conexion
      mysql_close($conexion); 

}

echo paginar($pag, $total, $tampag, "prop-search.php?pag=");



Como te había comentado antes y de acuerdo a lo que me habías dicho, se podría mostrar estos resultados dentro de otra página xxxx.php y calculo que dentro de un div para quie dentro del mismo se realice la paginación sin que se resetee toda la página.

Si esto es así, ¿podrías ayudarme para saber como hacerlo?

Nuevamente muchas gracias por tu tiempo.

Saludos. Picasso.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 06 Abr 2009 08:37 pm
¿Alguien puede darme una mano por favor? ¿Cómo se hace este paginado sin resetear toda la página completa?

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 06 Abr 2009 09:09 pm
partiendo de que tienes un archivo en php que hace la paginacion y funciona correctamente, algo asi:

resultados.php

Código HTML :

<html>
<head>
</head>
<body>
<div id="flash_sicodelico"/>
<div id="div1"/>
<div id="resultados_siguientes">
<a href="resultados.php?order=desc">cargar los siguiente resutlados blabla</a>
</div>

<div id="resultado_paginador">
<ul id="resultados">
<li>resultado1</li>
<li>resultado2</li>
<li>resultado3</li>
<li>resultado4</li>
<li>resultado5</li>
..
<li>resultado30</li>
</ul>
</div> 
</body>
</html>

Para recargar los siguiente resultados puedes hacerlo con jquery

Código Javascript :

 $("#resultado_paginador").load("/resultados.php?order=desc  #resultado_paginador");

Lo cual carga solo el div de resultados del nuevo pedido en el div actual y listo.

Seria mejor que lo hagas con xml y javascript.

http://docs.jquery.com/Ajax/load

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 06 Abr 2009 09:36 pm
chug0: gracias por responder... con jquery dices que es mejor? Dime por favor... el archivo php que está mas arriba es el que trae el resultado de la busqueda realizada en la base de datos y aho mismo esta la funcion del paginado... la página que hace todo se llama result.php que es la que está mas arriba.

¿Debo modificarle algo de lo que ya he hecho o con solo agregarle lo que me has puesto ya me funcionará?

Como le decia a un colega, pido disculpas pero estoy muy perdido con javascript y ajax y es por eso que espero tengan paciencia con esto que ya hace una semana que no le encuentro la vuelta y ya debería haberlo entregado.

Gracias amigo. saludos.

Picasso

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 06 Abr 2009 09:38 pm
Me olvidaba... el paginado que hice pasa variables por get... así funciona el paginado que trae el resultado de la busqueda. Con jquery, ¿funcionará igual?

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 06 Abr 2009 09:52 pm
si funciona bien no debes modificarle nada.
para mostrar los siguientes resultados haces algo como
result.php?page=2, entonces el javascript seria

Código Javascript :

$(document).ready(function(){
   $('.resultados_siguientes a').bind("click", function(e) { 
      $("#resultado_paginador").load("result.php?page=2 #resultado_paginador");
      e.preventDefault(); 
   });
});

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 06 Abr 2009 10:47 pm
mmm... no hace nada... creo que estoy haciendo algo mal.
La página resultados.php es la que muestra el proceso de la busqueda... ahi no se le agrega nada de nada, verdad?

Dentro de esta página que tu me has mostrado, que será index.php por ejemplo, dentro del div id="resultado_paginador" debería aparecer la página con los resultados de la búsqueda, verdad? Además debo agregarle esta línea <script src="js/jquery-latest.js" language="JavaScript"></script>... no es así? Quedaría de esta manera:

Código :

<script src="js/jquery-latest.js" language="JavaScript"></script>
<html> 
<head> 
</head> 
<body> 
<div id="flash_sicodelico"/> 
<div id="div1"/> 
<div id="resultados_siguientes"> 
<a href="resultados.php?order=desc">cargar los siguiente resutlados blabla</a> 
</div> 
 
[b]<div id="resultado_paginador"> [/b]
<ul id="resultados"> 
<li>resultado1</li> 
<li>resultado2</li> 
<li>resultado3</li> 
<li>resultado4</li> 
<li>resultado5</li> 
.. 
<li>resultado30</li> 
</ul> 
</div>  
</body> 
</html>


A mí los resultados del paginado me aparecen así:
<< ANTERIOR 1 2 3 4 5 SIGUIENTE >>

Este código va junto con lo anterior, dentro de index.php?

<script type="text/javascript">
$(document).ready(function(){
$('.resultados_siguientes a').bind("click", function(e) {
$("#resultado_paginador").load("prop-search.php?#resultado_paginador");
e.preventDefault();
});
});
</script>

Si esto es correcto... no me funcionó pero tampoco me tiró ningún error... rarísimo.

Qué ensalada por dios... me hirve la cabeeeza.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 07 Abr 2009 01:01 am
esto va dentro del <head> :

Código :

<script src="js/jquery-latest.js" language="JavaScript"></script>


#resultado_paginador es el div con id resultado_paginador que contiene los resultados que arroja tu pagina de resultados
esto esta mal esta sobrando "?" y falta un espacoi antes de #

Código Javascript :

$("#resultado_paginador").load("prop-search.php?#resultado_paginador");

deberia ser:

Código Javascript :

$("contenedor_pagina_actual").load("pagina_remota_a_cargar.php");
$("contenedor_pagina_actual").load("pagina_remota_a_cargar.php  contenedor_pagina_remota"); 
$("contenedor_pagina_actual").load("pagina_remota_a_cargar.php?order=desc  contenedor_pagina_remota"); 
$("contenedor_pagina_actual").load("pagina_remota_a_cargar.php?page=2  contenedor_parte_remota");
$("contenedor_pagina_actual").load("pagina_remota_a_cargar.php?page=2&order=desc  contenedor_pagina_remota");

contenedor_pagina_actual y contenedor_pagina_remota puede ser ids clases o tag html

fijate que hay un espacio si es que especificas la parte que solo quieres cargar de la pagina remota

lee la documentacion, se explica claramente y muestra ejemplos Load
tutorial jquery

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 07 Abr 2009 08:44 pm
Hola chug0: ya me estoy acercando ^^ (espero...) pero creo que el paginado lo estoy haciendo mal y hay un detalle que no te comenté.

Yo tengo 3 archivos:
buscador.php (contiene solo el formulario que envía las variables por $_GET a result.php)
result.php (procesa las variables recibidas del formulario, realiza la consulta y muestra los registros con el paginado) (Este código ya lo pude todo mas arriba)
muestro_todo.php (página que contiene el div donde mostrará a result.php con el PAGINADOR)

Bien... si ejecuto el buscador, me trae todos los resultados de la busqueda y me los muestra, PERO EN RESULT.PHP. La idea es que al ejecutar el buscador, sea MUESTRO_TODO.PHP quien me traiga los resultados y que se paginen justamente dentro del div, como lo venia solicitando.

Yo hice esto:
muestro_todo.php contiene esto:

Código :

<script src="js/jquery.js" language="JavaScript"></script>

<script type="text/javascript">
$(document).ready(function(){
$("div#resultado").load("result.php"); 

});
  
</script>

<div id="resultado"></div>



Así de simple, carga la página result.php con el paginador pero este paginador está hecho para que pagine sobre la misma página, o sea result.php. Si cambio de página se va del div.

Mi pregunta es...
- toda la página result.php expuesta mas arriba con el paginador que ya tenía armado y que funciona de la manera tradicional, ¿me sirve para esto o debo cambiarlo?
- en el caso de que sirva, ¿como hago para que al ejecutar el buscador sea la página MUESTRO_TODO.PHP la que me traiga todo con el paginado correcto?

Amigo... estoy sufriendo con todo esto porque debo entregarlo lo antes posible. Por eso te pido q seas paciente ya que no tengo otra forma de solucionarlo y no se del tema.
Pásame tu nro. de cuenta así te envío un dinerillo... jajaja!!! :lol: :lol: :lol:

Gracias miles por tu tiempo y saludos.

Picasso.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 04 Sep 2009 09:31 pm
hola tengo un probblema a la hora de pagina lo k pasa esk tengo una pagina contenedor o principal
en la cual incluyo 3 archivo cabecera.php,menu.php y paginacion.php
lo k pasa k a todas esas pagina las llamo con un include hasta ahi esta bien mi problema es k en la primera llamada de la pagina principal si le doy click en los link de la paginacion esta ok pero lo k pasa es k cuando en esa misma pagina de paginacion hago una busqueda y refresco ese div el cual esta contenida paginacion.php y le doy click en sus enlaces
la pagina vuela solo me muestra como pagina principal a paginacion.php y no entiendo xk pasa eso bueno haber si alguien me puede ayudar pues desde ya gracias xD ....

Por sdarknot

1 de clabLevel



 

msie7

 

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