Foros del Web » Programación para mayores de 30 ;) » Programación General »

Una manita con esto...

Estas en el tema de Una manita con esto... en el foro de Programación General en Foros del Web. Este código hace que aparezcan, mediante SSI, un par de banners con distintas ID. Cada vez que la página carga, muestra diferentes banners al azar ...
  #1 (permalink)  
Antiguo 03/01/2003, 19:39
itatpc
Invitado
 
Mensajes: n/a
Puntos:
Una manita con esto...

Este código hace que aparezcan, mediante SSI, un par de banners con distintas ID. Cada vez que la página carga, muestra diferentes banners al azar (de entre 10). El problema es que a veces muestra un banner, a veces dos, y a veces ninguno. ¿Alguien sabe cómo hacer que siempre aparezcan 2?

Código:
require "admin/data/settings.pl" or &dienice(19);

open (MEMDATSSI,"$data_path/members.db") or &dienice(15);
if ($use_flock) { flock(MEMDATSSI, 1) or &dienice(100); }
@datassi = <MEMDATSSI>;
close (MEMDATSSI);

$numban = (int(rand($ssi_ban_num))) + 1;
if ($numban == $ssi_ban_num) {$numban2 = 1}
else {$numban2 = $numban + 1}

foreach $line(@datassi) {
	@bze = split(/\|/,$line);
	if ($bze[1]) {
		if ($bze[1] == $numban) {
			$html .= "<a href=\"$cgi_url/out.cgi?ID=$bze[1]\"
target=\"_blank\"><img src=\"$bze[5]\" width=$banner_width
height=$banner_height border=0></a>\n";
		}
		if ($bze[1] == $numban2) {
			$html .= "<a href=\"$cgi_url/out.cgi?ID=$bze[1]\"
target=\"_blank\"><img src=\"$bze[5]\" width=$banner_width
height=$banner_height border=0></a> \n";
		}
	}
}
print "Content-type: text/html\n\n";
print "$html";
exit;
¡Mil gracias!

Última edición por itatpc; 03/01/2003 a las 19:43
  #2 (permalink)  
Antiguo 04/01/2003, 14:11
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 22 años
Puntos: 0
Re: Una manita con esto...

Código:
require "admin/data/settings.pl" or &dienice(19);

open (MEMDATSSI,"$data_path/members.db") or &dienice(15);
if ($use_flock) { flock(MEMDATSSI, 1) or &dienice(100); }
@datassi = <MEMDATSSI>;
close (MEMDATSSI);


$numban2 = $numban = rand [1..$ssi_ban_num];
while (($numban2 == $numban) && ($ssi_ban_num > 1)) { $numban2 = rand [1..$ssi_ban_num] }

foreach $line(@datassi) {
	@bze = split(/\|/,$line);
	if ($bze[1]) {
		if ($bze[1] == $numban) {
			$html .= "<a href=\"$cgi_url/out.cgi?ID=$bze[1]\"
target=\"_blank\"><img src=\"$bze[5]\" width=$banner_width
height=$banner_height border=0></a>\n";
		}
                if ($ssi_ban_num > 1) {
        
                     if ($bze[1] == $numban2) {
			$html .= "<a href=\"$cgi_url/out.cgi?ID=$bze[1]\"
target=\"_blank\"><img src=\"$bze[5]\" width=$banner_width
height=$banner_height border=0></a> \n";
		  }
               }
	}
}
print "Content-type: text/html\n\n";
print "$html";
exit;

Última edición por SpiceMan; 04/01/2003 a las 14:16
  #3 (permalink)  
Antiguo 04/01/2003, 14:14
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 22 años
Puntos: 0
las condiciones $ssi_ban_num > 1 las puse por si se llega a dar el caso de que en los datos almacenados haya 1 solo banner.
  #4 (permalink)  
Antiguo 05/01/2003, 08:07
itatpc
Invitado
 
Mensajes: n/a
Puntos:
¡MUCHAS GRACIAS!

Gracias SpiceMan por las respuestas. Pero no funciona. Ahora no se ve ni un sólo banner...


De todas formas, te lo agradeco como si funcionara. ¡Gracias!
  #5 (permalink)  
Antiguo 06/01/2003, 09:47
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 22 años
Puntos: 0
de donde obtenes $ssi_ban_num ?
  #6 (permalink)  
Antiguo 06/01/2003, 17:10
itatpc
Invitado
 
Mensajes: n/a
Puntos:
Buf...

A ver, de settings.pl obtiene el número de banners de entre los que se tiene que escojer (por ejemplo, tengo 100 banners, pero sólo quiero que muestre banners al azar de los 10 primeros), y también obtiene las rutas hacia el resto de archivos.

Uno de ellos en banners.db que tiene la siguiente estructura:

2|1|end
9|2|end
1|3|end

1, 2, 3 son las ID de cada miembro, los otros número, ni idea. Luego, de members.db otiene la URL del banner y la ID, $bze[1] y $bze[5]. La estructura de este archivo es un miembro por línea, así:

56|1|titulo|http://www.url.com|descripción|http://www.urldelbanner.com|y sigue...

No sé si esto te sirve de algo o no, y no sé si es mucho pedir ya, en cualquier caso, gracias por tu tiempo.

  #7 (permalink)  
Antiguo 09/01/2003, 10:31
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 22 años
Puntos: 0
Código:
@array = ('uno','dos','tres','cuatro','cinco','seis','siete','ocho','nueve','diez');

$bla2 = $bla = int rand @array;
while (($bla2 == $bla) && $#array > 1) { $bla2 = int rand @array }

print "\$bla: $bla - \$array[$bla]: $array[$bla]\n";
print "\$bla2: $bla2 - \$array[$bla2]: $array[$bla2]\n";
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 23:08.