Foros del Web » Programando para Internet » PHP »

random sin repeticion

Estas en el tema de random sin repeticion en el foro de PHP en Foros del Web. estoy aprendiendo en mi escuela php. entonces mi profesor me dejo hacer un programa en php con conexion a mysql. en mi base de datos ...
  #1 (permalink)  
Antiguo 22/07/2012, 18:14
 
Fecha de Ingreso: julio-2012
Ubicación: mexico
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 1
Exclamación random sin repeticion

estoy aprendiendo en mi escuela php.
entonces mi profesor me dejo hacer un programa en php con conexion a mysql.
en mi base de datos tengo idcarro int, tipocarro int, descripcion, precio.
el profesor dijo q una vez entrando a la pagina debe haber 4 carros en la pagina elegidos aleatoriamente mostrando solo en descripcion. usando el id y el tipo de auto.

mi problema es q no se usar una funcion random q no repita los mismos carros.

tambien necesito saber si mi consulta despues del random (si es q asi se use el random), porq segun yo seria asi
Código PHP:
$z rand(1,4);//suponiendo q z sea el id

$consulta "SELECT descripcion FROM carro WHERE $z = 3 and tipocarro = 2";//verifica que el carrotipo para imrpimir el precio
$resultado mysql_query($consulta) or die("La consulta falló: " .
mysql_error()); 

Última edición por iaterck; 22/07/2012 a las 18:31
  #2 (permalink)  
Antiguo 22/07/2012, 19:17
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: random sin repeticion

Si estas suponiendo que z es el id entonces la consulta esta mal.
Estas diciendo where $z = 3, y eso no tiene sentido, es como que obtengas como numero random el 2 y la consulta seria: where 2 = 3.
Se supone que tenes que poner algo como where idcarro = $z.
La función random te va a devolver un valor random, aleatorio, y por eso es que cabe la posibilidad de que te devuelva valores que ya ha devuelto antes, lo que tendrías que hacer es ir guardando en algún otro lado, ya sea en una base de datos o en un archivo de texto el valor que te esta retornando. Luego desde este script usas la función rand para obtener el random pero verificas que si $z es igual a lo que tenes guardado en el archivo de texto ( por ejemplo ), si es igual entonces volves a hacer random hasta que no sea igual, y si no es igual entonces haces el select.

Suerte
  #3 (permalink)  
Antiguo 22/07/2012, 19:42
 
Fecha de Ingreso: julio-2012
Ubicación: mexico
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 1
Información Respuesta: random sin repeticion

estube intentando guardar en un arreglo los valores y despues recorrer ese arreglo para ir haciendo las consultas. primero lo intente mandando a imrpir los valor a la pantalla para ver si no se repetian los numeros.. pero no me imprime nada, segun yo no hay error en el codigo pero no me imrpime nada cuando abro el php
Código PHP:
$num = Array();
 
reset($num);
 for(
$i=1;$i==4;$i++) 
 {
   
$num[$i]=rand(1,26);
    if(
$i>1
    {
       for(
$x=1$x<$i$x++)
       {
         if(
$num[$i]==$num[$x]) 
         { 
           
$i--; 
           break; 
         }
      }
   }
 }

 foreach(
$num as $valor
 {
   echo 
"$valor<BR>";
 } 

Última edición por iaterck; 22/07/2012 a las 19:48
  #4 (permalink)  
Antiguo 22/07/2012, 20:12
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: random sin repeticion

Cita:
Iniciado por iaterck Ver Mensaje
el profesor dijo q una vez entrando a la pagina debe haber 4 carros en la pagina
si lo que tenes que hacer es que por cada vez que entres a la página se muestren 4 carros aleatorios diferentes siempre el valor random tenes que guardarlo en en un lugar fisico, no en memoria. Porque cuando vos ejecutes rand una vez que entres a la página entonces ese valor aleatorio retornado se puede repetir porque justamente lo que hace rand es devolver un valor random, pero este se puede repetir, si queres que no se repita, guarda el ultimo numero random retornado en un txt por ejemplo, y luego lo que haces es leerlo, si el valor leído del txt es igual al que te acaba de retornar rand entonces seguís haciendo rand hasta que te de uno diferente... si el valor leído es diferente al que te devuelve random entonces usas el numero random que te revolvió rand
  #5 (permalink)  
Antiguo 22/07/2012, 20:24
 
Fecha de Ingreso: julio-2012
Ubicación: mexico
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: random sin repeticion

no se si estoy entendiendo bien pero si solo guardo el numero anteior se podrian repetir los q ya pasaron no? por ejemplo 1,2,3,4.. guardo el 4 y el siguiente numero 2 se compara con el 4 y como no es igual lo aceptaria
y aparte como hago archivos en php?
  #6 (permalink)  
Antiguo 22/07/2012, 20:33
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: random sin repeticion

Cita:
Iniciado por iaterck Ver Mensaje
por ejemplo 1,2,3,4.. guardo el 4 y el siguiente numero 2 se compara con el 4 y como no es igual lo aceptaria
claro, eso quiero decirte, http://www.php.net/manual/es/ref.filesystem.php
ahi esta todo sobre archivos y carpetas etc.

presisas al menos la funcion fopen, fgets, fwrite, fclose que estan ahí

el problema es que si no has dado archivos con tu profesor todavía, no se de que forma podrás obtener un numero random pero diferente siempre por cada vez que entres a tu pagina
  #7 (permalink)  
Antiguo 22/07/2012, 20:57
 
Fecha de Ingreso: julio-2012
Ubicación: mexico
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: random sin repeticion

entonces dices q no s epuede como el codigo q te puse porq lo guarda en memoria, pero si se ejecuta cuando vuelca a entrar se crea una variable de arreglo diferente para cada vez q entre y asi se comparar con todos los elegidos dentro del random... o no?
  #8 (permalink)  
Antiguo 22/07/2012, 21:20
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: random sin repeticion

No, porque el arreglo es una estructura de memoria, es como una variable, por lo tanto solo sirve para guardar un valor por cada vez que se ejecute tu pagina( por cada vez que entres a tu pagina ) , significa que nunca vas a poder guardar un valor en un array para luego volver a entrar en la misma pagina y poder fijarte si ese valor del arreglo es igual o no a $z en este caso, porque el arreglo cuando vuelvas a cargar la pagina va a perder ese valor, por eso te digo que tendrás que usar una base de datos o un archivo de texto.
  #9 (permalink)  
Antiguo 22/07/2012, 22:42
 
Fecha de Ingreso: julio-2012
Ubicación: mexico
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: random sin repeticion

ya lo resolvi... es algo super estupido largo y redundante pero cada q acualizo la pagina funciona... ya lo probe... lo pogo por si a alguien le sirve
Código PHP:
$z rand(1,10);
$j true;
$d rand(1,10);
while (
$j) {
    
            if(
$d != $z){
                 
$j false ;
                 echo 
'fin <br>';
               }   
                else{
                
$d rand(1,10);
                
                }
}

$j true;
$f rand(1,10);
while (
$j) {
    
            if(
$f != $z  && $f != $d){
                 
$j false 
                 echo 
'fin <br>';
               }   
                else{
                
$f rand(1,10);
                
                }
}


$j true;
$g rand(1,10);
while (
$j) {
    
            if(
$g!= $z  && $g != $d && $g != $f){/
                 
$j false 
                 echo 
'fin <br>';
               }   
                else{
                
$g rand(1,10);
                
                }

  #10 (permalink)  
Antiguo 22/07/2012, 22:50
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: random sin repeticion

Pero seguís en la misma,¿lo que querías hacer no era que si vos entras a la pagina y obtenes un valor random entonces ese valor random si volves a entrar NUNCA mas tiene que aparecer? le estas errando, mientras uses random, y no guardes en algún lugar el valor random devuelto que NO queres que se repita, siempre cabe la posibilidad de que se repita, se ve que por el momento no te ha aparecido, pero si va a aparecer alguna vez.

Etiquetas: mysql, random, repeticion
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 15:39.