Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] mostrar contenido array segun criterio de paginacion

Estas en el tema de mostrar contenido array segun criterio de paginacion en el foro de PHP en Foros del Web. Hola a tod@s Estoy aprendiendo a programar en php y necesito un poco de ayuda, mi problema es el siguiente: Tengo un archivo index.php donde ...
  #1 (permalink)  
Antiguo 17/11/2015, 05:55
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
mostrar contenido array segun criterio de paginacion

Hola a tod@s
Estoy aprendiendo a programar en php y necesito un poco de ayuda, mi problema es el siguiente:

Tengo un archivo index.php donde tengo un array, como ejemplo he puesto unos empleados, con la edad y la categoría y otro archivo paginacion.php donde tengo una función que hace que me liste los empleados pasándole por parámetros el array en cuestión, el límite de resultados a mostrar y la página solicitada, con la idea más adelante de incluir un input para realizar búsquedas, pues esta función al ser un array multidimensional no consigo que funcione, me deberia aparecer asi:
0 Maria 25 Administrativo
1 Antonio 45 Gerente comercial
Pero me coge como 0 el nombre del array[2] o sea, Susana y como 1 los años del array[2] también

codigo index.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. $empleados = array
  4.                 (
  5.                 array('Maria','25','Administrativo'),
  6.                 array('Antonio','45','Gerente comercial'),
  7.                     array('Susana','37','Gerente RR.HH.'),
  8.                 array('Luis','28','Administrativo'),
  9.                 array('Antonio','38','Mozo Almacén'),
  10.                     array('Susana','37','Gerente RR.HH.'),
  11.                 array('Maria','25','Administrativo'),
  12.                 array('Antonio','45','Gerente comercial'),
  13.                     array('Susana','37','Gerente RR.HH.'),
  14.                 array('Maria','25','Administrativo'),
  15.                 array('Antonio','45','Gerente comercial'),
  16.                     array('Susana','37','Gerente RR.HH.')
  17.                 );
  18.  
  19.    require ("paginar.php");
  20.  
  21. //recorremos el array empleados y cada uno de los nombres
  22.    
  23. foreach($empleados as $personas)
  24.     {
  25.    
  26.     foreach($personas as $nombre)
  27.         {
  28.             $nombre;
  29.        
  30.         }
  31.    
  32.     }  
  33.    
  34.    if (isset($_GET[p]))
  35.       $p = $_GET[p];
  36.    else
  37.       $p=1;      
  38.  
  39. //Aqui ponemos el número de elementos que queremos que aparezca por página, en este caso 2
  40.    paginar($personas, 2, $p);
  41. ?>
codigo paginar.php
Código PHP:
Ver original
  1. <?php
  2. function paginar($personas, $l, $p) {
  3. // DEFINIMOS LA CANTIDAD DE PÁGINAS
  4. $paginas = ceil(count($p) / $l);
  5. // CONDICION DE INICIO
  6. $inicio = ($p-1)*$l;
  7.      
  8. // CONDICION DE FINAL
  9. $final = $p*$l;
  10.  
  11. // MOSTRAMOS LOS ITEMS RESPECTIVOS
  12.      echo '<div id="resultados">';
  13.       for ($i=$inicio; $i<$final; $i++) {
  14.          if (isset($personas[$i]))
  15.             echo "<div id=\"item\">$i.- $personas[$i]</div>";
  16.          else
  17.             break;
  18.       }
  19.       echo '</div>';
  20.  
  21. // LISTAMOS LAS PÁGINAS
  22.       echo '<div id="paginas">';
  23.       if ($p>1)
  24.          echo "<a href=\"index.php?p=" . ($p-1) . "\">P&aacute;gina Anterior</a>&nbsp;-&nbsp;";
  25.      
  26.       for ($i=1; $i<=$paginas; $i++) {
  27.          if ($i == $p)
  28.             echo "<strong>$i</strong>&nbsp;";
  29.          else
  30.             echo "<a href=\"index.php?p=$i\">$i</a>&nbsp;";
  31.       }
  32.      
  33.       if ($p<$paginas)
  34.          echo "&nbsp;-&nbsp;<a href=\"index.php?p=" . ($p+1) . "\">P&aacute;gina Siguiente&nbsp;</a>";
  35.       echo '</div>';
  36.  
  37. return;
  38.    }
  39. ?>
  #2 (permalink)  
Antiguo 18/11/2015, 22:54
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Eso es por los foreach del index.

Es mejor no usarlos ahí, sino en la de paginación.
Sín embargo, se pueden borrar, y enviar a la función
de paginar el array $empleados en vez de $personas.

Y allá obviamente como está en un for, se debe recorrer
no solo la posición inicial (que ya está) sino las internas.

Ej

Código PHP:
Ver original
  1. echo "<div id=\"item\">".$i."- ".$personas[$i][0]."- ".$personas[$i][1]."- ".$personas[$i][2]."</div>";
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 19/11/2015, 03:29
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Hola, en primer lugar, gracias por responder
Y ahora pasando a tu código

Si utilizo empleados y quito foreach me aparece así:

0.- Array[0].- Array[1].- Array[2]
1.- Array[0].- Array[1].- Array[2]

Si utilizo personas con el foreach esto es lo que aparece

0.- .Susana[0].- .Susana[1].- .Susana[2]
1.- .37[0].- .37[1].- .37[2]

Esto quiere decir que el índice de cada elemento no me lo está cogiendo, aparece como texto
  #4 (permalink)  
Antiguo 19/11/2015, 03:33
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Cita:
Iniciado por pedromir Ver Mensaje
Hola, en primer lugar, gracias por responder
Y ahora pasando a tu código

Si utilizo empleados y quito foreach me aparece así:

0.- Array[0].- Array[1].- Array[2]
1.- Array[0].- Array[1].- Array[2]

Si utilizo personas con el foreach esto es lo que aparece

0.- .Susana[0].- .Susana[1].- .Susana[2]
1.- .37[0].- .37[1].- .37[2]

Esto quiere decir que el índice de cada elemento no me lo está cogiendo, aparece como texto
Saludo.
Cierto, intenta con
Código PHP:
Ver original
  1. $personas[$i][0][0], $personas[$i][0][1] y $personas[$i][0][2]
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 19/11/2015, 05:43
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Ya funciona, he estado estudiando tu código y he visto que era un problema de puntos y comillas, así que he hecho unas pequeñas modificaciones y funciona perfectamente, te pongo como ha quedado para que lo veas y muchas gracias por tu ayuda.

Código PHP:
Ver original
  1. echo "<div id=\"item\">" . $i .".- ". $empleados[$i][0] ." - ". $empleados[$i][1] ." - ". $empleados[$i][2] . "</div>";

Otra cosa, como he comentado al principio, quiero incluir un input para realizar búsquedas sobre ese array y no me funciona bien

Te pongo lo que llevo hecho
Código PHP:
Ver original
  1. <?php
  2. <form action="index.php" method="get">  
  3.  <input type="text" name="TxtBuscar" size="22" maxlength="150">
  4.  <input type="submit" value="Buscar">
  5.  </form>
  6.  
  7. $buscar = $_POST['TxtBuscar'];
  8. $coincidencias = array();
  9. $empleados = array
  10.                 (
  11.                 array('Maria','25','Administrativo'),              
  12.                 array('Antonio','45','Gerente comercial'),
  13.                         array('Susana','37','Gerente RR.HH.')
  14.                 );
  15. foreach($empleados as $valor) {
  16. $indice = array_search($buscar,$valor[0]);
  17.     if($indice){
  18.         $coincidencias[]=$valor[$indice];
  19.     }
  20. }
  21.            
  22. print_r($coincidencias);
Mi idea es recoger el texto a buscar a través del input, en este caso seria solo en el campo nombre por eso he puesto valor[0] y los resultados de esa búsqueda pasarlos como parámetros a la función de la pagina paginar.php
  #6 (permalink)  
Antiguo 19/11/2015, 09:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Efectos del insomnio de mi parte...

En cuanto a lo que se quiere ahora, array_search espera un array como segundo parámetro, y no un string como está ahora, cuestión de cambiarlo por un if.

Código PHP:
Ver original
  1. foreach($empleados as $valor) {
  2.     if($buscar == $valor[0]){
  3.         $coincidencias[]=$valor;
  4.     }
  5. }
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 19/11/2015, 10:48
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Pues espero que ahora hayas dormido lo suficiente, je je

He modificado el foreach tal como me has comentado y no hace nada, escribo un nombre en el input para que lo busque y no lo muestra, no hace nada y no habría que utilizar un array_push para que añada el nombre encontrado al nuevo array $coincidencias y lo muestre
  #8 (permalink)  
Antiguo 19/11/2015, 12:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Pues a mí me funciona sin problema teniendo
la estructura de

Código PHP:
Ver original
  1. $empleados = array
  2.                 (
  3.                 array('Maria','25','Administrativo'),              
  4.                 array('Antonio','45','Gerente comercial'),
  5.                         array('Susana','37','Gerente RR.HH.')
  6.                 );

Prueba con solo este array y el foreach con el if.
Tal vez hay algo más que está haciendo interferencia.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 19/11/2015, 14:20
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

A mi también me afecta el insomnio, no me funcionaba porque en el input tenia puesto method="get" y en la variable buscar tenia puesto $_POST así que he puesto en los dos sitios POST y ya funciona, pero lógicamente los datos me aparecen así:
Array ( [0] => Array ( [0] => Antonio [1] => 45 [2] => Gerente comercial ) )
Así que como se puede hacer para quitar todos los arrays y los índices y que aparezcan sólo los nombres porque en JavaScript lo hacía sin problemas pero aquí llevo rato haciendo pruebas y soy incapaz
  #10 (permalink)  
Antiguo 19/11/2015, 19:47
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Cita:
Iniciado por pedromir Ver Mensaje
A mi también me afecta el insomnio, no me funcionaba porque en el input tenia puesto method="get" y en la variable buscar tenia puesto $_POST así que he puesto en los dos sitios POST y ya funciona, pero lógicamente los datos me aparecen así:
Array ( [0] => Array ( [0] => Antonio [1] => 45 [2] => Gerente comercial ) )
Así que como se puede hacer para quitar todos los arrays y los índices y que aparezcan sólo los nombres porque en JavaScript lo hacía sin problemas pero aquí llevo rato haciendo pruebas y soy incapaz
Saludo.
Pues debería mostrar normal, pues este array se le pasará a la función que
muestra, ¿y allá estaba ya listo no? ¿O que cambió?

Es decir, en la función paginar ya esta la lógica necesaria para mostrar, y como este array resultante se manda para allá, pues debe mostrar normal, pues eso ya había quedado resuelto en los posts anteriores.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 20/11/2015, 02:57
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Tienes toda la razón, es que como estaba haciendo pruebas con esta parte de la programación sólo, lo que son las búsquedas, para no liarla, y se me había olvidado la parte y el fichero de paginación, una vez unidas las dos cosas, efectivamente funciona, requiere unos ajustes, para que funcione correctamente también en las páginas siguientes, no sólo en la primera, pero eso intentaré resolverlo yo sólo, me queda una consulta.
El array quiero ponerlo en una página aparte, el sólo, para no mezclarlo con otro código, como lo tengo hecho en JavaScript por ejemplo, el código de búsquedas u otro código iría en otra página y el de paginación en una tercera, así que he puesto en index.php el array y require ("index2.php"); que es el archivo donde he puesto el código de búsquedas y en este he puesto require ("paginación.php") que es donde está el código de paginación, no sé si es así como se debe hacer o hay alguna otra forma de hacerlo
  #12 (permalink)  
Antiguo 20/11/2015, 11:48
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Sí, así es mejor.

Tengo una última duda.
¿El array viene de una base de datos, o es hecho a mano?

Lo pregunto porque no se ha mencionado el uso de una bd.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #13 (permalink)  
Antiguo 20/11/2015, 12:52
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

El array está hecho a mano, las bases de datos, eso ya es otro nivel, se escapan de mis conocimientos, yo manejo sólo el HTML, el javascript, sin ser un experto y ahora estoy a ver si consigo aprender algo de php y en HTML pues tu pones <SCRIPT language=Javascript type=text/javascript src="pepe.js"></SCRIPT> y ya tienes acceso al archivo js creas varios si lo consideras conveniente para tener el código limpio y organizado, yo por ejemplo tengo uno sólo con el array y el resto del código js va repartido en varios archivos, pero veo que en php no funciona igual
  #14 (permalink)  
Antiguo 20/11/2015, 13:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Pues en php se puede hacer lo mismo, de hecho, ya lo tienes en parte así,
en una parte la paginación y en otro el array.

Ahora, lo que puedes hacer es el include al contrario, es decir,
no incluir la paginación en el array, sino el array en la paginación,
sí es que a eso es a lo que se hace referencia.

En cuanto a lo que estás aprendiendo, vas por un buen camino,
primero aprender la lógica de los arrays, y ya luego subir el nivel
para paginar en base a una consulta de base de datos, y los
resultados se pueden obtener en forma de array, en cuyo caso
ya es ganancia lo que se está haciendo.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #15 (permalink)  
Antiguo 20/11/2015, 13:45
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Lo lógico a lo mejor sería hacerlo con una b.d. pero como nunca he trabajado con ellas no se la dificultad, así que prefiero centrarme en el PHP y dejar lo otro para más adelante y hacer los array a mano, no quiero meter los array en la página de paginación porque al hacerlos a mano, voy a estar haciendo modificaciones en el array con cierta frecuencia y lo más fácil es que alguna vez toque algo del código de paginación y la lie, por eso quiero el array en una página el sólo, sin ningún código más, otra cosa que he visto que es distinto, es que al ejecutar código en php te abre otra página, entonces si aparte del formulario tienes otras cosas en esa página, cada vez que haces una consulta por ejemplo te recarga la página entera, así que la única forma de evitar eso, se me ha ocurrido que sería creando un iframe en la página HTML y dentro de ese iframe meter la página php
  #16 (permalink)  
Antiguo 20/11/2015, 15:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Iframe es un inicio para manejarlo, y más adelante podría ser incluso
manejando Ajax, para incluso no recargar la página completa
sino ciertas secciones de la misma.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #17 (permalink)  
Antiguo 21/11/2015, 02:40
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Echame una última manita en el tema de la paginación, cuando me encuentra 3 resultados en una búsqueda y tengo puesto por ejemplo que me muestre 2, cuando pincho en página siguiente pierde la variable $coincidencias y ya no me aparece el tercer nombre y cuando pincho en anterior, tampoco me aparecen ya los dos primeros y ya he cambiado en la función de paginar la variable empleados por la de coincidencias
No sé si el problema está en este if del archivo
Código PHP:
Ver original
  1. if (isset($_GET[p]))
  2.       $p = $_GET[p];
  3.    else
  4.       $p=1;  
  5.  
  6. paginar($coincidencias, 2, $p);
  #18 (permalink)  
Antiguo 21/11/2015, 07:54
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.

Pues ese no es el problema.
El asunto es que se pierde el filtro pues la paginación usa GET,
en cuyo caso la función de paginación necesita obtener ese dato
para luego usarlo a la hora de dibujar las páginas.

Igualmente, como está el código actualmente, no está dibujando
los links de anterior, siguiente y página por completo, esto es
por el cálculo que se hace en la variabla páginas usando p,
cosa que deberia cambiar a ser usando el count del array que se recibe.

Voy a dejarte el código con algunas mejoras para que lo revises.

array.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.     $datos = array
  4.                     (
  5.                         array('Maria','25','Administrativo'),
  6.                         array('Antonio','45','Gerente comercial'),
  7.                         array('Susana','37','Gerente RR.HH.'),
  8.                         array('Luis','28','Administrativo'),
  9.                         array('Antonio','38','Mozo Almacén'),
  10.                         array('Susana','37','Gerente RR.HH.'),
  11.                         array('Maria','26','Administrativo'),
  12.                         array('Antonio','45','Gerente comercial'),
  13.                         array('Susana','37','Gerente RR.HH.'),
  14.                         array('Maria','27','Administrativo'),
  15.                         array('Antonio','45','Gerente comercial'),
  16.                         array('Susana','37','Gerente RR.HH.')
  17.                     );
  18.  
  19. ?>

index.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.     include_once 'array.php';
  4.     include_once 'paginar.php';
  5.            
  6.     if (isset($_GET['p']))
  7.       $p = $_GET['p'];
  8.     else
  9.       $p=1;      
  10.  
  11.     $t = '';
  12.     if (isset($_GET['t']))
  13.         $t = $_GET['t'];
  14.     else if(isset($_POST['TxtBuscar']))
  15.         $t = $_POST['TxtBuscar'];
  16.  
  17. ?>
  18.  
  19. <form action="index.php" method="post">  
  20.  <input type="text" name="TxtBuscar" size="22" maxlength="150">
  21.  <input type="submit" value="Buscar">
  22.  </form>
  23.  
  24. <?php
  25.     if (isset($t))
  26.     {
  27.         $coincidencias = array();
  28.         foreach($datos as $valor) {
  29.             if($t == $valor[0]){
  30.                 $coincidencias[]=$valor;
  31.             }
  32.         }        
  33.     }
  34.     else
  35.         $coincidencias = $datos;
  36.  
  37. ?>
  38.  
  39. <?php
  40.     //Aqui ponemos el número de elementos que queremos que  aparezca por página, en este caso 2
  41.     paginar($coincidencias, 2, $p, $t);
  42. ?>

paginar.php
Código PHP:
Ver original
  1. <?php
  2.     function paginar($datos, $l, $p, $t) {
  3.     // DEFINIMOS LA CANTIDAD DE PÁGINAS
  4.     $paginas = ceil(count($datos) / $l);
  5.     // CONDICION DE INICIO
  6.     $inicio = ($p-1)*$l;  
  7.     // CONDICION DE FINAL
  8.     $final = $p*$l;
  9.      
  10.     // MOSTRAMOS LOS ITEMS RESPECTIVOS
  11.          echo '<div id="resultados">';
  12.           for ($i=$inicio; $i<$final; $i++) {
  13.              if (isset($datos[$i]))
  14.                 echo "<div id=\"item\">".$datos[$i][0]." ".$datos[$i][1]." ".$datos[$i][2]."</div>";
  15.              else
  16.                 break;
  17.           }
  18.           echo '</div>';
  19.      
  20.     // LISTAMOS LAS PÁGINAS
  21.           echo '<div id="paginas">';
  22.           if ($p>1)
  23.              echo "<a href=\"index.php?p=" . ($p-1) . "&t=".$t."\">P&aacute;gina Anterior</a>&nbsp;-&nbsp;";
  24.          
  25.           for ($i=1; $i<=$paginas; $i++) {
  26.              if ($i == $p)
  27.                 echo "<strong>$i</strong>&nbsp;";
  28.              else
  29.                 echo "<a href=\"index.php?p=$i&t=$t\">$i</a>&nbsp;";
  30.           }
  31.          
  32.           if ($p<$paginas)
  33.              echo "&nbsp;-&nbsp;<a href=\"index.php?p=" . ($p+1) . "&t=$t\">P&aacute;gina Siguiente&nbsp;</a>";
  34.           echo '</div>';
  35.      
  36.     return;
  37.        }
  38.     ?>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #19 (permalink)  
Antiguo 21/11/2015, 14:28
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

¡¡PERFECTO!! Ahora funciona bien, hace la paginación perfectamente, pero ahora no funciona un código que le añadí el otro día, para que no hiciera distinciones entre mayúsculas y minúsculas y para que al no hicera falta escribir el nombre completo, sino que escribiendo las primeras letras me hiciera la búsqueda pero no funciona y lo tengo puesto así:
index.php
Código PHP:
Ver original
  1. $cadena_buscada = $t;
  2.         $cadena_de_texto = $valor[0];
  3.         $coincidencia = stripos($cadena_de_texto, $cadena_buscada);
  4.              
  5.          if ($coincidencia === true) {
  6.                  //if($t == $valor[0]){          
  7.                  $coincidencias[]=$valor;
  #20 (permalink)  
Antiguo 22/11/2015, 00:44
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Bastante ocurrente, claro, con esa función es apenas.

Sin embargo, sí la posición inicial encontrada es 0,
aunque la encuentre, el if no permitirá la coincidencia
pues se le pregunta si es true, y en este caso no lo sería.

¿Solución? Cambiar la condición del if para que sea !== false

Finalmente, en el if anterior a ese, es decir, el del isset,
agregar un && !empty($t) pues el isset entra al estar inicializada
aunque sea con valor vacío, y esto no mostraría la información inicial.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #21 (permalink)  
Antiguo 22/11/2015, 03:37
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Funciona perfecto, hay veces, sobre todo si voy deprisa que no me doy cuenta de que === true no es lo mismo que distinto de !== false aunque lo parezca
Cuando en el array tienes caracteres acentuados como María por ejemplo y necesitas hacer la búsqueda sin tener en cuenta si la palabra en el array está acentuada o no por lo poco que conozco, todavía, de php, hay que utilizar un función como la de abajo, para limpiar el array, porque he probado con un str_replace, como hago en JavaScript pero en php no funciona o hay otra forma de hacerlo
Código PHP:
Ver original
  1. function limpiarString($string)    {
  2.       $string = strip_tags($string);
  3.       $string = $string = htmlentities($string, ENT_QUOTES,'UTF-8');
  4.       return stripslashes($string);  
  5. ($string);
  6.    }
  #22 (permalink)  
Antiguo 22/11/2015, 09:06
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Revisa las funciones de utf8_encode y utf8_decode.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #23 (permalink)  
Antiguo 23/11/2015, 02:53
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Ya he resuelto lo de los acentos, pero el problema que te he planteado no se refería a la codificación de las páginas web, sino a la búsqueda de un texto que en el array está acentuado, es el caso de María, que en el array está escrita con acento y si tu en el input la escribes sin él, pues lógicamente no te la encuentra, así que lo que he hecho, como hago en javascript es crear una función con str_replace que al hacer la búsqueda me quite los acentos en el array y en el texto que se introduce en el input y entonces da igual como esté escrita la palabra en un sitio y en el otro, me la encuentra siempre.
No sé si en php se puede o se debe de hacer de otra forma.

Código PHP:
Ver original
  1. $acentos = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú");
  2.         $reemplaza = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
  3.         $cadena_reemplaza = str_replace($acentos, $reemplaza, $cadena);
  4.         $t_reemplaza = str_replace($acentos, $reemplaza, $t);
  5.                
  6.         $encontrar_coincidencia = stripos($cadena_reemplaza, $t_reemplaza);
  #24 (permalink)  
Antiguo 23/11/2015, 11:33
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Ah, yap. Pues con el str_replace que ya manejaste y comentas hiciste en js
es una buena opción para lograr lo que se quiere, php también usa str_replace.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #25 (permalink)  
Antiguo 25/11/2015, 13:17
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Ultima consulta y esta muy simple, no hay forma de modificar la construcción del array y evitar de alguna forma el tener que repetir la palabra array tantas veces, porque para mi que los hago a mano resulta un poco tedioso.
Código PHP:
Ver original
  1. $datos = array
  2.                         (
  3.                             array('María1','25','Administrativo'),
  4.                             array('Antonio2','45','Gerente comercial'),
  5.                                 array('Susana3','37','Gerente RR.HH.'),
  6.             );
No se podría dejar de esta manera, como se hace en JavaScript, salvando las distancias
Código Javascript:
Ver original
  1. var datos = new Array();
  2.      datos = [
  3.      ['María1','25','Administrativo'],
  4.      ['Antonio2','45','Gerente comercial']
  5.      ];
A mi me simplificaría mucho la tarea
  #26 (permalink)  
Antiguo 25/11/2015, 13:47
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar contenido array segun criterio de paginacion

Saludo.
Uhm, pues no lo sé, pero creería que lo más fácil sería que sí tienes
una herramienta que lo genera en javascript fácil, pues generarlo allá,
luego copiarlo, pegarlo en php y reemplazar las [ de inicio por array(
y las ] por ), espero sirva.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #27 (permalink)  
Antiguo 26/11/2015, 04:18
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: mostrar contenido array segun criterio de paginacion

Ya lo he probado pero no funciona, así que seguiré investigando el tema, pues ya sólo me queda darte las gracias por tu ayuda, por tu paciencia y por tus enseñanzas y que me servirán de base para poco a poco ir adentrándome en el php, del que ahora gracias a ti, conozco bastante más

Última edición por pedromir; 27/11/2015 a las 02:15

Etiquetas: contenido, paginacion
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 09:24.