Foros del Web » Programando para Internet » PHP »

Retroceder en un codigo??? :S

Estas en el tema de Retroceder en un codigo??? :S en el foro de PHP en Foros del Web. hola :D, pues he estado haciendo un script en php para rotar banners aleatoriamente, y lo ke se me ha ocurrido es esto: Código PHP: ...
  #1 (permalink)  
Antiguo 29/09/2003, 20:02
 
Fecha de Ingreso: septiembre-2003
Ubicación: Pirexia
Mensajes: 150
Antigüedad: 20 años, 6 meses
Puntos: 1
Mensaje Retroceder en un codigo??? :S

hola :D, pues he estado haciendo un script en php para rotar banners aleatoriamente, y lo ke se me ha ocurrido es esto:

Código PHP:
<?

$conexion 
mysql_conect("localhost","username","password");
mysql_select_db("nombre_db",$conexion);

$sql "select * from banners";
$resp mysql_query($sql);

// Contamos la cantidad de filas encontradas:
$total mysql_num_rows($resp);

// Elijo un numero al azar:
$rand rand(1,$total);

// Selecciono de la base de datos todos los datos cuya id sea el numero al azar:
$resp2 mysql_query("select * from banners where id = '$rand'");

// Si existen los resultados, prosigo:
if (mysql_num_rows($resp2) !== 0) {

$datos mysql_fetch_array($resp2);

echo 
"<a href=$datos[url] target=_blank><img src=$datos[img] alt=$datos[alt]></a>";
}
// HE AKI EL PROBLEMA: si no existen los resultados, que hago???!
else { ??????????????? }
bueno, como lo dice el codigo, ese es el problema, si el numero random ke salio haciendo el rand(1,$total); no concuerda con ninguna id existente en la tabla, ya sea porke la borre o algo asi, que hago para ke retroceda el codigo y vuelva a elegir otro numero??

Gracias ;)
__________________
In a world without walls, who needs Windows?
  #2 (permalink)  
Antiguo 29/09/2003, 20:22
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 10 meses
Puntos: 2
una pregunta... y pq si haces el query y preguntas cuantas filas hay.... se va a equivocar....

osea, si hay 6 filas... y el hace el rad de 1,6 , no creo que pueda da error nunca... digo yo?

igual no entendi la pregunta...


yo loque haria seria esto


Código PHP:

<?php

    
if (mysql_num_rows($resp2) !== 0) {

        
$datos mysql_fetch_array($resp2);

            echo 
"<a href=$datos[url] target=_blank><img src=$datos[img] alt=$datos[alt]></a>";

    }

        echo 
"<META HTTP-EQUIV=Refresh CONTENT=3;URL=home.php>ERROR, NO SE ENCONTRO NINGUNO"//recargamos la web otra vez

    
exit;//temino el script


?>
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 29/09/2003 a las 20:28
  #3 (permalink)  
Antiguo 29/09/2003, 22:47
 
Fecha de Ingreso: septiembre-2003
Ubicación: Pirexia
Mensajes: 150
Antigüedad: 20 años, 6 meses
Puntos: 1
ok, lo ke pasa es ke imaginate esto:

tu agregas tu primer banner a la tabla, y este tiene la id = 1, luego agregas otro: id = 2, luego otro: id = 3, luego, se t ocurrio borrar el segundo que agregaste porke no t esta dando visitas, entonces ahora tienes DOS filas cuyas ids son 1 y 3, al hacer el random lo haria asi: rand(1,2) porke hay dos filas, es decir, nunca caeria el numero 3, y si cae el 2 daria error, porke el id numero 2 ya no existe, fijate en esta parte

Código PHP:
// Elijo un numero al azar:
$rand rand(1,$total);

// Selecciono de la base de datos todos los datos cuya id sea el numero al azar:
$resp2 mysql_query("select * from banners where id = '$rand'"); 
por otra parte, no puedo hacer ese tipo de error ke tu dices, porke acuerdate ke como es un rotador de banners, lo mas logico es ke vaya en un include en la pagina principal... y seria molesto tener ke recargar toooooooooda la pagina principal otra vez solo porke no t recargo el banner :S

de igual forma gracias por la ayuda, espero ke alguien me pueda ayudar con esta tortura :P
__________________
In a world without walls, who needs Windows?
  #4 (permalink)  
Antiguo 30/09/2003, 01:07
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 4 meses
Puntos: 5
Lo mas sencillo seria hacer un RAND en la consulta y no mediante PHP, pasate por el foro de BASES DE DATOS y revisa los post que hay, encontraras muchas cosas interesantes, seria algo asi:

Código:
SELECT id FROM tabla RAND id LIMIT 0,1
Algo asi ....

De todas maneras es muy recomendable, antes de pasarse por el foro visitar otros foros, otros post, hacer uso del buscador :D y sobre todo visitar las paginas de php.net y de mysql.com (casi todas las dudas estan resueltas ahi :))
__________________
Usuario registrado de Linux #288725
  #5 (permalink)  
Antiguo 30/09/2003, 03:40
 
Fecha de Ingreso: septiembre-2003
Ubicación: Madrid
Mensajes: 7
Antigüedad: 20 años, 5 meses
Puntos: 0
o la recursiva

Tambien siempre te quedara la funcion recursiva, no he comprobado el codigo pero seria algo asin:

<?

$conexion = mysql_conect("localhost","username","password");
mysql_select_db("nombre_db",$conexion);

$sql = "select * from banners";
$resp = mysql_query($sql);

// Contamos la cantidad de filas encontradas:
$total = mysql_num_rows($resp);

recursiva();

function recursiva(){
// Elijo un numero al azar:
$rand = rand(1,$total);

// Selecciono de la base de datos todos los datos cuya id sea el numero al azar:
$resp2 = mysql_query("select * from banners where id = '$rand'");

// Si existen los resultados, prosigo:
if (mysql_num_rows($resp2) != 0) {

$datos = mysql_fetch_array($resp2);

echo "<a href=$datos[url] target=_blank><img src=$datos[img] alt=$datos[alt]></a>";
}
// HE AKI EL PROBLEMA: si no existen los resultados, que hago???!
else { recursiva()}

}
  #6 (permalink)  
Antiguo 30/09/2003, 17:17
 
Fecha de Ingreso: septiembre-2003
Ubicación: Pirexia
Mensajes: 150
Antigüedad: 20 años, 6 meses
Puntos: 1
ok, muchas gracias a los dos :D...

pd: www.php.net/recursiva ???
__________________
In a world without walls, who needs Windows?
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 13:31.