Foros del Web » Programando para Internet » PHP »

Tengo un bluce con do { } while, pero quiero interrumpirlo

Estas en el tema de Tengo un bluce con do { } while, pero quiero interrumpirlo en el foro de PHP en Foros del Web. Tengo un bluce con do { } while, pero quiero interrumpirlo despues de 3 resultados esto seria... que despues de mostrarme 3 resultados de la ...
  #1 (permalink)  
Antiguo 11/02/2009, 20:37
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Tengo un bluce con do { } while, pero quiero interrumpirlo

Tengo un bluce con do { } while, pero quiero interrumpirlo despues de 3 resultados esto seria... que despues de mostrarme 3 resultados de la consulta a la base de datos... quiero interrumpirlo para meter un banner y despues que continue la consulta......

ej.

Galeria01
Galeria02
Galeria03
Banner
Galeria04
Galeria05
Galeria...etc..

como podria lograr esto?? es posible?
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #2 (permalink)  
Antiguo 11/02/2009, 20:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Usa una variable numérica que se incremente en 1 en cada ciclo, y usando el operador aritmético % calculas en cada ciclo si el valor del número es múltiplo de 3, en este caso. Así, cada vez que el residuo hallado usando ese operador es 0, agregas el banner.

  #3 (permalink)  
Antiguo 11/02/2009, 23:06
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Capimaster:

Fuera del "loop" o bucle
declaras una variable

$x = 0;

dentro del
do {

if($x == "3") {
AQUI METES LA TAREA DEL BANNER...
}
$x++;

} while(........);

Saludos
Espero sirva
Franco
  #4 (permalink)  
Antiguo 11/02/2009, 23:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Franco, el codigo que expones solo mostrara el banner en la 4ta vuelta del bucle.
Como dice okram, tienes que usar el modulus (%) para saber si el numero es multiplo de 3 y luego imprimir el banner.
  #5 (permalink)  
Antiguo 11/02/2009, 23:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

o usar una mejor otro tipo lógica...

Código PHP:
$x 0;

do {

  if(++
$x === 3)  {
    
// reset
    
$x=0;
  }
// ...
} while(/* ... */); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 12/02/2009 a las 00:18
  #6 (permalink)  
Antiguo 12/02/2009, 00:01
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Lamentablemente ahorita no tengo mi pc para hacer las pruebas... Pero me suena muy interesante las propuestas para solucion... Y a decir verdad me suena logico lo de pateketrueke y franco aun que no logre entenderlo al 100%... Pero no se ve tan dificil...

A lo que si no entendi muy bien fue a ronruby y okram


Muchas gracias por su ayuda y su paciencia

...a ok ya comprendi mejor lo de en multiplos de 3 jeje.. No necesariamente vuelven a empezar los resultados esos siguen donde se quedaron solo la variable numerica es la que se resetea despues de 3 veces.. Cierto
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México

Última edición por Capimaster; 12/02/2009 a las 00:08 Razón: Ok ahora comprendo mas
  #7 (permalink)  
Antiguo 12/02/2009, 10:15
Avatar de SCY-FOX  
Fecha de Ingreso: septiembre-2007
Ubicación: Chile
Mensajes: 139
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

10 % en 5 = 2
0

lo que saca el modulus es el cero.
  #8 (permalink)  
Antiguo 12/02/2009, 10:27
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

@SCY-FOX, % devuelve el resto de dividir el primer número entre el segundo. En tu ejemplo, 10/2=5 y no queda resto, es una división exacta. Por eso el valor que obtienes es 0.

Esa es la idea. Sólo los múltiplos del 2do número tendrán un resto 0, por eso se usa para este tipo de acciones, en las que hay que realizar algo cada N resultados.

  #9 (permalink)  
Antiguo 12/02/2009, 11:35
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Muchisimas gracias hoy llegando a mi oficina... lo intente y lo logre a la primera...
un solo detalle..... tuve que basarme mucho en lo propuesto por franco..

Es que tambien se me paso comentar que necesitaba meter un banner diferente cada 3 registros... jeje..

les paso mi codigo.. para ke me califiquen el desarrollo....

Código PHP:
$x 0;
                  
                   do { 
                   
      if(
$x == "3") {
echo 
"  <div  align=\"center\"><img src=\"/Anuncios/cablemas650_09.jpg\" width=\"650\" height=\"127\" vspace=\"6\" /></div> ";
      }
      if(
$x == "6") {
   echo 
"  <div  align=\"center\"><img src=\"/Anuncios/canuncio2.jpg\" width=\"650\" height=\"127\" vspace=\"6\" /></div> ";
      }
$x++;

// ...

} while(/* ... */); 
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #10 (permalink)  
Antiguo 12/02/2009, 11:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

imagina tener que cambiar todo es manualmente, y si son mas de 20 banners??

es ineficiente así, debes implementar algo mas dinámico... de modo que se rote el banner, y no lo tengas que colocar manualmente (supongo)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 12/02/2009, 12:02
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Suena logico pateketrueke... y si tienes mucha razon pero debido a mis clientes locales tengo que mantenerles la posición sin rotarles ni alternarles y como no son mas de 4 banners no se me vuelve tan complicado...

Lo bueno es que si quisiera hacerlo mas dinamico como tu me dices.. tengo mas o menos la idea de como hacerlo.. pero creo que por el momento no es necesario...

De cualquier forma de agradezco la ayuda!
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #12 (permalink)  
Antiguo 12/02/2009, 18:17
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Tengo un bluce con do { } while, pero quiero interrumpirlo

Capimaster:

Yo soy muy de guardar codigos, porpue no se sabe cuando se pueden volver a utilizar bajo situaciones mas y mas complejas tanto como codigo como cantidades.

Aqui te va una sencilla pero interesante modificacion para que puedas meter
muchos banners en funcion de la duracion del loop o bucle.

Cita:
$banner = array(.... nombre de los banners....);
$y = 0;
$z = 3;
do {
if($x == "$z") {
echo " <div align=\"center\"><img src=\"/Anuncios/$banner[$y]\" width=\"650\" height=\"127\" vspace=\"6\" /></div> ";
$z = $z + 3;
$y++;
}
} while(/* ... */);
Estudialo bien y veras que a la tercera ronda, ejecuta el banner del array [0]
e incremente $z a 6 e incrementa $y a 1
a la sexta ronda ejecuta el if y mete el banner [1] e incremente el $z a 9
e incremente $y a 2; y asi sucesivamente.
Esto es lo que han llamada mas eficiente dinamico y extenso.

Saludos
Y suerte con tu proyecto
Franco
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 19:22.