Foros del Web » Programando para Internet » PHP »

Pasar Array por paginator

Estas en el tema de Pasar Array por paginator en el foro de PHP en Foros del Web. Hola a todos. Me acaba de surgir un problema que os muestro a continuación, ya que no sé como afrontarlo. En Código HTML: http://www.asturnatura.com/asturnaturaDB/buscador/buscador.php tengo ...
  #1 (permalink)  
Antiguo 27/02/2006, 11:57
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 1 mes
Puntos: 0
Pasar Array por paginator

Hola a todos. Me acaba de surgir un problema que os muestro a continuación, ya que no sé como afrontarlo.

En
Código HTML:
http://www.asturnatura.com/asturnaturaDB/buscador/buscador.php
tengo un buscador web, donde se escribe una palabra y abajo se selecciona una serie de opciones posibles que se guardan para realizar la consulta en la base de datos.
El código de estas opciones es del tipo
Código HTML:
<input type="checkbox" name="op[]" value="Nombrecomun2"  checked="checked" /> 
, de forma que se guardan en un array y luego se usan en la consulta para listar los resultados.

Ahora bien, si al ver los resultados os fijais en la barra de direccion que aparece en la nueva pagina de resultados, aparece algo como &op%5B%5D=Nombrecomun2& y en los links de las paginas que crea paginator el link con el op anterior pasa a ser op=Array, y por tanto los links a los numeros de pagina no funcionan, dando error y no se puede acceder a las mismas.

Cómo puedo solucionar esto?
  #2 (permalink)  
Antiguo 27/02/2006, 12:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Supongo que propagas tu array o lo intentas por el URL? .. En ese caso ... sigue las indicaciones de esta FAQ:

http://www.forosdelweb.com/showthrea...072#post262072

Un saludo,
  #3 (permalink)  
Antiguo 27/02/2006, 14:01
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 1 mes
Puntos: 0
Vale, pero que pasa si el array es variable, quiero decir, que depende de las opciones que se seleccionen:
Código HTML:
 <label> <input type="checkbox" name="op[]" value="Nombrecomun2"  checked="checked" />
                        nombre vulgar (en espa&ntilde;ol y otros idiomas) </label><label>
                        <input type="checkbox" name="op[]" value="Especie" />
                        especie y sin&oacute;nimos </label><label>
                        <input type="checkbox" name="op[]" value="Genero" />
                        g&eacute;nero</label><label>
                        <input type="checkbox" name="op[]" value="Familia" />
                        familia</label><label>
                        <input type="checkbox" name="op[]" value="Orden" />
                        orden</label><label>
                        <input type="checkbox" name="op[]" value="Clase" />
                        clase</label><<label>
                        <input type="checkbox" name="op[]" value="Filum" /> 
Cómo tendría que definir el
Código PHP:
$array=array("algo","nose","otracosa"); 
  #4 (permalink)  
Antiguo 27/02/2006, 14:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Deberías indicar el código completo .. por qué indicando código en porciones no se alcaza a entender que es lo que realmente tienes y con qué trabajas.

De todas formas .. quien en tu caso toma el "Query String" y lo desglosa para meter su variable de "paginación" es "Paginator" (podrías dar el link de la web oficial para que la gente sepa de que hablas).

En ese caso habría que ver como "Paginator" trabaja el tema para ver si "serializa" o no .. o como lo hace.

Un saludo,
  #5 (permalink)  
Antiguo 27/02/2006, 14:19
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 1 mes
Puntos: 0
El codigo del formulario es:
Código HTML:
 <form name="form1" method="get" action="http://www.asturnatura.com/Consultas/rbuscador.php" target="_parent">
Buscar especies que: 
                    <select name="campo" class="redaccion">
                      <option value="contiene" selected>contienen</option>
                      <option value="comienza">comienzan con</option>
                      <option value="acaba">acaban con</option>
                    </select> 
                    &nbsp;
                    <input name="palabra" type="text" id="palabra" > 
                    &nbsp;<label>
                        <input type="checkbox" name="op[]" value="Nombrecomun2"  checked="checked" />
                        nombre vulgar (en espa&ntilde;ol y otros idiomas) </label><label>
                        <input type="checkbox" name="op[]" value="Especie" />
                        especie y sin&oacute;nimos </label><label>
                        <input type="checkbox" name="op[]" value="Genero" />
                        g&eacute;nero</label><label>
                        <input type="checkbox" name="op[]" value="Familia" />
                        familia</label><label>
                        <input type="checkbox" name="op[]" value="Orden" />
                        orden</label><label>
                        <input type="checkbox" name="op[]" value="Clase" />
                        clase</label><label>
                        <input type="checkbox" name="op[]" value="Filum" />
                        filum</label>
n&uacute;mero de resultados por p&aacute;gina
                      <select name="num" id="num">
                        <option value="5">5</option>
                        <option value="10" selected>10</option>
                        <option value="15">15</option>
                        <option value="20">20</option>
                        <option value="25">25</option>
                        <option value="30">30</option>
                        <option value="40">40</option>
                        <option value="50">50</option>
                      </select>
         
      &nbsp;&nbsp;&nbsp;ordenar </td>
                        <label>
                        <input type="radio" name="ord" value="Especie" checked>
                        alfabéticamente</label>
                        <br>
                        <label>
                        <input type="radio" name="ord" value="numid">
  evolutivamente</label>
              
                              <input type="SUBMIT" class="redaccion" value="Buscar">              
      </form> 

y de la pagina de resultados:
Código PHP:
  if ($_GET["campo"]=="contiene") {
                
$_pagi_sql="SELECT * FROM astur WHERE ";
                for (
$i=0;$i<count($_GET["op"])-1;$i++){
                  if (
$_GET["op"][$i]=="Nombrecomun2"){
                     
$_pagi_sql.="ing LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="fra LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="ita LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="ale LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="por LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="gal LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="ast LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="cat LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="vas LIKE '%".$_GET["palabra"]."%' or ";}
                 if (
$_GET["op"][$i]=="Especie"){
                     
$_pagi_sql.="Especie LIKE '%".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="Sinonimos LIKE '%".$_GET["palabra"]."%' or "; }
                    
$_pagi_sql.="".$_GET["op"][$i]." LIKE '%".$_GET["palabra"]."%' or "
                  }
                  
$_pagi_sql.="".$_GET["op"][$i]." LIKE '%".$_GET["palabra"]."%' ORDER BY ".$_GET["ord"]." ASC";               
      }
      
                if (
$_GET["campo"]=="comienza") {
                
$_pagi_sql="SELECT * FROM astur WHERE ";
                for (
$i=0;$i<count($_GET["op"])-1;$i++){
                  if (
$_GET["op"][$i]=="Nombrecomun2"){
                     
$_pagi_sql.="ing LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="fra LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="ita LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="ale LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="por LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="gal LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="ast LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="cat LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="vas LIKE '".$_GET["palabra"]."%' or ";}
                  if (
$_GET["op"][$i]=="Especie"){
                     
$_pagi_sql.="Especie LIKE '".$_GET["palabra"]."%' or ";
                     
$_pagi_sql.="Sinonimos LIKE '".$_GET["palabra"]."%' or "; }
                    
$_pagi_sql.="".$_GET["op"][$i]." LIKE '".$_GET["palabra"]."%' or "
                  }
                  
$_pagi_sql.="".$_GET["op"][$i]." LIKE '".$_GET["palabra"]."%' ORDER BY ".$_GET["ord"]." ASC";               
      }
      
                if (
$_GET["campo"]=="acaba") {
                
$_pagi_sql="SELECT * FROM astur WHERE ";
                for (
$i=0;$i<count($_GET["op"])-1;$i++){
                  if (
$_GET["op"][$i]=="Nombrecomun2"){
                     
$_pagi_sql.="ing LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="fra LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="ita LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="ale LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="por LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="gal LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="ast LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="cat LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="vas LIKE '%".$_GET["palabra"]."' or ";}
                  if (
$_GET["op"][$i]=="Especie"){
                     
$_pagi_sql.="Especie LIKE '%".$_GET["palabra"]."' or ";
                     
$_pagi_sql.="Sinonimos LIKE '%".$_GET["palabra"]."' or "; }
                     
$_pagi_sql.="".$_GET["op"][$i]." LIKE '%".$_GET["palabra"]."' or "
                  }
                  
$_pagi_sql.="".$_GET["op"][$i]." LIKE '%".$_GET["palabra"]."' ORDER BY ".$_GET["ord"]." ASC";               
      }
                    
            
                    
            
$Recordset1 mysql_query($_pagi_sql$Astur) or die(mysql_error());
          
$_pagi_cuantos $_GET["num"];
          include(
"paginator.inc.php");
          echo 
"<br><br>"
  #6 (permalink)  
Antiguo 27/02/2006, 14:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Insisto que el problema es de como usas "Paginator" (y que indiques a "qué" te haces referencia: .. no todo el mundo ha de conocer "Paginator" (supongo que de Jpinedo? ...)).

No se vé como configuras "Paginator" para propagar tus variables ni como lo haces. Supongo que ahí es donde tendrás que serializar tus variables que son de tipo array .. en ese punto.

Un saludo,
  #7 (permalink)  
Antiguo 27/02/2006, 15:10
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 1 mes
Puntos: 0
Pues si, tienes razón, te había entendido mal. El paginator es una script en php para paginar los resultados de una consulta que se puede encontrar en
Código HTML:
http://jpinedo.webcindario.com/scripts/paginator/
.

Uso la versión 1.6 tal cual se puede descargar en la pagina anterior con la única añadidura de $_pagi_nav_num_enlaces=10;

No propago ninguna variable ya que por defecto pasan todas.
  #8 (permalink)  
Antiguo 04/03/2006, 14:09
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Hola:
Paginator no serializa los arrays automáticamente. Así que tendrás que serializarlo "a mano" antes de pasarlo y des-serializarlo al recibirlo.

Saludos
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 15:33.