Foros del Web » Programando para Internet » PHP »

problemas con Rand()

Estas en el tema de problemas con Rand() en el foro de PHP en Foros del Web. miren tengo una estructura en la que guardo todos los usuarios que han votado en mi encuesta y ahora quiero sortear una cantidad de premios ...
  #1 (permalink)  
Antiguo 09/02/2004, 12:04
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
problemas con Rand()

miren tengo una estructura en la que guardo todos los usuarios que han votado en mi encuesta y ahora quiero sortear una cantidad de premios ($catidad) esto con los usuarios que han votado en la encuesta "5" por mencionar alguna($id_encuesta), este es mi codigo pero al ejecutar no me muestra datos:

$ganadores = mysql_query("SELECT * FROM encuestados where encuesta ='$id_encuesta' Order By Rand() Limit '$cantidad' ") or die(mysql_error());
while($row = mysql_fetch_array($ganadores))
{
echo "muestra datos";
}

gracias
  #2 (permalink)  
Antiguo 09/02/2004, 12:12
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Código PHP:
$consulta "SELECT * FROM encuestados WHERE encuesta ='";
$consulta.= $id_encuesta"' ORDER BY RAND() LIMIT ";
$consulta.= $cantidad;
$ganadores mysql_query($consuta) or die(mysql_error()); 
 while(
$row mysql_fetch_array($ganadores))
      {  
         echo 
"muestra datos";
      } 
Revisa ahora si...

Última edición por lado2mx; 09/02/2004 a las 12:14
  #3 (permalink)  
Antiguo 10/02/2004, 08:20
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
ahora me lanza un error: Query was empty
  #4 (permalink)  
Antiguo 10/02/2004, 08:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Cita:
Mensaje Original por giotari
ahora me lanza un error: Query was empty
Por lo menos podrias leer el codigo que copipasteas.

Pon
Código PHP:
error_reporting(E_ALL); 
al comienzo del script.

Saludos.

PD: Tambien ayuda poner la consulta en el die() junto con el mysql_error().
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 10/02/2004, 09:10
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
disculpa pero no se mucho....como y donde pongo error_reporting(E_ALL);
  #6 (permalink)  
Antiguo 10/02/2004, 09:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Es una linea de codigo PHP. Ponla la primera, al comienzo del script. No soluciona el error, pero te dice cual es el error.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 10/02/2004, 10:36
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
al comienzo asi: ?


error_reporting(E_ALL);

$consulta = "SELECT * FROM encuestados WHERE encuesta ='";
$consulta.= $id_encuesta. "' ORDER BY RAND() LIMIT ";
$consulta.= $cantidad;
$ganadores = mysql_query($consuta) or die(mysql_error());
while($row = mysql_fetch_array($ganadores))
{
echo "muestra datos";
}
  #8 (permalink)  
Antiguo 10/02/2004, 10:44
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Si. ¿Que mensajes te da? Creo que esta claro.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 10/02/2004, 12:28
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
errores

estos son los mensajes. (variable no definida ???)

Notice: Undefined variable: id_encuesta in /webfolders/vinadelmarchile.cl/admin/finalizar-encuesta.php on line 105

Notice: Undefined variable: consuta in /webfolders/vinadelmarchile.cl/admin/finalizar-encuesta.php on line 107
Query was empty
  #10 (permalink)  
Antiguo 10/02/2004, 12:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Exacto. Variables no definidas. Y por definida es que en ningun sitio les has asignado un valor. La $id_encuesta no se porque da ese fallo (¿viene de un parametro de la URL y tienes register_globals a OFF?), pero la otra, consuta si. Fijate bien en el nombre de todas las variables.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 10/02/2004, 13:21
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
el problema era una variable que habia escrito mal...

pero ahora me lanza este error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /webfolders/vinadelmarchile.cl/admin/finalizar-encuesta.php on line 118

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /webfolders/vinadelmarchile.cl/admin/finalizar-encuesta.php on line 122

EN FIN...lo que yo deseo hacer es sacar de una estrutura una cantidad x de ganadores que hallan votado en una encuesta x, mi codigo es el siguiente:

<?php
if($hacer=="finalizar")
{//INICIO DE SORTEAR GANADORES
$sortear = $_POST["sortear"];
$cantidad = $_POST["cantidad"];
$encuesta = $_POST["encuesta"];

error_reporting(E_ALL);
$consulta = "SELECT * FROM encuestados WHERE encuesta ='";
$consulta.= $encuesta. "' ORDER BY RAND() LIMIT ";
$consulta.= $cantidad;
$ganadores = mysql_query($consulta) or die(mysql_error());

while($row = mysql_fetch_array($ganadores))
{

$ganador = $row["usuario"];

$datos=mysql_query("SELECT codigo,nombres,apellidos,mail,telefonos FROM usuarios WHERE codigo= $ganador ") or die(mysql_error());
if (mysql_num_rows($datos)>0)
{//SI ENCONTRO USUARIO

while($datos = mysql_fetch_array($datos))
{//inicia muestra datos de usuario
echo $ganador . " " . $datos["nombres"] . " " . $datos["apellidos"] . " " . $datos["mail"] . "<br>";
}//fin inicia muestra datos de usuario
mysql_free_result($datos); //LIBERA DE MEMORIA LA VARIABLE
}else{//si no encontro codigo del ganador en tabla usuarios

echo $ganador . " Error";

}//fin busca datos del ganador en tabla de usuairos
}
mysql_free_result($ganadores); //LIBERA DE MEMORIA LA VARIABLE
}//FIN DE SORTEAR GANADORES
?>
  #12 (permalink)  
Antiguo 10/02/2004, 13:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bien, fijate en esta linea:
Código PHP:
 while($datos mysql_fetch_array($datos)) 
¿Que es $datos, el id del recordset o el array con el registro? Ambas cosas no puede ser. Sobre todo porque con esa linea $datos es el array con el registro.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 10/02/2004, 14:53
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
muchas gracias, ahora si me resulto...te pasaste! ...

...solo tengo una ultima duda...al hacer el sorteo no importa cuantos ganadores ...pero siempre se me repite un registro...

osea me explico...el primer registro de la tabla siempre gana...o sale como un ganador.?
  #14 (permalink)  
Antiguo 10/02/2004, 15:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
El problema de la aletoriedad en informatica es que normalmente no es muy aleatoria . Por lo qu ehe obserbado, siempre el primer registro tiene muchas posibilidades de ser elegido.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #15 (permalink)  
Antiguo 10/02/2004, 15:20
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 20 años, 11 meses
Puntos: 0
ha! ok...muchas gracias!!!
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 21:13.