Foros del Web » Programando para Internet » PHP »

sacar consulta aleatoria php y mysql

Estas en el tema de sacar consulta aleatoria php y mysql en el foro de PHP en Foros del Web. hola a todos, estoy haciendo un codigo en el q se genera un numero aleatorio entre un rango dado, este numero puede coincidir o no ...
  #1 (permalink)  
Antiguo 22/11/2011, 04:38
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
sacar consulta aleatoria php y mysql

hola a todos, estoy haciendo un codigo en el q se genera un numero aleatorio entre un rango dado,

este numero puede coincidir o no con un id numerico de una base de datos, la idea es q si coincide, devuelva esa consulta, sino , le sumara 1 al id y volvera a comprobarlo en la base de datos, y asi hasta q coincida con un id de la base de datos, el codigo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. include("conectarse.php");
  3. $link = conectarse();
  4.  
  5.  
  6. $id = $_POST['variable'];
  7. //echo($id);
  8. //exit;
  9. $acierto = true;
  10.  
  11. if(!empty($id)){
  12.     while($acierto){
  13.         $sql = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  14.         $res = mysql_query($sql,$link);
  15.         if(mysql_num_rows($res) == 0){
  16.             $id++;
  17.             $acierto = false;
  18.         }
  19.         else{
  20.             $noticia = mysql_fetch_array($res);
  21.             echo($noticia['titulo']);
  22.             $acierto = true;
  23.         }
  24.     }
  25. }
  26. <?



el problema es q entra en el bucle else xq encuentra una consulta pero no hace el echo($noticia['titulo']);

alguien sabe a q se debe esto?
  #2 (permalink)  
Antiguo 22/11/2011, 05:20
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: sacar consulta aleatoria php y mysql

Probalo asi y avisame ;)

Código PHP:
Ver original
  1. <?php
  2. include("conectarse.php");
  3. $link = conectarse();*
  4.  
  5. $id = $_POST['variable'];
  6. //echo($id);
  7. //exit;
  8. $acierto = true;
  9.  
  10. if(!empty($id)){
  11.     while($acierto){
  12.         $sql = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  13.         $res = mysql_query($sql,$link);
  14.         if(mysql_num_rows($res) == 0){
  15.             $id++;
  16.             $acierto = false;
  17.         }
  18.         else{
  19.             $noticia = mysql_fetch_array($res);
  20.             echo($noticia[0]['titulo']);
  21.             $acierto = true;
  22.         }
  23.     }
  24. }
  25. ?>

Lo que cambie fue que el mysql_fetch_array() te devuelve un array bidimensional por lo general, y como el resultado que devolves siempre va a ser 1 solo, le agregue la posicion 0 de la primera dimension. No lo probe pero fijate, cualquier cosa avisame

Saludos
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 22/11/2011, 05:30
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: sacar consulta aleatoria php y mysql

No "dupliques" los post, please! :)


De todas formas, existe algo que tienes "mal" en tu bucle.

Si la noticia existe, SEGUIRÁ haciendo el bucle, con el mismo ID eternamente (bucle infinito).
Si no existe, sumará 1 al id, y saldrá del bucle.

Creo q no es el comportamiento que buscas ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #4 (permalink)  
Antiguo 22/11/2011, 05:43
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

ahora lo modifike asi xq entraba en el buvle infinito y devuelve la consulta pero lo suma 1 al id en caso de q no exista,

Código PHP:
Ver original
  1. <?php
  2. include("conectarse.php");
  3. $link = conectarse();
  4.  
  5.  
  6. $id = $_POST['variable'];
  7. //echo($id);
  8. //exit;
  9. $acierto = true;
  10. $datos = array();
  11. $noEncuentra = false;
  12.  
  13. if(!empty($id)){
  14.     while($acierto){
  15.         while(!$noEncuentra)
  16.             //echo("hola buvle while");
  17.             //exit;
  18.        
  19.             $sql = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  20.             $res = mysql_query($sql,$link);
  21.             if(mysql_num_rows($res) == 0){
  22.                 echo("no hay consulta");
  23.                 exit;
  24.                 $id++;
  25.                 $noEncuentra = false;
  26.             }
  27.             else{
  28.                 //echo($id);
  29.                 //exit;
  30.            
  31.                 $sql1 = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  32.                 $r1 = mysql_query($sql1,$link);
  33.                 $noticiaArr = mysql_fetch_array($r1);
  34.                 $noticia = $noticiaArr[0];
  35.                 echo($noticia);
  36.                 $acierto = false;
  37.             }
  38.     }
  39. }
  40.  
  41. ?>
  #5 (permalink)  
Antiguo 22/11/2011, 05:51
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: sacar consulta aleatoria php y mysql

Código PHP:
<?php
include("conectarse.php");
$link conectarse();
 
 
$id $_POST['variable'];
//echo($id);
//exit;
//$acierto = true;
$datos = array();
$noEncuentra true;
 
if(!empty(
$id)){
    
//while($acierto){ //Tienes un while de más. Lo puedes manejar todo con uno
        
while($noEncuentra)
            
//echo("hola buvle while");
            //exit;
        
            
$sql "SELECT titulo FROM noticias WHERE id ='".$id."'";
            
$res mysql_query($sql,$link);
            if(
mysql_num_rows($res) == 0){
                echo(
"no hay consulta");
                
//exit;
                
$id++;
                
//$noEncuentra= false; //No hace falta, se mantiene el true original
            
}
            else{
                
//echo($id);
                //exit;
            
                //$sql1 = "SELECT titulo FROM noticias WHERE id ='".$id."'";
                //$r1 = mysql_query($sql1,$link); //Pq volver a hacer la consulta? ;)
                
$noticiaArr mysql_fetch_array($res);
                
$noticia $noticiaArr[0];
                echo(
$noticia);
                
$noEncuentra false//Para salir del bucle!
            
}
    
//}
}
 
?>
Prueba así xD
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 22/11/2011, 06:04
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

probe tus modificaciones y despues de tardar 30800 milisegundos me da el siguiente error:

500 internal server error, no se como puede darse este error si aparentemente esta bien, por si vale de algo te pongo aki el codigo de donde hago el post:

Código Javascript:
Ver original
  1. <script language="javascript">
  2.  
  3.                         function recargar(){   
  4.                             var rango_superior = <?php echo($mayor); ?>;  
  5.                             var rango_inferior = <?php echo($menor); ?>;  
  6.                             var variable_post= Math.floor(Math.random()*(rango_superior-(rango_inferior-1))) + rango_inferior;
  7.                             alert(variable_post);
  8.                            
  9.                             $.post("recuperarNoticias.php", { variable: variable_post }, function(data){
  10.                             $("#carganoticiasIzq").html(data);
  11.                             });
  12.                         }
  13.                     </script>
  #7 (permalink)  
Antiguo 22/11/2011, 06:27
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: sacar consulta aleatoria php y mysql

Extraño.

¿Q id te ha dicho q ha mandado? ¿Existe? ¿No existe?

Si pruebas a poner un $id = 5; (suponiendo que tengas una noticia con ese id!) antes del if(!empty($id)), para ver q pasa cuando es un id válido?
__________________
>> Eleazan's Source
>> @Eleazan
  #8 (permalink)  
Antiguo 22/11/2011, 06:41
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

los id son validos, xq los estoy viendo con firebug y si q pasa el id correcto, osea q en teoria tendria q sacar la cnsulta de la base de datos con el id pero se keda digamos q "cargando" y cuando tal pone 500 internal server error y siempre tarda entre 3000 segundos y 30900
  #9 (permalink)  
Antiguo 22/11/2011, 06:43
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

probe x si acaso a ponerle yo el $id = 5 para ver q hacia y nada, se keda cargando y cuando tal vuelve a dar el error
  #10 (permalink)  
Antiguo 22/11/2011, 06:45
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: sacar consulta aleatoria php y mysql

¿Llega a hacer la consulta?

prueba a poner esto:

Código PHP:
$sql "SELECT titulo FROM noticias WHERE id ='".$id."'";
            
$res mysql_query($sql,$link);
            die(
mysql_num_rows($res)); 
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 22/11/2011, 09:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

ya puse eso y sigue sin hacer nada, osea da el mismo error, y la consulta esta bien echa xq la probe en mysql.
  #12 (permalink)  
Antiguo 22/11/2011, 09:34
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

encontre el fallo, es una tonteria enooorme q se nos escapo, tu codigo funciona a la perfeccion, pero le falta una cosa, o x lo menos a mi me fallaba x eso, en el bucle while falta abrir una llave, le puse la llave y la cerre al final y ahora funciona perfecto,

muchas gracias x la ayuda y el tiempo q gastaste en mi codigo

saludos
  #13 (permalink)  
Antiguo 22/11/2011, 17:59
 
Fecha de Ingreso: noviembre-2011
Ubicación: Morelia, Mich, México
Mensajes: 95
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: sacar consulta aleatoria php y mysql

MMM no se si lo unico que buscas es obtener noticias aleatorias, si es asi, podrias hacerlo de esta manera:

Código SQL:
Ver original
  1. SELECT * FROM noticias ORDER BY RAND() LIMIT 1

o el numero de resultados que quieras obtener en vez del 1

saludos
__________________
Que de Cosas - Tienda En linea México

La Batalla Por tu cuerpo - Dietas|Rutinas|Entrenamientos|Salud
  #14 (permalink)  
Antiguo 23/11/2011, 03:31
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: sacar consulta aleatoria php y mysql

ya, pero asi saca todas las consultas de una vez ordenadas aleatoriamente, y yo keria q sacase aleatoriamente una consulta de cada vez para q las muestre de forma automatica en un div q se autorefresca cada X tiempo, pero ya me funciona, aun asi gracias x tu interes

Etiquetas: aleatoria, mysql, sql, variables
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 07:44.