Foros del Web » Programando para Internet » PHP »

PHP OO Como seleccionar datos multiplo de 3 en una sentencia

Estas en el tema de Como seleccionar datos multiplo de 3 en una sentencia en el foro de PHP en Foros del Web. Hola, tengo una base de datos que muestra productos, estos productos son mostrados de 3 en 3, ose acada 3 productos mostrados se aumenta el ...
  #1 (permalink)  
Antiguo 03/03/2012, 01:09
Avatar de jim3481  
Fecha de Ingreso: agosto-2004
Ubicación: EEUU
Mensajes: 198
Antigüedad: 19 años, 8 meses
Puntos: 0
Exclamación Como seleccionar datos multiplo de 3 en una sentencia

Hola, tengo una base de datos que muestra productos, estos productos son mostrados de 3 en 3, ose acada 3 productos mostrados se aumenta el <div style="clear:both"></div> para que baje el cuadro .. mi duda es como hago para cambiar el $style a un valor diferente del tercer producto, luego del sexto, del noveno ... (multiplo de 3)?


Código PHP:
$i 0;
 while (
$Qproducts->next()) {
     if((
$i == 0) && ($i != 0))
        
$this->_content .= '<div style="clear:both"></div>';
       
     
$osC_Product = new osC_Product($Qproducts->valueInt('products_id'));

$this->_content .= '<div class="whats_new_cont '.$style.' "></div>';
    
$i++;
          
        } 
No se si me hize entender, espero su ayuda o una idea ... Gracias
__________________
Así como es característica de los grandes pensadores decir mucho en pocas palabras, las mentes pequeñas se distinguen por valerse de muchas palabras para no decir nada. :arriba:

(Francois VI-Duque de la Rochefoulcauld)
  #2 (permalink)  
Antiguo 03/03/2012, 02:05
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Como seleccionar datos multiplo de 3 en una sentencia

No entiendo muy bien lo que quieres hacer ya que tendrías que nombrar las clases que vas a usar según el rango. Pero te voy a dar una buena opcion dado lo comprendido.

Digamos que se te genera un HTML de la siguiente forma. Por cierto yo usaría br en vez de un div para el clear.

Código HTML:
<div class="style">Producto 1</div>
<div class="style">Producto 2</div>
<div class="style">Producto 3</div>
<br class="clear">
<div class="style">Producto 4</div>
<div class="style">Producto 5</div>
<div class="style">Producto 6</div>
<br class="clear">
<div class="style">Producto 7</div>
<div class="style">Producto 8</div>
<div class="style">Producto 9</div>
<br class="clear"> 
Ya generado esto puedes usar CSS3 para arreglar la clase style según los multiplos desde su index con el selector :nth-child().

Código CSS:
Ver original
  1. /* Global, afecta a todos los div con la clase style */
  2. .style{
  3.     background-color:red;
  4. }
  5. /* Afecta a todos los div multiplos de 3 iniciando en 0 (1 en numeración real) */
  6. .style:nth-child(3n+0){
  7.     background-color:green;
  8. }
  9. /* Afecta a todos los div multiplos de 3 iniciando en 7 (6 en numeración real) */
  10. .style:nth-child(3n+7){
  11.     background-color:blue;
  12. }

Esto es muy poderoso pero lamentablemente es para navegadores modernos y no sirve en internet explorer. Sin embargo tenemos javascript para solucionar el problema y quitarnos ese dolor de cabeza. Claro usando jQuery y Selectivizr . Que solo al llamarlas a la página, activan pseudo-clases css3 en navegadores no soportados.

Descargas Selectivizr y la libreria que uses, la mas popular jQuery y las llamas en tu header.

Código HTML:
<script type="text/javascript" src="js/jquery.js"></script>
<!--[if (gte IE 6)&(lte IE 8)]>
  <script type="text/javascript" src="js/selectivizr.js"></script>  
<![endif]--> 
Con tan solo colocar esto el arreglo del CSS funcionará correctamente, no hay necesidad de crear funciones extras ni hacer nada engorroso con plugins o algo así.

Yo te aconsejo que trabajes esto de este metodo y no desde el servidor osea PHP. Es una buena practica dejar lo que es del DOM para que se trabaje allá mismo, osea lo de CSS con CSS y lo de javascript con javascript.

No tienes necesidad de crear varias clases porque por ejemplo podrias con PHP hacer un array con las clases ejemplo, style_1, style_2 ... style_10 y según el multiplo adicionarla con condicionales, incluso un switch serviria para eso. Pero esto si tu deseas cambiar a futuro te generaría problemas, en cambio con el CSS no necesitas hacer nada mas engorroso a futuro y preocuparte por los nombres del estilo.

Espero hayas comprendido esta parte, puedes probar todo esto y generar consultas si lo deseas. Incluso yo adicionaría el clear con CSS o jQuery también.

Saludos!
  #3 (permalink)  
Antiguo 03/03/2012, 02:55
Avatar de jim3481  
Fecha de Ingreso: agosto-2004
Ubicación: EEUU
Mensajes: 198
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Como seleccionar datos multiplo de 3 en una sentencia

Gracias rigobcastro por la ayuda pero aun no le doy solucion a mi problema, mira hize lo q me pediste y este fue el resultado para 6 productos:

Código HTML:
Ver original
  1. <div class="style">Producto 1</div> <--- background red
  2. <div class="style">Producto 2</div> <--- background red
  3. <div class="style">Producto 3</div> <--- background green
  4. <br class="clear">
  5. <div class="style">Producto 4</div> <--- background red
  6. <div class="style">Producto 5</div> <--- background green
  7. <div class="style">Producto 6</div> <--- background red
  8. <br class="clear">

y el resultado que yo deseo ya sea para 6 productos o mas:

Código HTML:
Ver original
  1. <div class="style">Producto 1</div> <--- background red
  2. <div class="style">Producto 2</div> <--- background red
  3. <div class="style">Producto 3</div> <--- background green
  4. <br class="clear">
  5. <div class="style">Producto 4</div> <--- background red
  6. <div class="style">Producto 5</div> <--- background red
  7. <div class="style">Producto 6</div> <--- background green
  8. <br class="clear">
  9. .
  10. .
  11. .
  12. <div class="style">Producto 13</div> <--- background red
  13. <div class="style">Producto 14</div> <--- background red
  14. <div class="style">Producto 15</div> <--- background green
  15. <br class="clear">

espero me puedas ayudar ya sea mediante php o css..

gracias
__________________
Así como es característica de los grandes pensadores decir mucho en pocas palabras, las mentes pequeñas se distinguen por valerse de muchas palabras para no decir nada. :arriba:

(Francois VI-Duque de la Rochefoulcauld)
  #4 (permalink)  
Antiguo 05/03/2012, 22:02
Avatar de jim3481  
Fecha de Ingreso: agosto-2004
Ubicación: EEUU
Mensajes: 198
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Como seleccionar datos multiplo de 3 en una sentencia

please anybody could u help me out here !...
__________________
Así como es característica de los grandes pensadores decir mucho en pocas palabras, las mentes pequeñas se distinguen por valerse de muchas palabras para no decir nada. :arriba:

(Francois VI-Duque de la Rochefoulcauld)
  #5 (permalink)  
Antiguo 05/03/2012, 22:28
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Como seleccionar datos multiplo de 3 en una sentencia

por que no pruebas mediante php + css
Código PHP:
Ver original
  1. $i = 0;
  2.  while ($Qproducts->next()) {
  3.      if(($i % 3 == 0) && ($i != 0))
  4.         $this->_content .= '<div style="clear:both"></div>';
  5.        
  6.      $osC_Product = new osC_Product($Qproducts->valueInt('products_id'));
  7.  
  8. $this->_content .= '<div class="whats_new_cont '.$style.' estilocolor'.($i % 3).'"></div>';
  9.     $i++;
  10.            
  11.         }

css
Código CSS:
Ver original
  1. .estilocolor0{
  2. background-color:red;
  3. }
  4. .estilocolor1{
  5. background-color:green;
  6. }
  7. .estilocolor2{
  8. background-color:blue;
  9. }
saludos

Etiquetas: Ninguno
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:37.