Foros del Web » Programando para Internet » PHP »

Valor aleatorio

Estas en el tema de Valor aleatorio en el foro de PHP en Foros del Web. buenas tengo ste script q me deberia devolver 1 valor aleatorio de la BD pero no funciona ..alguien sabe que esta mal? thanks!! Código: <?php ...
  #1 (permalink)  
Antiguo 25/07/2006, 09:16
 
Fecha de Ingreso: marzo-2006
Mensajes: 210
Antigüedad: 18 años, 7 meses
Puntos: 0
Valor aleatorio

buenas tengo ste script q me deberia devolver 1 valor aleatorio de la BD pero no funciona ..alguien sabe que esta mal? thanks!!

Código:
<?php
   include_once('incluir_todo.php');
   conectar();
$sql = "SELECT titulo FROM pelis
          ORDER BY RAND()
          LIMIT 1";
$resultado=mysql_query($sql) or die (mysql_error());

if (! $resultado)
{
echo "La consulta tiene errores.";
exit();
}
while ($row = mysql_fetch_array($resultado))
{
echo "<P>".'<font face="Tahoma" size="1" color="#0000FF">'.$row["categoria"],"</P>";
}
?>
  #2 (permalink)  
Antiguo 25/07/2006, 09:42
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
"No funciona", que quiere decir eso? arroja errores o no entrega resultados aleatorios.
  #3 (permalink)  
Antiguo 25/07/2006, 09:48
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
(! $resultado) <-- eso que ?
estas tratando de evaluar el resultado de un quey ?????

que no tiene que ser asi ?

(!(mysql_num_rows($resultado)==0)) <-- tambien trata de ser lo mas explicito posible con el php
__________________
Saludos
FT.
www.fernando.com.mx
  #4 (permalink)  
Antiguo 25/07/2006, 09:51
 
Fecha de Ingreso: marzo-2006
Mensajes: 210
Antigüedad: 18 años, 7 meses
Puntos: 0
Cita:
Iniciado por claudiovega
"No funciona", que quiere decir eso? arroja errores o no entrega resultados aleatorios.
NO da errores ..simplemenet me devuelve 1 pagvacia ..en blanco ningun resultado :( y me debia dar un resultado :(
  #5 (permalink)  
Antiguo 25/07/2006, 09:54
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
ya intentaste imprimir texto normal ??
Código PHP:
<?php
   
include_once('incluir_todo.php');
   
conectar();
   echo 
"Esto es una prueba de texto";
?>
para saber si el incluido y conectar() no te estan chingado ..
__________________
Saludos
FT.
www.fernando.com.mx
  #6 (permalink)  
Antiguo 25/07/2006, 09:56
 
Fecha de Ingreso: marzo-2006
Mensajes: 210
Antigüedad: 18 años, 7 meses
Puntos: 0
Cita:
Iniciado por fer10
ya intentaste imprimir texto normal ??
Código PHP:
<?php
   
include_once('incluir_todo.php');
   
conectar();
   echo 
"Esto es una prueba de texto";
?>
para saber si los inlcudos no te estan chigando..
si y lo imprime bien!
  #7 (permalink)  
Antiguo 25/07/2006, 09:57
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
ya cambiaste lo que te puse arriba tambien eso estaba mal..

usa esto para ver cuanto resultados te manda la consulta..

mysql_num_rows($resultado)
__________________
Saludos
FT.
www.fernando.com.mx
  #8 (permalink)  
Antiguo 25/07/2006, 10:00
 
Fecha de Ingreso: marzo-2006
Mensajes: 210
Antigüedad: 18 años, 7 meses
Puntos: 0
es q esto sta bien puesto

$resultado=mysql_query($sql) or die (mysql_error());

if (!$resultado)
{
echo "La consulta tiene errores.";
  #9 (permalink)  
Antiguo 25/07/2006, 10:07
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
claro que no..

si ahy un error en sql no te va a regresar FALSE y si no lo ahy no te va a regrar true te va a mandar los resultados del query .. y tu pones la condicional a la braba necesitas pedirle el numero de filas de esa consulta con la fucnion


mysql_num_rows() ok ???

y si no me cres imprime $resultado depues del query para que veas que te da un recource id y no un true y flalse o un, 1 o 0 como tu piensas..
__________________
Saludos
FT.
www.fernando.com.mx
  #10 (permalink)  
Antiguo 25/07/2006, 10:08
 
Fecha de Ingreso: marzo-2006
Mensajes: 210
Antigüedad: 18 años, 7 meses
Puntos: 0
entonces segun tu como deberia quedar el codigo?
  #11 (permalink)  
Antiguo 25/07/2006, 10:11
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
jajaja te estoy tratando de ayudar.. y dodne te digo que lo veo mal te resusas.. a ser ayduado.. lee bien todo lo que he posteado.. ahy te dice..
__________________
Saludos
FT.
www.fernando.com.mx
  #12 (permalink)  
Antiguo 25/07/2006, 10:14
 
Fecha de Ingreso: marzo-2006
Mensajes: 210
Antigüedad: 18 años, 7 meses
Puntos: 0
cambio if (!$resultado) por sto if( mysql_num_rows($resultado)>0 ) ?
  #13 (permalink)  
Antiguo 25/07/2006, 10:16
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
no por que ahy tu le estas diciendo que si es true te suelte el error y te mande exit...


si en el query llegan 1 fila como lo acordaste en el query con limit 1
mysql_num_rows($resultado) sera = a 1
y (1>0) entocnes true .. y te va a mandar a

echo "La consulta tiene errores.";
exit();

y no deveria hacer eso..

por que no lo pones con (==0) como yo lo puse que diferencia hace no ahy pierde o te da 1 o 0
__________________
Saludos
FT.
www.fernando.com.mx
  #14 (permalink)  
Antiguo 25/07/2006, 10:24
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 4 meses
Puntos: 0
Cita:
Iniciado por fer10
claro que no..

si ahy un error en sql no te va a regresar FALSE y si no lo ahy no te va a regrar true te va a mandar los resultados del query .. y tu pones la condicional a la braba necesitas pedirle el numero de filas de esa consulta con la fucnion


mysql_num_rows() ok ???

y si no me cres imprime $resultado depues del query para que veas que te da un recource id y no un true y flalse o un, 1 o 0 como tu piensas..
Ejem... Si leyeramos la info del mysql_query te darías cuenta q según el manual si devolvería FALSE en caso de un error en la consulta. Lo cual significa q el if (!$resultado) es una manera correcta de evaluar si la sentencia falló o no. Aunque tu forma de hacerlo también es correcta.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #15 (permalink)  
Antiguo 25/07/2006, 10:28
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
jejej cierto .. jejej
si no te manda el error entocnes verifica con

mysql_num_rows()

que te llege una fila del sql a ver si el while esta mal o es el query
__________________
Saludos
FT.
www.fernando.com.mx
  #16 (permalink)  
Antiguo 25/07/2006, 10:32
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
es cierto, pero cheka la diferencia .. una cosa es error de sintaxis en el sql y te da false y otra cosa es una consulta sin resutlados..

<? $resultado=(false) or die("que?");
echo $resultado;?>

ahy se mete "que " la variable que a $resultado y supongmaos que te da un erorr el sql por mala sintaxis te va a decir no se el campo no existe.. tu cres que eso sera false ?
__________________
Saludos
FT.
www.fernando.com.mx
  #17 (permalink)  
Antiguo 25/07/2006, 10:34
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 4 meses
Puntos: 0
Si te fijas, el xaval en caso de !$resultado... echo "La consulta tiene errores..."

Los detalles son los detalles y a veces no nos fijamos bien en ellos. Sin ánimo de ofender por supuesto. Siempre con ánimo de aprender cosas nuevas todos juntos.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #18 (permalink)  
Antiguo 25/07/2006, 11:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Lo ideal es usar construcciones tipo:

Código PHP:
$resultado=@mysql_query($sql);
if (
$resultado){
   echo (
"Hay un error, Mysql dice: ".mysql_error();
} else {
   if (
mysql_num_result($resultado) > 0){
      while (
$row=mysql_fetch_array($sql)){
          
// obtienes los resultados ...
      
}
   } else {
      echo 
"No hay resultados";
   }

Así controlamos el mensaje de error (con @ ocultamos los que PHP nos dará) .. Si no hay error en la ejecución de la consulta .. se procede a "contar" el n° de resultados (esperamos >0 para "recorrerlos" con un _fetch_ función) .. si hay errores de Mysql .. los mostramos (con mysql_error())

o un simple:
Código PHP:
$resultado=mysql_query($sql) or die (mysql_error()); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #19 (permalink)  
Antiguo 25/07/2006, 11:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si estás limitando el resultado (con LIMIT 1) a un sólo registro .. el "_fetch_" bajo un bucle (while()) no corresponde.

Deberías usar simplemente (en este caso):

Código PHP:
$titulo=mysql_result($resultado,0,"titulo"); 
También fijate bien a que campos llamas en tu consulta SQL:

$sql = "SELECT titulo FROM pelis
ORDER BY RAND()
LIMIT 1";


y cuales pretendes acceder:

echo "<P>".'<font face="Tahoma" size="1" color="#0000FF">'.$row["categoria"],"</P>";
}

Si no incluyes en tu "SELECT" los nombres de los campos que quieres obtener, no puedes obtenerlos luego si haces un "mysql_fetch_array()" o cualquier otra función que acceda al resultado. PHP no mostrará mensaje de error al respecto (a no ser que tengas un nivel alto de "error_reporting()" ahí a lo mejor dice algo así como "indice no existe" referente al array generado por el "_fecht_array()").

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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:01.