Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Bucle hasta que de FALSE?

Estas en el tema de Bucle hasta que de FALSE? en el foro de PHP en Foros del Web. Tengo una problemita y no se como hacerlo. Tengo 2 Funciones $func1 = FuncionNumero1(); // Devuelve un conjunto de letras y numeros al alazar, ej: ...
  #1 (permalink)  
Antiguo 19/09/2015, 11:11
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Bucle hasta que de FALSE?

Tengo una problemita y no se como hacerlo.

Tengo 2 Funciones

$func1 = FuncionNumero1(); // Devuelve un conjunto de letras y numeros al alazar, ej: D9Js2


$func2 = FuncionNumero2($func1); // Comprueba en la base de datos si existe el "codigo" generado aleatoriamente. Si existe devuelve TRUE si no existe devuelve FALSE


Lo que quiero hacer es que si la func2 devuelve TRUE, que genere otro codigo y verifique otra vez si existe, vamos que haga un bucle hasta que cree un codigo UNICO.

Última edición por _vincen_; 19/09/2015 a las 11:28
  #2 (permalink)  
Antiguo 19/09/2015, 13:46
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: Bucle hasta que de FALSE?

Puedes usar un bucle do-while
Código PHP:
Ver original
  1. do {
  2.   $func1= FuncionNumero1();
  3.   $func2= FuncionNumero2($func1);
  4. } while(!$func2);
  5. echo "nuevo código: ".$func1;
  #3 (permalink)  
Antiguo 19/09/2015, 15:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Bucle hasta que de FALSE?

Podrías hacer esto:

Código PHP:
Ver original
  1. while (true){
  2.     if (!FuncionNumero2($codigo = FuncionNumero1())) break;
  3. }

Se ejecutará un bucle inicialmente sin fin, el cual se terminará cuando la "FuncionNumero2" devuelva false, quedando en ese momento la variable $codigo con el código que no se repite.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 19/09/2015, 16:21
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Bucle hasta que de FALSE?

Gracias! Voy a probar ambos y os cuento!

Edit: Perfecto, me servían las dos, me he quedado con una de las dos :P

Muchas gracias :D

Última edición por _vincen_; 19/09/2015 a las 16:37
  #5 (permalink)  
Antiguo 19/09/2015, 20:02
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Bucle hasta que de FALSE?

ok encontre este codigo aqui en el foro y funciona perfecto para lo que necesito, pero no encuentro como verificarlo en la base de datos y si existe que genere otro basandome en lo que colocan aqui, es decir no encuentro como adaptar las soluciones que aqui muestran a este codigo. Gracias:

Código PHP:
Ver original
  1. function genId() {
  2.   $format = 'xxxxx-xxxxx-xxxxx-xxxxx-xxx-y';
  3.  
  4.   return preg_replace_callback('/[xy]/', function($match) {
  5.     $pattern = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  6.  
  7.     if ($match[0] === 'x') {
  8.       return substr($pattern, mt_rand(0, strlen($pattern)), 1);
  9.     } else {
  10.       return substr(date('y'), -2);
  11.     }
  12.   }, $format);
  13. }
  14. $ver  = genId();
  15. echo $ver;
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 19/09/2015 a las 20:40
  #6 (permalink)  
Antiguo 19/09/2015, 21:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Bucle hasta que de FALSE?

La diferencia estaría en la condición que usarías para terminar el bucle. Por ejemplo, supongamos que tenemos una función que genera un número aleatorio entre el 1 al 5 y queremos tomar solo al primero número para generado. Llegado ese momento, se terminará el bucle.

Código PHP:
Ver original
  1. function random(){
  2.     return mt_rand(1, 5);
  3. }
  4.  
  5. while (true){
  6.     if (($num = random()) % 2 == 0) break;
  7. }
  8.  
  9. echo $num; //El primer número par generado

En tu caso, tendrías que determinar qué valor debe devolver la función para proceder a terminar el bucle.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: bucle, codeigniter
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 18:24.