Foros del Web » Programando para Internet » PHP »

problema paginador

Estas en el tema de problema paginador en el foro de PHP en Foros del Web. hola a todos, tengo una paginador, y lo quiero modificar un poco. el tema es que cuando el paginador me muestra un resultado de una ...
  #1 (permalink)  
Antiguo 05/01/2012, 13:00
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
problema paginador

hola a todos, tengo una paginador, y lo quiero modificar un poco.

el tema es que cuando el paginador me muestra un resultado de una busqueda... debajo tengo unos enlaces a Primero, Siguiente, Anterior y Ultimo... pues al apretar en cualquiera de estos lo que hace es volver a hacer otra busqueda....

http://www.levanteautomocion.com/anuncios.php

en esta web lo tengo implementado y lo podriais ver....
el codigo lo pego aqui...
Código PHP:
Ver original
  1. <!--COMIENZO PAGINADOR-->
  2. <?php
  3. $link = mysql_connect("b2.com", "ns", "ahhh");
  4. mysql_select_db("ns", $link);
  5.  
  6.                 $filtro='';
  7.                 $tipo=$_POST['interes'];
  8.                 $provincia=$_POST['sprovincia'];
  9.                 $year=$_POST['ano'];
  10.                 $categoria=$_POST['scategoria'];
  11.                 $marca=$_POST['smarca'];
  12.                 $min=$_POST['pminimo'];
  13.                 $max=$_POST['pmaximo'];
  14.                 $busqueda=$_POST['bpalabra'];
  15.  
  16.  
  17.                 if(($provincia!="selec") AND ($year!="") AND ($categoria!="selec") AND ($marca!="selec") AND ($min!="selec") AND ($max!="selec") AND ($tipo!="todo") AND ($tipo!="se vende") AND ($busqueda!="bpalabra")){
  18.                     $filtro="provincia=\"$provincia\" AND year=\"$year\" AND tipo1=\"$categoria\" AND marca=\"$marca\" AND precio>=\"$min\" AND precio<=\"$max\" AND tipo2=\"$tipo\" AND texto=\"$busqueda\"";
  19.                 }elseif(($provincia!="selec") AND ($year!="") AND ($categoria!="selec") AND ($marca!="selec") AND ($min!="selec") AND ($max!="selec") AND ($tipo!="todo") AND ($tipo!="se compra") AND ($busqueda!="bpalabra")){
  20.                     $filtro="provincia=\"$provincia\" AND year=\"$year\" AND tipo1=\"$categoria\" AND marca=\"$marca\" AND precio>=\"$min\" AND precio<=\"$max\" AND tipo2=\"$tipo\" AND texto=\"$busqueda\"";
  21.                 }elseif(($provincia!="selec") AND ($year!="") AND ($categoria!="selec") AND ($marca!="-seleccione marca") AND ($min!="selec") AND ($max!="selec") AND ($tipo!='se vende') AND ($tipo!='se compra') AND ($busqueda!="bpalabra")){
  22.                     $filtro="provincia=\"$provincia\" AND year=\"$year\" AND tipo1=\"$categoria\" AND marca=\"$marca\" AND precio>=\"$min\" AND precio<=\"$max\" AND tipo2='se vende' AND tipo2='se compra' AND texto=\"$busqueda\"";
  23.                 }elseif(($provincia!="-selec") AND ($year!="") AND ($categoria!="selec") AND ($marca!="-seleccione marca") AND ($min!="selec") AND ($max!="selec") AND ($tipo!="todo") AND ($tipo!="se compra")){
  24.                     $filtro="provincia=\"$provincia\" AND year=\"$year\" AND tipo1=\"$categoria\" AND marca=\"$marca\" AND precio>=\"$min\" AND precio<=\"$max\" AND tipo2=\"$tipo\"";
  25.                 }elseif(($provincia!="selec") AND ($year!="") AND ($categoria!="selec") AND ($marca!="selec") AND ($min!="selec") AND ($max!="selec")){
  26.                     $filtro="provincia=\"$provincia\" AND year=\"$year\" AND tipo1=\"$categoria\" AND marca=\"$marca\" AND precio>=\"$min\" AND precio<=\"$max\"";
  27.                 }elseif(($provincia!="selec") AND ($year!="") AND ($categoria!="selec") AND ($min!="selec") AND ($max!="selec")){
  28.                     $filtro="provincia=\"$provincia\" AND year=\"$year\" AND tipo1=\"$categoria\" AND precio>=\"$min\" AND precio<=\"$max\"";
  29.                 }elseif(($provincia!="selec") AND ($categoria!="selec") AND ($min!="selec") AND ($max!="selec")){
  30.                     $filtro="provincia=\"$provincia\" AND tipo1=\"$categoria\" AND precio>=\"$min\" AND precio<=\"$max\"";
  31.                 }elseif(($provincia!="selec") AND ($min!="selec") AND ($max!="selec")){
  32.                     $filtro="provincia=\"$provincia\" AND precio>=\"$min\" AND precio<=\"$max\"";
  33.                 }elseif(($min!="selec") AND ($max!="selec")){
  34.                     $filtro="precio>=\"$min\" AND precio<=\"$max\"";
  35.                 }elseif(($min!="selec") AND ($max=="selec")){
  36.                     $filtro="precio>=\"$min\"";
  37.                 }elseif(($min=="selec") AND ($max!="selec")){
  38.                     $filtro="precio<=\"$max\"";
  39.                 }elseif(($provincia!="selec")){
  40.                     $filtro="provincia=\"$provincia\"";
  41.                 }elseif(($categoria!="selec")){
  42.                     $filtro="tipo1=\"$categoria\"";
  43.                 }elseif(($year!="")){
  44.                     $filtro="year=\"$year\"";
  45.                 }elseif(($busqueda!="")){
  46.                     $filtro="texto like '%$busqueda%'";
  47.                 }elseif(($marca!="selec")){
  48.                     $filtro="marca=\"$marca\"";
  49.                 }elseif(($tipo!="todo")){
  50.                     $filtro="tipo2=\"$tipo\"";
  51.                 }elseif(($tipo=="todo")){
  52.                     $filtro="tipo2='se vende' or tipo2='se compra'";
  53.                 }elseif(($min=="selec") AND ($max=="selec")){
  54.                     $filtro="id_anunciante=90000";
  55.                 }
  56.  
  57.                
  58.                
  59.                
  60.                
  61.                
  62.                
  63.  
  64.  $RegistrosAMostrar=4;
  65.  
  66.  //estos valores los recibo por GET
  67.  if(isset($_GET['pag'])){
  68.   $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  69.   $PagAct=$_GET['pag'];
  70.   //caso contrario los iniciamos
  71.  }else{
  72.   $RegistrosAEmpezar=0;
  73.   $PagAct=1;
  74.  }
  75.  
  76. $Resultado = mysql_query("SELECT * FROM anuncios WHERE $filtro ORDER BY id_anuncio LIMIT $RegistrosAEmpezar, $RegistrosAMostrar", $link);
  77.                
  78.                 // CODIGO PARA BUSCAR SI HAY UN ERROR EN LA CONSULTA
  79.                 $error = mysql_error($link);  // $link es la variable de conexión
  80.                    
  81.                 if ($error!=null)
  82.                 {
  83.                     print("Ocurrio; el Siguiente Error:\n ".$error);
  84.                     exit;
  85.                 }
  86.                 // FIN DE LA BUSQUEDA DE ERROR
  87.  
  88.  //$Resultado=mysql_query("SELECT * FROM anuncios ORDER BY id_anuncio LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$link);
  89.  
  90.  echo "<table border='1px'>";
  91.  while($MostrarFila=mysql_fetch_array($Resultado)){
  92.   echo "<tr>";
  93.   echo "<td>".$MostrarFila['titulo']."</td>";
  94.   echo "<td><img src='".$MostrarFila['foto1']."' WIDTH=105 HEIGHT=97></img></td>";
  95.   echo "<td>".$MostrarFila['precio']."</td>";
  96.   echo "</tr>";
  97.  }
  98.  echo "</table>";
  99.  
  100.  //******--------determinar las páginas---------******//
  101.  $NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM anuncios WHERE $filtro",$link));
  102.  $PagAnt=$PagAct-1;
  103.  $PagSig=$PagAct+1;
  104.  $PagUlt=$NroRegistros/$RegistrosAMostrar;
  105.  
  106.  //verificamos residuo para ver si llevará decimales
  107.  $Res=$NroRegistros%$RegistrosAMostrar;
  108.  // si hay residuo usamos funcion floor para que me
  109.  // devuelva la parte entera, SIN REDONDEAR, y le sumamos
  110.  // una unidad para obtener la ultima pagina
  111.  if($Res>0) $PagUlt=floor($PagUlt)+1;
  112.  
  113.  //desplazamiento
  114.  echo "<a onclick=\"Pagina('1')\">Primero</a> ";
  115.  if($PagAct>1) echo "<a onclick=\"Pagina('$PagAnt')\">Anterior</a> ";
  116.  echo "<strong>Pagina ".$PagAct."/".$PagUlt."</strong>";
  117.  if($PagAct<$PagUlt)  echo " <a onclick=\"Pagina('$PagSig')\">Siguiente</a> ";
  118.  echo "<a onclick=\"Pagina('$PagUlt')\">Ultimo</a>";
  119. ?>
  120.  
  121. <!--FIN PAGINADOR-->
  #2 (permalink)  
Antiguo 05/01/2012, 14:48
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: problema paginador

pues creo que asi funcionan los paginadores, van haciendo busquedas con el limite que les pongas de 0 a 10, de 10 a 20 etc.
  #3 (permalink)  
Antiguo 05/01/2012, 14:52
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
Respuesta: problema paginador

correcto asi funcionan, pero no creo que funcione bien si al ahcer una busqueda me abre un paginador y al darle al siguiente me abre otro...

;)
  #4 (permalink)  
Antiguo 05/01/2012, 15:01
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: problema paginador

quieres decir que te abre otra ventana o pestaña?

si es eso, no es php simplemente es porblema de los enlaces.
  #5 (permalink)  
Antiguo 05/01/2012, 16:44
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
Respuesta: problema paginador

ya se que pasa algo en los enlaces, podrias echarle un ojo al codigo que he posteado y sugerirme alguna idea?
  #6 (permalink)  
Antiguo 05/01/2012, 16:58
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: problema paginador

no se si te percataste, pero tiene un evento asignado a los links y no tiene asignado ningún href ¬¬
Código HTML:
Ver original
  1. <a onclick="pagina()" ></a>
Que por cierto es lo peor que puedas hacer, que pasa si el usuario tiene deshabilitado javascript, pues no podrá hacer nada, porque no funcionara....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 06/01/2012, 13:49
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
Respuesta: problema paginador

si si he visto el evento, es el que hace que pases de pagina. Funciona perfectamente, lo que pasa que si modifico la condicion del sql cuando le das a siguiente te carga otro paginador, otro aparte del que ya tienes...

Alguien sabe algo de paginadores o porque me pasa esto?
  #8 (permalink)  
Antiguo 06/01/2012, 14:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problema paginador

El problema es en tu código Javascript, tu función pagina() hace un request por AJAX y no pasas las demás variables de tu búsqueda, solo el número de pagina es por eso que se pierden los valores anteriores.
  #9 (permalink)  
Antiguo 06/01/2012, 16:53
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
Respuesta: problema paginador

gracias GatorV voy a ver si puedo arreglarlo, de todas formas a ti se te ocurre el como?

Gracias
  #10 (permalink)  
Antiguo 09/01/2012, 11:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problema paginador

Pues necesitas pasar por AJAX también todas las opciones de tu búsqueda para que cuando haga la paginación tengas disponibles también todas las variables que estas usando para filtrar.

Saludos.
  #11 (permalink)  
Antiguo 09/01/2012, 11:38
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
Respuesta: problema paginador

no se como hacerlo, me podrias postear un ejemplo, ademas otra cosa, porque cuando le doy a siguiente me vuelve a sacar otra busqueda nueva....???
http://www.levanteautomocion.com/anuncios.php

En la lupa pon m y le das a buscar, te saldra el paginador, si quieres pasar a la otra pagina entonces te vuelve a cargar otro paginador...

Sabriais porque?? porque yo no le encuentro explicacion.

gracias
  #12 (permalink)  
Antiguo 09/01/2012, 11:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problema paginador

Eso es porque tu función AJAX esta mal ya te dije, tienes que pasarle todos los parámetros de tu búsqueda tal como pasas el número de hoja tienes que pasar también todos los parámetros que estas buscando.

Ese error es porque igualmente en la función con la que recibes los datos estas insertandolos en otro <div> que no es el original donde estan tus resultados.

Ambos errores los resuelves desde Javascript, así que te invito que vayas al foro correspondiente ya que este solo es de PHP.
  #13 (permalink)  
Antiguo 13/01/2012, 22:14
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 18 años
Puntos: 1
Respuesta: problema paginador

ESta siendo mas leido este problema aqui que en el foro de javasript, os paso los enlaces.... por si alguien tiene el mismo problema.

http://www.forosdelweb.com/f13/poble...inador-968824/ ninguna contestacion.
http://www.forosdelweb.com/f13/pasar...or-get-969523/

Creo que con el segundo enlace la cosa queda mas clara.

Gracias

Etiquetas: mysql, paginador, registro, sql, variables
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 16:43.