Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Añadir un <div> dentro de un while

Estas en el tema de Añadir un <div> dentro de un while en el foro de PHP en Foros del Web. Buenas tardes, os dejo el siguiente código con el que estoy trabajando. Código PHP: <div id="consejos"> <?php $sql = "SELECT * FROM consejos ORDER BY RAND() LIMIT 6" ; $resultado = mysql_query ( $sql ); ...
  #1 (permalink)  
Antiguo 17/06/2014, 06:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 9 años, 5 meses
Puntos: 0
Añadir un <div> dentro de un while

Buenas tardes, os dejo el siguiente código con el que estoy trabajando.

Código PHP:
<div id="consejos">

<?php $sql="SELECT * FROM consejos ORDER BY RAND() LIMIT 6";
$resultado=mysql_query($sql);
while(
$fila=mysql_fetch_array($resultado)){;?>
<div class="cuadros">
<h3><?php echo $fila["nombreconsejo"]; ?></h3>
<ul>
<li>Direcci&oacute;n: <?php echo $fila["direccion"]; ?> </li>
<li>Telefono: <?php echo $fila["tfno"]; ?> </li>
<li>Web: <?php echo $fila["web"]; ?> </li>
<li>Email: <?php echo $fila["email"]; ?> </li>
<li><a href="ficha.php?fid=<?php echo $fila['id']?>">Ver ficha</a></li>
</ul>
</div>
<?php };?>
<div class="vacio"></div>
la class="cuadros" tiene flotar izquierda y un width del 50%. El class=vacío tiene clear:both. El while me genera seis fichas y me gustaría que cada dos de esas fichas se incluyese un div con ese class "vacío". Alguno me podría ayudar?
  #2 (permalink)  
Antiguo 17/06/2014, 06:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 12 años, 2 meses
Puntos: 574
Respuesta: Añadir un <div> dentro de un while

Usa un contador y la función módulo %

$contador=0;
inicio bucle
if($contador % 2 ==0 && $contador>0) Inserto vació
inserto la div
$contador++;
fin bucle

Módulo de 2 es cero en los pares.

Fijate que antes de insertar la tercera div va a insertar un "vacío" y asi cada dos divs.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 17/06/2014, 12:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Añadir un <div> dentro de un while

No consigo que me salga. ¿De esta manera sería correcto?
Código PHP:
<?php $sql="SELECT * FROM consejos ORDER BY RAND() LIMIT 6";
$resultado=mysql_query($sql);
$contador=0;
while(
$fila=mysql_fetch_array($resultado)){;?>
<div class="cuadros">
<h3><?php echo $fila["nombreconsejo"]; ?></h3>
<ul>
<li>Direcci&oacute;n: <?php echo $fila["direccion"]; ?> </li>
<li>Telefono: <?php echo $fila["tfno"]; ?> </li>
<li>Web: <?php echo $fila["web"]; ?> </li>
<li>Email: <?php echo $fila["email"]; ?> </li>
<li><a href="ficha.php?fid=<?php echo $fila['id']?>">Ver ficha</a></li>
</ul>
</div><?php if($contador ==&& $contador>0) {;
 echo 
"<div class='vacio'></div>";
$contador++;
 };};
?>
  #4 (permalink)  
Antiguo 17/06/2014, 12:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 12 años, 1 mes
Puntos: 2534
Respuesta: Añadir un <div> dentro de un while

Esto se puede resolver perfectamente usando CSS, no entiendo el punto de "resolverlo" con código PHP, es decir, si la cuestión es visual le corresponde a CSS y nada más.

Porque además es una completa tontería tener que añadir un <div> que haga de "clear:both" ensuciando el markup sin sentido.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 17/06/2014, 16:29
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.025
Antigüedad: 16 años
Puntos: 832
Respuesta: Añadir un <div> dentro de un while

A mí me salió esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $array = array('uno', 'dos',  'tres',  'cuatro',  'cinco' , 'seis' , 'siete');
  4. $var = null;
  5.  
  6. foreach($array as $k => $arr) {
  7.  
  8.     if( $k % 2 == 0 and $k < count($array) and $k > 0) {
  9.         $var .= "<div class='vacio'></div>\n";
  10.     }
  11.  
  12. $var .= "<p>$arr</p>\n";
  13. }
  14.  
  15. $var .= "<div class='vacio'></div>\n";
  16.  
  17. print_r( $var );
  18.  
  19. ?>

El resultado:

Código HTML:
Ver original
  1. <p>uno</p>
  2. <p>dos</p>
  3. <div class='vacio'></div>
  4. <p>tres</p>
  5. <p>cuatro</p>
  6. <div class='vacio'></div>
  7. <p>cinco</p>
  8. <p>seis</p>
  9. <div class='vacio'></div>
  10. <p>siete</p>
  11. <div class='vacio'></div>

Cita:
Iniciado por pateketrueke Ver Mensaje
Esto se puede resolver perfectamente usando CSS, no entiendo el punto de "resolverlo" con código PHP, es decir, si la cuestión es visual le corresponde a CSS y nada más.

Porque además es una completa tontería tener que añadir un <div> que haga de "clear:both" ensuciando el markup sin sentido.
Como yo lo entendí, lo que se desea es asignar 1 elemento por cada 2 iteraciones de un total de 6 (o más, o menos) resultantes del bucle. En este caso es necesario usar PHP.
  #6 (permalink)  
Antiguo 17/06/2014, 16:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 12 años, 1 mes
Puntos: 2534
Respuesta: Añadir un <div> dentro de un while

Cita:
Iniciado por metacortex Ver Mensaje
[...] Como yo lo entendí, lo que se desea es asignar 1 elemento por cada 2 iteraciones de un total de 6 (o más, o menos) resultantes del bucle. En este caso es necesario usar PHP.
Si el <div> a inyectar contiene únicamente "clear:both" entonces no es necesario imprimirlo, es decir, usando seudo-elementos :after o :before y selectores :nth-child de CSS3 puedes crear dicho div de manera virtual y darle las reglas de CSS requeridas.

Bueno, a mi no me parece necesario usar PHP para esto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/06/2014, 17:22
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.025
Antigüedad: 16 años
Puntos: 832
Respuesta: Añadir un <div> dentro de un while

Tienes razón. Basta con nth-child y nth-last-child (si el número de cuadros resulta ser impar).
  #8 (permalink)  
Antiguo 18/06/2014, 01:11
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Añadir un <div> dentro de un while

Buenos días,

No sabía que se podía arreglar mediante CSS3. Gracias por la respuesta, ahora probaré y os comentaré los resultados.

Gracias!
  #9 (permalink)  
Antiguo 18/06/2014, 01:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 12 años, 2 meses
Puntos: 574
Respuesta: Añadir un <div> dentro de un while

Has visto por que fallaba tu intento?

Código PHP:
Ver original
  1. <?php $sql="SELECT * FROM consejos ORDER BY RAND() LIMIT 6";
  2. $resultado=mysql_query($sql);
  3. $contador=0;
  4. while($fila=mysql_fetch_array($resultado)){;
  5. if($contador % 2 ==0 && $contador>0) echo "<div class='vacio'></div>";
  6. ?>
  7. <div class="cuadros">
  8. <h3><?php echo $fila["nombreconsejo"]; ?></h3>
  9. <ul>
  10. <li>Direcci&oacute;n: <?php echo $fila["direccion"]; ?> </li>
  11. <li>Telefono: <?php echo $fila["tfno"]; ?> </li>
  12. <li>Web: <?php echo $fila["web"]; ?> </li>
  13. <li>Email: <?php echo $fila["email"]; ?> </li>
  14. <li><a href="ficha.php?fid=<?php echo $fila['id']?>">Ver ficha</a></li>
  15. </ul>
  16. </div><?php
  17. // if($contador % 2 ==0 && $contador>0) {; <-- sobra el punto y coma
  18. /// echo "<div class='vacio'></div>";// Insertas despues de que bucle haya insertado el div.
  19. $contador++; //<-- incrementas dentro del condicional
  20. // };<-- sobra el punto y coma
  21. }
  22. //;<-- sobra el punto y coma
  23. ?>

A pesar de ello si es mejor una solución CSS.

@pateketrueke podrias postear un ejemplo dinamico.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 18/06/2014, 01:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Añadir un <div> dentro de un while

Muchas gracias a todos. Al final, lo he logrado mediante CSS3.

Un saludo!
  #11 (permalink)  
Antiguo 13/10/2014, 10:51
 
Fecha de Ingreso: agosto-2010
Mensajes: 42
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Añadir un <div> dentro de un while

Alguien que me pueda explicar como se hace esto con CSS? llevo un rato intentandolo pero no me sale :(

Etiquetas: select, sql
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 18:00.