Foros del Web » Programando para Internet » PHP »

Separar datos

Estas en el tema de Separar datos en el foro de PHP en Foros del Web. Hola tengo una consulta de la cual saco ciertos datos de clientes, los muestro en una tabla todo bien hasta aca pero tengo que separarlos ...
  #1 (permalink)  
Antiguo 27/11/2015, 10:47
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Separar datos

Hola tengo una consulta de la cual saco ciertos datos de clientes, los muestro en una tabla todo bien hasta aca pero tengo que
separarlos de 5 en 5... en esto estoy confundida pues con mi codigo muestra un listado
JUAN
PEDRO
LAURA
IRMA
JULIO
MARIA
KARLA

Código PHP:
<table >
  <thead>
    <tr>
    </tr></thead>
  <?php do { ?>
    <tbody>
      <tr>
    
        <td ><?php echo $row_clientes['Nombre'];
         
?></td>
        <td ></td>
      </tr></tbody>
    <?php } while ($row_clientesmysql_fetch_assoc($clientes)); ?>
</table>
solo que no se que hacer para mostrar asi

JUAN---PEDRO---LAURA---IRMA---JULIO
MARIA--KARLA---OSCAR---FLOR---ANGEL

ALGUIEN PUEDE ORIENTARME
Gracias :)
  #2 (permalink)  
Antiguo 27/11/2015, 11:34
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: Separar datos

Saludo.
Lo que tienes que hacer es tener una variable que vaya contando
cuantos registros se estàn dibujando, que empiece en 1,
y sí llega a 5 cierre la fila actual,y empiece una nueva
(y también reinicie la variable a 1).

Algo así

Código PHP:
Ver original
  1. <?php
  2. $registros = 1;
  3. ?>
  4. <tbody>
  5. <?php
  6. while($row_clientes = mysql_fetch_assoc($clientes))
  7. {
  8.   if($registros == 1)
  9.  {
  10. ?>
  11.    <tr>
  12. <?php
  13.  }
  14.   if($registros <= 5)
  15.   {
  16.    $registros++;
  17. ?>
  18.   <td><?php echo $row_clientes['Nombre']; ?></td>
  19. <?php      
  20.   }
  21.   if($registros > 5)
  22.  {
  23.    $registros = 1;
  24. ?>
  25.    </tr>
  26. <?php
  27.  }
  28. }
  29. ?>
  30. </tbody>
__________________
"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 27/11/2015, 12:21
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Separar datos

Gracias amigo lo hice pero quedo asi
LAURA---JUAN---PEDRO---MARIA---TANIA--JULIO---MARCOS (TODOS EN UNA SOLA FILA)

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Lo que tienes que hacer es tener una variable que vaya contando
cuantos registros se estàn dibujando, que empiece en 1,
y sí llega a 5 cierre la fila actual,y empiece una nueva
(y también reinicie la variable a 1).

Algo así

Código PHP:
Ver original
  1. <?php
  2. $registros = 1;
  3. ?>
  4. <tbody>
  5. <?php
  6. while($row_clientes = mysql_fetch_assoc($clientes))
  7. {
  8.   if($registros == 1)
  9.  {
  10. ?>
  11.    <tr>
  12. <?php
  13.  }
  14.   if($registros <= 5)
  15.   {
  16.    $registros++;
  17. ?>
  18.   <td><?php echo $row_clientes['Nombre']; ?></td>
  19. <?php      
  20.   }
  21.   if($registros > 5)
  22.  {
  23.    $registros = 1;
  24. ?>
  25.    </tr>
  26. <?php
  27.  }
  28. }
  29. ?>
  30. </tbody>
  #4 (permalink)  
Antiguo 27/11/2015, 13:53
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 6 meses
Puntos: 7
Respuesta: Separar datos

Tendria que funcionar lo que paso mortiprogramador, te dejo un ejemplo usando array

Código PHP:
Ver original
  1. <?php
  2. //Array con los nombres.
  3. $nombre = array('Gonzalo', 'Franco', 'Jorge', 'Pablo', 'Juan', 'Alfonso');
  4.  
  5. //Inicializo la variable en 1
  6. $registro = 1;
  7. ?>
  8.  <!DOCTYPE html>
  9.  <html>
  10.     <head>
  11.        <meta charset="utf-8">
  12.        <title>Foros del Web</title>
  13.     </head>
  14.     <body>
  15.        <table align="center">
  16. <?php
  17. //Recorro el arreglo.
  18.    for($i = 0; $i < count($nombre); $i++) {
  19.       if($registro == 1) {
  20. ?>
  21.             <tr>
  22. <?php
  23.       }
  24.       //Verificamos  que $registro se menor o igual a 5
  25.       if($registro <= 5) {
  26.          //Incremetamos a $registro en uno en uno
  27.          $registro++;
  28. ?>
  29.                   <td><?php echo $nombre[$i]; ?></td>
  30. <?php
  31.       }
  32.       //Verificamos que registro no sea mayor a 5
  33.       if($registro > 5) {
  34.          //Si lo es le cambiamos el estado a $registro y lo dejamos en 1
  35.          $registro = 1;
  36. ?>
  37.             </tr>
  38. <?php
  39.       }
  40.    }
  41.    //Por ultimo comprobamos que registro sea mayor 1 y menor que 5 para cerrar el tr
  42.    if($registro > 1 && $registro < 5) {
  43. ?>
  44.             </tr>
  45. <?php
  46.    }
  47. ?>
  48.        </table>
  49.     </body>
  50.  </html>

Le agregue una condición cuando termina el for para comprobar que termine y cierre bien la fila ejemplo tenemos un array de 6 elementos los primeros 5 vuelta la va hacer bien $registro va a cambiar el estado a 1 y volver a contar, da una vuelta mas por que son 6 elementos y hace sola columna, sale del bucle y no cierra la fil.

Código PHP:
Ver original
  1. if($registro > 1 && $registro < 5)

¡Saludos!
  #5 (permalink)  
Antiguo 27/11/2015, 16:38
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Separar datos

Gracias chicos si sale solo que tenia un div y no habia puesto float: left; para que quedara uno seguido del otro

el único detalle ahora es que muestra 7 registro y vuelven a "dibujarse" 7 ... en lugar de solo 5 estoy checandolo

GRACIAS
  #6 (permalink)  
Antiguo 27/11/2015, 19:47
 
Fecha de Ingreso: octubre-2015
Ubicación: España
Mensajes: 21
Antigüedad: 8 años, 6 meses
Puntos: 6
Respuesta: Separar datos

Buenas,

Una mejor opción es saber el número de registros que tienes y comprobar el módulo de la cantidad de datos por fila que quieras mostrar y cuando sea 0 hacer el salto de linea.

Para ello debemos entender que es un módulo:
Un módulo es el resto entre la división de dos números a y b en su forma de entero natural. Digamos que a:b = c (cociente) con resto (m), el resto es nuestro módulo y su operación se realiza con el símbolo de porcentaje (%; a % b = m).
1 % 2 = 1 (1 dividido entre 2 da como resultado 0 y resto 1)
2 % 2 = 0 (2 dividido entre 2 da como resultado 1 y resto 0)

Entonces para nuestro código sería:
Código PHP:
<?php
$valores 
= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
$limitPerRow 5;
foreach(
$valores As $k=>$v) {
    if(
$k%$limitPerRow == $limitPerRow-1) echo $v.PHP_EOL// salto de fila
    
else echo $v."    "// muestreo con normalidad
}
echo 
PHP_EOL;
?>
El script lo realicé para PHP CLI para testearlo con facilidad en la terminal.
El output sería el siguiente:
Código:
1	2	3	4	5
6	7	8	9	10
11	12	13	14	15
16	17
Espero que te sirva.
Un saludo!
  #7 (permalink)  
Antiguo 27/11/2015, 22:37
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 6 meses
Puntos: 7
Respuesta: Separar datos

Terrible logica!!! Muchas gracias.

¡Saludos!

Etiquetas: mysql, tabla
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 03:58.