Foros del Web » Creando para Internet » CSS »

Columnas con Div y MYSQL

Estas en el tema de Columnas con Div y MYSQL en el foro de CSS en Foros del Web. Buenas, desde el foro MYSQL me han remitido aquí, así que sin más dilación: Quiero hacer una web con dos columnas y poner el resultado ...
  #1 (permalink)  
Antiguo 05/10/2011, 11:11
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Columnas con Div y MYSQL

Buenas, desde el foro MYSQL me han remitido aquí, así que sin más dilación:

Quiero hacer una web con dos columnas y poner el resultado de la base de datos repartidos en esas dos columnas y que queden lo más iguales de altura posible.

Mi idea *muy ineficiente* ha sido:

Hacer un Select de todos los resultados que me interesaría poner en las columnas
Tratar el primer resultado después de haber hecho mysql_fetch_array
Hace otro mysql_fetch_array para perder el dato impar *muy ineficiente*
Seguir hasta que mysql_fetch_array devuelve false
Repetir los cuatro pasos anteriores para la segunda columna, pero haciendo un mysql_fetch_array nada más empezar


Yo creo que tiene que haber algo muchísimo más eficiente que esto, pero ¿valdría la pena guardar los resultados en un array? (Serían unos 50 por columna).
En caso afirmativo, ¿cómo se haría?
¿Le surge otra idea?

Muchas gracias, cualquier ayuda es muy bien recibida y agradecida.

PD: ¡Tiene que ser usando DIV, nada de table!
  #2 (permalink)  
Antiguo 05/10/2011, 12:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Columnas con Div y MYSQL

La altura de los divs la puedes controlar mediante css, en cuanto a la distribución de los datos, creo que necesitas aclarar mejor cuál es tu criterio para distribuir los datos.

Lo más eficiente siempre es tratar de hacer una consulta que te traiga únicamente los datos que realmente vas a ocupar, para no saltar filas, pero necesitas aclarar el punto de lo que quieres.

En cuanto a colocar los datos en divs, puedes ir concatenando resultados en dos variables y al final poner dichas variables en su div correspondiente, algo más o menos así:

Código PHP:
Ver original
  1. while($c=mysql_fetch_array($consulta)){
  2.      if($c["dato"]==$micriterio)
  3.           $div1.="datos: $c[dato1], $c[dato2] etc....";
  4.      else
  5.           $div2.="datos: $c[dato1], $c[dato2] etc....";
  6. }
  7.  
  8. echo "<div style=\"width:50%;height:300px;\">$div1</div><div style=\"width:50%;height:300px;\">$div2</div>";
  #3 (permalink)  
Antiguo 05/10/2011, 13:11
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

Gracias por su rápida respuesta, me explico mejor:

Mi idea es hacer dos columnas (¡puede no ser la mejor idea, acepto sugerencias!) para hacer algo similar a esto (donde el flujo de líneas implica el orden en que deberían aparecer los resultados de la base de datos):



Claro, por eso, mientras voy rellenando la primera columna, hay la mitad de datos que no debo tratar aún; e igualmente cuando trato la segunda columna.

¿Qué solución sería la más óptima para este problema? ¿Almacenar los datos como sugiere en el div (¡no se me había ocurrido de forma tan elegante!) o de otra manera?

¡Muchas gracias!
  #4 (permalink)  
Antiguo 05/10/2011, 13:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

Eso lo puedes hacer con CSS/HTML de forma sencilla:
Código HTML:
Ver original
  1. <div id="container" style="width: 650px;">
  2.       <div class="item">Item 1</div>
  3.       <div class="item">Item 2</div>
  4.       <div class="item">Item 3</div>
  5.       <div class="item">Item 4</div>
  6.       <div class="item">Item 5</div>
  7. </div>

Código CSS:
Ver original
  1. .item {
  2.       width: 300px;
  3.       float: right;
  4. }

Saludos.
  #5 (permalink)  
Antiguo 05/10/2011, 13:25
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

Gracias, GatorV, pero el problema no es el diseño del CSS, sino el colocar el resultado del PHP de la forma más eficiente posible.

Gracias de todos modos.
  #6 (permalink)  
Antiguo 05/10/2011, 13:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

De esa forma lo puedes hacer, ya que lo que se haría es tener 2 <div> por cada columna, entonces al imprimir desde PHP, solamente lo imprimes en el div principal y ya con CSS haces el despliegue, por ejemplo:
Código PHP:
Ver original
  1. <?php
  2.  
  3. echo '<div id="datos">';
  4. while ($row = fetchRow($result)) {
  5.          echo '<div class="item"'>.$row['algo'].'</div>';
  6. }
  7. echo '</div>';

Más eficiente que eso no puedes hacerlo.
  #7 (permalink)  
Antiguo 05/10/2011, 13:31
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

Debo tener muy olvidados mis conocimientos de PHP.

No veo como puedo intercalar los resultados siguiendo la imagen que he publicado en el comentario #3.

¿Podría explicármelo mejor?

Muchas gracias.
  #8 (permalink)  
Antiguo 05/10/2011, 13:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

Tal cual te lo puse en el post anterior, con PHP imprimes la estructura de divs necesario, y con CSS controlas que se vean en dos columnas.

Saludos.
  #9 (permalink)  
Antiguo 05/10/2011, 13:43
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

EDITO: He hecho la prueba en un HTML básico y efectivamente funciona. Muchas gracias. ¡Sigo abierto a comentarios!

Sigo sin entenderlo :P .

Creo que sugieres abusar un poco de la propiedad float y que vaya de izquierda a derecha y cuando llegue "al tope" del div principal, baje un nivel y continúe; así hasta que queden datos por tratar, ¿no?

Eso complica un poco el diseño (añadiendo un poco más de HTML) y además veo un poco más complicado, que no imposible, crear el borde de separación del dibujo.

¿Lo he entendido bien?
  #10 (permalink)  
Antiguo 05/10/2011, 14:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

Puedes agregar la propiedad border a tus items, o agregar una imagen de fondo a tu div.
  #11 (permalink)  
Antiguo 05/10/2011, 15:04
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

Sí, pero el problema es que sólo los de la izquierda deberían tener border-right, o los de la derecha border-left.

De todos modos estoy haciendo pruebas cambiando mi diseño viejo por éste y funciona a la primera, muchas gracias.

Creo que al final lo mejor va a ser que haga un pequeño 'unrolling' de 2, para separar los dos ítems.
  #12 (permalink)  
Antiguo 05/10/2011, 15:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

Como te digo puedes usar una imagen de fondo para el div.

Saludos.
  #13 (permalink)  
Antiguo 05/10/2011, 15:22
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

Creo que he tenido un problema al abusar de la propiedad float:



Los de la derecha son con float:right, y los de la izquierda con float:left. También he probado usando un solo tipo de contenedor con float:left y el problema es el mismo en diferentes lugares.

¿Ideas? ¡Gracias!
  #14 (permalink)  
Antiguo 05/10/2011, 16:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

No debes de usar diferentes floats, con que dejes todos en float left, los elementos se van a ir acomodando.

El problema que ves es por eso mismo, y al final de tus divs debes de tener uno con la propiedad clear: both.

En el foro de CSS te pueden dar más información respecto a como obtener el resultado que esperas.

Saludos.
  #15 (permalink)  
Antiguo 05/10/2011, 16:04
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

No quiero que queden como una table, quiero que cada columna vaya creciendo según sus noticias; por tanto no me sirve hacer un clear:both cada vez.

Gracias de todos modos.
  #16 (permalink)  
Antiguo 05/10/2011, 16:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

No es cada vez, es al final de que imprimas todos tus elementos.
  #17 (permalink)  
Antiguo 05/10/2011, 16:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Columnas con Div y MYSQL

Es por lo mismo, ya te comenté no debes de usar clases separadas (con float left/right) porque haces que pase, eso, en el caso que indicas, tu noticia tiene un alto especificado (ej 100px), como el siguiente elemento tiene un float: left, eso hace que se mueva a la izquierda del elemento antes de lo que deberia de bajar.

Todos los elementos tienen que tener la propiedad float: left, para que se vayan acomodando.

Te muevo al foro de CSS donde te podrán orientar mejor.
  #18 (permalink)  
Antiguo 05/10/2011, 16:26
Avatar de Kanashin  
Fecha de Ingreso: enero-2011
Mensajes: 45
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Columnas con Div y MYSQL

No se preocupe, tampoco quiero ser pesado y no veo que los tiros vayan por ahí; seguiré con el método antiguo (aunque más ineficiente) o intentaré el método de guardarlo todo en un div.

Muchas gracias por su tiempo, de verdad.

PD: ¿Puede editar mi mensaje anterior y borrar el enlace? No quiero hacer spam. ¡Si no es mucha molestia!

Etiquetas: columnas, mysql
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 07:44.