Foros del Web » Programando para Internet » PHP »

Duda rotacion banners

Estas en el tema de Duda rotacion banners en el foro de PHP en Foros del Web. Hola, he leído el post de rotacion de banners con sus links, y el problema que yo tengo es que no quiero especificar uno a ...
  #1 (permalink)  
Antiguo 10/09/2004, 09:09
 
Fecha de Ingreso: febrero-2004
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Duda rotacion banners

Hola, he leído el post de rotacion de banners con sus links, y el problema que yo tengo es que no quiero especificar uno a uno todos los elementos del array, sino, crear una consulta con una condición determinada, y que los resultados obtenidos formen el array que quiero utilizar para rotar los banners aleatoriamente.¿Como creo el array? Ayuda por favor

Última edición por marymary; 10/09/2004 a las 09:11
  #2 (permalink)  
Antiguo 10/09/2004, 09:29
 
Fecha de Ingreso: marzo-2003
Ubicación: Son Galego ¡¡¡¡Galiza ceibe!!!
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
rotar con sql

Hi
Si utilizas una base de datos las librerias de php (sea cual sea la DB, simpre que este soportada por php) te devueleven lo que tu un array si tu lo quieres.
Pero quiza a lo que te refieres es a esto:

Código PHP:
function sqlArray($seach)
{
     
$sql "SELECT archivo FROM baners WHERE id='" $seach &"'";
     
$con mysql_connect($host$user$pass) or die ("No se puede conectar");
     
$result mysql_query($sql$con) or die ("no se puede ejecutar consulta");
     while(
$row mysql_fetch_row($result))
     {
           
array_push($matriz$row[0]);
     }

     
mysql_close($con);

     return 
$matriz;

Esta función devuelve una matriz con todos los resultados,si tu db no es mySql, solo tienes que cambiar las funciones de las librerias mysql por las correspondientes a tu db.
Suerte
__________________
:risa:
RAPI91
:)
  #3 (permalink)  
Antiguo 10/09/2004, 10:11
 
Fecha de Ingreso: febrero-2004
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Hola, he probado el código que me pones pero me da error:

Warning: array_push(): First argument should be an array
  #4 (permalink)  
Antiguo 10/09/2004, 10:45
 
Fecha de Ingreso: marzo-2003
Ubicación: Son Galego ¡¡¡¡Galiza ceibe!!!
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
Pos a lo bruto.

Hola
No me havia dado cuenta de que no creara la matriz antes.
Asi que para no complicarse la vida lo haremos a lo bruto sin esa función.

Código PHP:
function sqlArray($seach

     
$sql "SELECT archivo FROM baners WHERE id='" $seach &"'"
     
$con mysql_connect($host$user$pass) or die ("No se puede conectar"); 
     
$result mysql_query($sql$con) or die ("no se puede ejecutar consulta"); 
     while(
$row mysql_fetch_row($result)) 
     { 
           
$matriz[] = $row[0];
     } 

     
mysql_close($con); 

     return 
$matriz

Al no especificar el indice en la matriz php lo inserta al final.
Asi deveria funcionarte.
__________________
:risa:
RAPI91
:)
  #5 (permalink)  
Antiguo 13/09/2004, 11:42
 
Fecha de Ingreso: febrero-2004
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Hola, he intentado adaptar el código que me das a lo que necesito, y no me llega a funcionar. El código que tengo es el siguiente...


<html>
<head>
<title>banner</title>
</head>
<body>
<center>

<?
$sql = "SELECT * FROM clientes, servicios WHERE servicios.id_servicio=2";
$con = mysql_connect($host, $user, $pass) or die ("No se puede conectar");
$result = mysql_query($sql, $con) or die ("no se puede ejecutar consulta");


while($row = mysql_fetch_array($result))
{
$matriz[] = $row['id_cliente'];
}

srand((float) microtime() * 10000000);
$cliente = array_rand($matriz, 1);

$sqldo = mysql_query("SELECT * FROM clientes, servicios WHERE servicios.id_servicio=2
AND clientes.id_cliente='$cliente'");
$con = mysql_connect($host, $user, $pass) or die ("No se puede conectar");
$result = mysql_query($sqldo, $con) or die ("no se puede ejecutar consulta");


while($ban = mysql_fetch_assoc($sqldo)) {


echo "<img src='banners/".$ban['id_cliente'].'.'.'gif'."' border=0>";
}

mysql_close($con);


?>
</center>
</body>
</html>
  #6 (permalink)  
Antiguo 13/09/2004, 12:25
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
De acuerdo Rand()

Saludos.

Por qué no intentas utilizando tu mismo query??

Código PHP:
$sql "SELECT * FROM clientes, servicios WHERE servicios.id_servicio=2 ORDER BY RAND()"
Por otro lado, si estas capturando datos de 2 tablas, te recomiendo usar una sintaxis parecida a esto:

Código PHP:
$sql "SELECT a.*, b.* FROM clientes a, servicios b WHERE b.id_servicio=2 ORDER BY RAND()"
Así es más fácil hacer referencia a los campos de cada tabla.

Por ejemplo, imagina que cada cliente tiene servicios asociados, entonces:

Código PHP:
$sql "SELECT a.*, b.* FROM clientes a, servicios b WHERE b.id_servicio=2 AND a.id_servicio = b.id_servicio ORDER BY RAND()"
OJO es sólo una sugerencia.

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 13/09/2004 a las 12:31
  #7 (permalink)  
Antiguo 13/09/2004, 14:05
 
Fecha de Ingreso: marzo-2003
Ubicación: Son Galego ¡¡¡¡Galiza ceibe!!!
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
Que es lo que no te funciona?
No te recoje introduce los datos en la matriz o no te muestra la imagen.
por cierto en este trozo tienes un error:
Código PHP:
$sqldo mysql_query("SELECT * FROM clientes, servicios WHERE servicios.id_servicio=2
AND clientes.id_cliente='$cliente'"
);
$con mysql_connect($host$user$pass) or die ("No se puede conectar"); 
$result mysql_query($sqldo$con) or die ("no se puede ejecutar consulta"); 


while(
$ban mysql_fetch_assoc($sqldo)) {


echo 
"<img src='banners/".$ban['id_cliente'].'.'.'gif'."' border=0>";

intentas ejecutas dos veces mysql_query, cuando ya obtuviste un recordset, realmente no entiendo eso.
Intentaste imprimir en pantalla algo para ver como ivan las cosas, yo suelo colocar algun print que otro en medio para ir comprovando valores una vez terminado el modulo los comentas o eliminas.
PD:
Deverias usar funciones, el codigo es mas facil de mantener y me legible.
__________________
:risa:
RAPI91
:)

Última edición por Rapi91; 13/09/2004 a las 14:07
  #8 (permalink)  
Antiguo 13/09/2004, 22:06
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Lo que tienes que hacer es generar el array... el resto lo dejas igual que como estaba...
En tu caso generas el array desde una consulta a la BD.
Acá te pongo un ejemplo de lo que tienes que hacer
Código PHP:
//Primero, guardamos en un array bidimensional el nombre de archivo de la imagen y el link hacia donde debe enviarnos al hacerle click.
$i 0;
while(
$row mysql_fetch_array($result)){ 
   
$banners[$i]['imagen'] = $row['campo_imagen'];
   
$banners[$i]['url'] = $row['campo_url'];
   
$banners[$i]['alt'] = $row['campo_alt']; 
   
$i++;
}
//Si tenemos una versión de PHP menor a la 4.2.0, tenemos que inicializar el generador de números aleatorios. 
srand((float) microtime() * 10000000);//si es 4.2.0 o mayor, no hace falta esta lína. 

//Utilizamos la función array_rand() para elegir un índice aleatorio 
$id_banner array_rand($banners); 

$banner_imagen=$banners[$id_banner]['imagen']; 
$banner_url=$banners[$id_banner]['url']; 
$banner_alt=$banners[$id_banner]['alt'];


//Y para utilizarlo:
echo "<a href=\"$banner_url\"><img src=\"$banner_imagen\" alt=\"$banner_alt\"></a>"
Saludos
  #9 (permalink)  
Antiguo 13/09/2004, 22:10
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Eso como ejemplo... para que no resulte en un consumo de recursos tan grande como generar el arry en cada recarga traido de la BD del que sólo utilizarás un elemento, puedes generarlo una sóla vez y guardarlo en una variable de sesión... o utilizar la función RAND() de mysql directamente (mejor).

Saludos
  #10 (permalink)  
Antiguo 15/09/2004, 09:32
 
Fecha de Ingreso: febrero-2004
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Hola, así y me funciona:

<html>
<head>
<title>banner</title>
</head>
<body>
<center>

<?
$sql = "SELECT * FROM clientes, servicios WHERE servicios.id_servicio=2 ORDER BY RAND()";
$con = mysql_connect($host, $user, $pass) or die ("No se puede conectar");
$result = mysql_query($sql, $con) or die ("no se puede ejecutar consulta");
$num_results=mysql_num_rows($result);
$ban=mysql_fetch_array($result);
echo "<img src='banners/".$ban['id_cliente'].'.'.'gif'."' border=0>";
mysql_close($con);
?>
</center>
</body>
</html>

Muchas gracias a todos...
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 04:35.