Foros del Web » Programando para Internet » PHP »

Sintaxis para mostrar resultados algo asi:

Estas en el tema de Sintaxis para mostrar resultados algo asi: en el foro de PHP en Foros del Web. Hola chicos, vengo una vez mas con una pregunta sobre "orden" para desplegar una serie de contenidos de una tabla en MySQL por medio de ...
  #1 (permalink)  
Antiguo 25/06/2011, 16:23
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Sintaxis para mostrar resultados algo asi:

Hola chicos, vengo una vez mas con una pregunta sobre "orden" para desplegar una serie de contenidos de una tabla en MySQL por medio de PHP.

El orden de desplegado se lleva a cabo con una tabla llamada "orden" algo asi:

Código PHP:
Ver original
  1. $sql = "SELECT * FROM contenidos ORDER BY orden";

Y me gustaria mostrarlos de la siguiente manera:



Los numeros en rojo son los valores de la tabla "orden".

No me gustaria hacer un monton de querys a MySQL, sino simplificar, habria alguna manera de hacerlo asi chicos?

De verdad agradecere de nuevo mil su ayuda !!!!
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #2 (permalink)  
Antiguo 25/06/2011, 17:28
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: Sintaxis para mostrar resultados algo asi:

pues tienes el patron 1,2,4,2,4,2,4,4 ... despues del 4,4 todo sigue con 4
o
seria repetir el patron anterior?
me dices y vemos como le hacemos.
  #3 (permalink)  
Antiguo 25/06/2011, 17:40
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Sintaxis para mostrar resultados algo asi:

No se si entendí bien la pregunta, pero ahí va lo que entendí


Creo que en la tabla contenidos, debería haber un campo llamado "salto_de_linea" (por ejemplo), con valor de 1 y 0
Entoces cuando el valor es 1 mostrás un salto de linea (<br />) y cuando no , no
Esto hace que se muestre el siguiente contenido en la linea de abajo de la anterior.
Ejemplo

Código PHP:
Ver original
  1. $sql = "SELECT * FROM contenidos ORDER BY orden";
  2. while($res=mysql_fetch_assoc($sql))
  3. {
  4.     $res['salto_de_linea'] = '1';
  5.         // MOSTRAR CONTENIDO DESEADO Y SI EL VALOR ES 1 MOSTRAR EL <BR />
  6.     echo '<br />';
  7.    
  8. }
__________________
la la la
  #4 (permalink)  
Antiguo 25/06/2011, 17:58
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Sintaxis para mostrar resultados algo asi:

Hola chicos, gracias por sus respuestas, veran, creo ke no me explike bien, la tabla tiene como 30 contenidos, es algo asi nada mas por poner un ejemplo:

TABLA contenidos



Entonces, me gustaria que ordenara por la columna de ORDEN, eso esta facil, pero como indike en el post anterior, los numeros en rojo en el primer post es donde debe de ir cada "CONTENIDO" en el cuadro correspondiente de la imagen del primer post

En el:
Cuadro 1 COLOCA NES
Cuadro 2 COLOCA SNES
Cuadro 3 COLOCA PS1
Cuadro 4 COLOCA COLECOV
Cuadro 5 COLOCA PS2

Y asi sucesivamente ...

Eso para desplegarlo en una pagina con tablas, no se si me explike bien?
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶

Última edición por JessicaTJ; 25/06/2011 a las 18:08
  #5 (permalink)  
Antiguo 25/06/2011, 18:48
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Sintaxis para mostrar resultados algo asi:

El problema es que esos cuadros negros no siguen ningun patron, me explico
por ejemplo si se mostraran asi:

1
2 3 4
5
6 7 8
9
10 11 12

eso sería un patron en donde se muestra 1 y luego 3 luego 1 y luego 3 y así.. se entiende

1 cuadro
3 cuadros
1 cuadro
3 cuadros
1 cuadro
3 cuadros

el tuyo no parece mostrar un patron definido porque mostrás

1 cuadro
2 cuadros
4 cuadros
2 cuadros
4 cuadros
2 cuadros
6 cuadros

en tu imagen se muetran 23 cuadros, luego decía que tenes 30 registros en la tabla contenidos.

Entoces lo que se necesita en una referencia de como ir mostrando los cuadros o registros.



Yo pondría un campo extra que se llame por ejemplo columnas, entoces por ejemplo para el cuadro 1 que es solo ese cuadro, le pondría valor 1 en el campo colimnas, entoces mostras una tabla html con solo una celda

En la segunda linea en donde están el cuadro 2 y 3 , el calor del campo columnas deberá ser 2, se mostrará una tabla html con 3 celdas
y asi con cada linae

se entiende?
__________________
la la la

Última edición por truman_truman; 25/06/2011 a las 18:53
  #6 (permalink)  
Antiguo 25/06/2011, 20:39
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Sintaxis para mostrar resultados algo asi:

Hola,

Posiblemente podrías extraer el campo 'orden' y asignárselo como el índice de la celda de la tabla en la cual debe coincidir.

Código PHP:
<?php
$conn 
mysql_connect('127.0.0.1''root''PASSWORD');
mysql_select_db('juegos');

$ssql 'select nombre, orden from juegos order by orden';
$rsql mysql_query($ssql$conn);
$ares = Array();

while (
$val mysql_fetch_assoc($rsql)) {
    
$ares[$val['orden']] = $val['nombre'];
}

mysql_free_result($rsql);
mysql_close($conn);
?>
Con este método puedes crear un arreglo con todos los valores de la tabla para poder usarlos por su índice. Es decir el valor de $ares[1] va a ser el valor del campo nombre del orden 1.

Para poder acceder a ese arreglo sin que te ocurran errores de posición, puedes crear una función adicional que verifique eso.

Código PHP:
<?php
function pop($i) {
    global 
$ares;
    return isset(
$ares[$i]) ? $ares[$i] : '&nbsp';
}
?>
Y de esta forma puedes crear el HTML según lo que vayas necesitando.

Código PHP:
Ver original
  1. <table width="100%" border="0">
  2.   <tr>
  3.     <td>&nbsp;</td>
  4.     <td>&nbsp;</td>
  5.     <td>&nbsp;</td>
  6.     <td colspan="2"><?php echo pop(1); ?></td>
  7.     <td>&nbsp;</td>
  8.     <td>&nbsp;</td>
  9.     <td>&nbsp;</td>
  10.   </tr>
  11.   <?php if(count($ares) > 1) { ?>
  12.   <tr>
  13.     <td>&nbsp;</td>
  14.     <td>&nbsp;</td>
  15.     <td colspan="2"><?php echo pop(2); ?></td>
  16.     <td colspan="2"><?php echo pop(3); ?></td>
  17.     <td>&nbsp;</td>
  18.     <td>&nbsp;</td>
  19.   </tr>
  20.   <?php } ?>
  21. </table>

Un problema sería la inexistencia de una posición, sino existe el índice 2 porque se eliminó de la base de datos por algún motivo, la casilla aparecería vacía. Si quisieras que el programa re-ordenara los datos para que siempre se mantenga el orden original pero juntando las casillas vacías podrías cambiar esto:

Código PHP:
while ($val mysql_fetch_assoc($rsql)) {
    
$ares[] = $val['nombre'];

Donde se eliminó el índice.

Ahora el problema de no poder generar más fácilmente el HTML es la estructura del mismo, las casillas no coinciden, así que posiblemente lo quieras hacer con tablas o con divs, pero eso dependerá de la vista y como la quieras arreglar.

Por si quedó oculto en la complejidad del código, normalmente las secuencias se trabajan de forma cíclica, para no tener que hacer del 1 al 1000 usas ciclos, como por ejemplo:

Código PHP:
Ver original
  1. $i = 1;
  2.   while(count($ares) > $i) { ?>
  3.   <tr>
  4.     <td>&nbsp;</td>
  5.     <td>&nbsp;</td>
  6.     <td colspan="2"><?php echo pop($i++); ?></td>
  7.     <td colspan="2"><?php echo pop($i++); ?></td>
  8.     <td>&nbsp;</td>
  9.     <td>&nbsp;</td>
  10.   </tr>
Saludos,

ps:

Los índices seguramente no coinciden, es solamente un ejemplo para que te des una idea de como realizar el programa y calcular los mismos.

Última edición por HackmanC; 25/06/2011 a las 21:08 Razón: ps & edit
  #7 (permalink)  
Antiguo 26/06/2011, 01:23
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Sintaxis para mostrar resultados algo asi:

Creo ke no me estoy explicando bien XD, sobre lo ke me comentas truman_truman, es nada mas un ejemplo el ke puse, es cierto ke nada mas puse 23 cuadritos y son 30 registros, es solo un decir, el arreglo de tablas no tiene ningun patron, eso lo si, y es el chiste, posible se modifike en un futuro, les pregunto esto porke no kiero hacer un monton de tablas y en cada <td> poner un query por ejemplo:

Código PHP:
Ver original
  1. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  2.   <tr>
  3.     <td><?php $sql = "SELECT * FROM contenidos WHERE orden ='1'" ....?></td>
  4.     <td><?php $sql = "SELECT * FROM contenidos WHERE orden ='2'" ....?></td>
  5.     <td><?php $sql = "SELECT * FROM contenidos WHERE orden ='3'" ....?></td>
  6.     <td><?php $sql = "SELECT * FROM contenidos WHERE orden ='4'" ....?></td>
  7.   </tr>
  8. </table>
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #8 (permalink)  
Antiguo 26/06/2011, 11:00
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Sintaxis para mostrar resultados algo asi:

Para entenderlo mejor, por favor decime de que se trata la web? que serían los cuadros negros?
__________________
la la la
  #9 (permalink)  
Antiguo 26/06/2011, 11:52
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Sintaxis para mostrar resultados algo asi:

Son noticias, cada cuadrito negro es un "contenedor" de una noticia, asi se desplegaran las noticias en ese orden en una pagina :) y el chiste es poder elegir que noticia aparece en que cuadrito de acuerdo al campo "orden" en la tabla de noticias :)
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #10 (permalink)  
Antiguo 27/06/2011, 23:57
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Sintaxis para mostrar resultados algo asi:

Por qué no compruebas el número de registros recorridos y de acuerdo a éste, muestre el contenido siguiente de la manera que quieras?
Algo así como:
Código PHP:
$n 1;
while(
$res mysql_fetch_assoc($query)) {
    if (
$n == 1) {
        
// Imprimes con un DIV al primer nivel
    
}elseif ($n == || $n == 3) {
        
// Imprimes con un DIV al segundo nivel
    
}elseif ($n || $n 8) {
       
//  Imprimes con un DIV al tercer nivel
    
}elseif //etc.. etc.. etc...
    
}
    
$n++;

Esa es la idea, ahora te toca implementarla de la manera correcta.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #11 (permalink)  
Antiguo 28/06/2011, 14:29
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Sintaxis para mostrar resultados algo asi:

Gracias Sourcegeek, vere como puedo implementarlo porque sigo un poquito perdida jijijji, mil gracias !!!!
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #12 (permalink)  
Antiguo 28/06/2011, 16:00
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Sintaxis para mostrar resultados algo asi:

Que bueno que te ayudé, suerte
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #13 (permalink)  
Antiguo 29/06/2011, 00:04
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Sintaxis para mostrar resultados algo asi:

Hola,

No comprendo completamente, era esto lo que querías lograr:



Creí que estaba claro, pero bueno, evidentemente no, algunas veces no hay forma de explicar las cosas cuando no se quiere poner atención,

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Indice</title>
  7. </head>
  8.  
  9. <body>
  10. <?php
  11. $conn = mysql_connect('127.0.0.1', 'root', 'PASSWORD');
  12. mysql_select_db('juegos');
  13.  
  14. $ssql = 'select nombre, orden from juegos order by orden desc';
  15. $rsql = mysql_query($ssql, $conn);
  16. $ares = Array();
  17.  
  18. while ($val = mysql_fetch_assoc($rsql)) {
  19.     $ares[] = $val['nombre'];
  20. }
  21.  
  22. mysql_close($conn);
  23.  
  24. function pop($i) {
  25.     global $ares;
  26.     return isset($ares[$i]) ? $ares[$i] : '&nbsp;';
  27. }
  28. $i = count($ares) - 1;
  29. $j = 2;
  30. ?>
  31. <table width="50%" border="1">
  32.   <tr>
  33.     <td align="center">&nbsp;</td>
  34.     <td align="center">&nbsp;</td>
  35.     <td colspan="4" align="center"><?php echo pop($i--); ?></td>
  36.     <td align="center">&nbsp;</td>
  37.     <td align="center">&nbsp;</td>
  38.   </tr>
  39.   <?php while ($i >= 0 && $j-- >= 0) { ?>
  40.   <tr>
  41.     <td align="center">&nbsp;</td>
  42.     <td colspan="3" align="center"><?php echo pop($i--); ?></td>
  43.     <td colspan="3" align="center"><?php echo pop($i--); ?></td>
  44.     <td align="center">&nbsp;</td>
  45.   </tr>
  46.   <?php if ($i >= 0) { ?>
  47.   <tr>
  48.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  49.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  50.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  51.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  52.   </tr>
  53.   <?php } ?>
  54.   <?php } ?>
  55.   <?php while ($i >= 0) { ?>
  56.   <tr>
  57.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  58.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  59.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  60.     <td colspan="2" align="center"><?php echo pop($i--); ?></td>
  61.   </tr>
  62.   <?php } ?>
  63. </table>
  64. </body>
  65. </html>

Es la única forma que puedes lograr esa estructura de forma fácil, prueba con 1, 2 o 1000 datos, ¿ahora ... existe alguna forma de hacerlo más simple? Simplemente no hay otra forma de lograr exactamente la estructura que mostraste y hacerlo más fácil, realmente pensé que estaba claro.

Saludos.
  #14 (permalink)  
Antiguo 29/06/2011, 02:55
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Sintaxis para mostrar resultados algo asi:

Exactamenta HackmanC !!!!

Algo como lo que indicas es exactamente lo que queria lograr, estudiare el codigo que indicas para entenderle mejor, y ver que es lo que necesito adecuar para lograr lo que quiero hacer.

Mil mil gracias !!!!!
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #15 (permalink)  
Antiguo 29/06/2011, 20:20
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Sintaxis para mostrar resultados algo asi:

Hola,

Cita:
Iniciado por JessicaTJ Ver Mensaje
... Algo como lo que indicas es exactamente lo que queria lograr, estudiare el codigo que indicas para entenderle mejor, y ver que es lo que necesito adecuar para lograr lo que quiero hacer.
Que bueno que te ayudé, suerte

Independientemente de estudiarlo, solamente tienes que leer las instrucciones que escribí en mi primer mensaje de respuesta en este hilo. Yo no dije simplemente 'súmale a las variables y haz ciclos para comprobar cuantos van', yo expliqué claramente el método que podías usar, lógicamente todavía tienes que arreglar muchas cosas para que funcione exactamente según los requerimientos que tengas en esa aplicación, solamente había que poner atención.

No tiré el código simplemente, lo expliqué claramente, pero en vista que no muchos lo entendieron, evidenciado por que simplemente ya tenías la respuesta y continuaron con el hilo, así como la valoración negativa de mi mensaje anterior y no en el primero, donde está exactamente lo mismo pero explicado detalladamente. Tuve que demostrar que era exactamente lo que necesitabas, posiblemente porque no dije simplemente 'compruebale con if's', si era demasiado compleja mi respuesta inicial entonces ya es otro el problema.

Saludos,

Última edición por HackmanC; 29/06/2011 a las 20:51 Razón: edit

Etiquetas: resultados, sintaxis
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 20:28.