Foros del Web » Programando para Internet » PHP »

Sacar dato de bucle while

Estas en el tema de Sacar dato de bucle while en el foro de PHP en Foros del Web. Hola. Tengo un problema con un bucle while. Sencillamente no puedo sacar el contenido de la variable $numero del bucle. Es decir, no logró imprimirla. ...
  #1 (permalink)  
Antiguo 08/12/2010, 09:31
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Sacar dato de bucle while

Hola. Tengo un problema con un bucle while. Sencillamente no puedo sacar el contenido de la variable $numero del bucle. Es decir, no logró imprimirla. ¿Alguna idea?
Ojo que el bucle originalmente es más largo, por eso el uso de $num_results. Pero aquí lo acorté para mostrar sólo lo que me está provocando problemas:

Código:
$numero = "";
while ($num_results > 0)
	{ 
		$numero = mt_rand(1000, 9999);    
		$num_results = 0;
	}

echo "El numerito es: ".$numero."<br>";
  #2 (permalink)  
Antiguo 08/12/2010, 09:40
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Sacar dato de bucle while

Colocá todo el bucle y decinos el error exacto porque hasta lo que veo yo nunca entra al bucle, asignas una cadena vacía y la comparas con un número de manera que no entra al bucle. Comprobá eso y nos cuentas.
  #3 (permalink)  
Antiguo 08/12/2010, 10:09
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

El funcionamiento del bucle es lo menos. Pero igual voy a explicar cómo funciona el bucle original.
En el bucle se crea un número al azar y luego se llama a la base de datos para revisar si el número creado ya existe. Si el número existe en la base de datos, $num_results es igual a 1, y se vuelve a entrar en el bucle. Eso hasta que el número creado al azar no esté en la base de datos. En ese caso $num_results va a ser igual a 0.
En el código que coloqué aquí intenté acortar todo el proceso. A $num_results le di un valor de 0, cosa que el bucle sólo diera una pasada.
Pero mi pregunta está dirigida a ¿por qué $numero no puede ser imprimido fuera del bucle?
  #4 (permalink)  
Antiguo 08/12/2010, 10:13
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Sacar dato de bucle while

El código que muestras no tiene problema, el número se debería mostrar, en eso no hay error, por eso te pido que pongas el código completo para ver donde puede estar el error.


Si quieres haz un var_dump de numero para ver que tiene asignado, puede ser que tenga un valor que con echo no se imprime.
  #5 (permalink)  
Antiguo 08/12/2010, 10:22
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

Aquí va:
Código PHP:
    $numero null;
        while (
$num_results 0) { 
            
$numero mt_rand(10009999); 
            
$query "SELECT segArchivos FROM archi WHERE segArchivos =".$numero
            
$resultado mysql_query($query);     
            
$num_results mysql_num_rows($resultado); 
        }
            echo 
"El numerito es: ".$numero."<br>"
Voy a ver lo de var_dump.
  #6 (permalink)  
Antiguo 08/12/2010, 10:37
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

var_dump me da NULL.
  #7 (permalink)  
Antiguo 08/12/2010, 10:39
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

Y cuando uso el código del mensaje #1 en una hoja individual no hay forma de imprimir $numero.
  #8 (permalink)  
Antiguo 08/12/2010, 10:48
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Sacar dato de bucle while

Cita:
Colocá todo el bucle y decinos el error exacto porque hasta lo que veo yo nunca entra al bucle, asignas una cadena vacía y la comparas con un número de manera que no entra al bucle. Comprobá eso y nos cuentas.
Como te dije, revisa la condición del bucle ya que ese código que pusiste NO entra NUNCA al bucle.

Además tenes un error conceptual, por más que PHP sea typeless no significa que no halla que tener coherencia en las asignaciones de tipos.
  #9 (permalink)  
Antiguo 08/12/2010, 10:54
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

ahhh... Porfa, explícame lo último. Lo de la asignación de tipos y en dónde estaría la incoherencia en mi código. Mira que de eso nunca había escuchado.
  #10 (permalink)  
Antiguo 08/12/2010, 10:58
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Sacar dato de bucle while

Es más que nada para orden de código y evitar resultados inesperados.

Código PHP:
$numero ""
Aca asigno una cadena vacia. Osea una cadena de caracteres.

Código PHP:
$numero mt_rand(10009999); 
Acá trabajo con números usando la misma variable, en PHP es totalmente válido, pero sería más correcto en la primera asignación poner un número y usamos siempre la variable como número.
Yo lo suelo hacer así para limpieza de código y evitar que se hagan CAST que puedan dar resultados inesperados.
  #11 (permalink)  
Antiguo 08/12/2010, 11:01
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

Aja. Entendido. Tienes Razón. Gracias por la ayuda ya entregada.
Veré por mientras como arreglar ese while. Si es que se te ocurre un cambio para mejorar el while del mensaje #5, genial.
  #12 (permalink)  
Antiguo 08/12/2010, 11:02
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Sacar dato de bucle while

En cuanto a tu código, inicia $num_results para entrar al bucle:


Código PHP:
   $numero null
$num_results 1;
        while (
$num_results 0) {  
            
$numero mt_rand(10009999);  
            
$query "SELECT segArchivos FROM archi WHERE segArchivos =".$numero;  
            
$resultado mysql_query($query);      
            
$num_results mysql_num_rows($resultado);  
        } 
            echo 
"El numerito es: ".$numero."<br>"
  #13 (permalink)  
Antiguo 08/12/2010, 11:03
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sacar dato de bucle while

Upss... Ya está arreglado. Sin querer hice el mismo cambio que me muestras arriba y se arregló todo. Claramente tenía un desconocimiento en el funcionamiento básico de los while.
Muchísimas gracias areslepra.
Y pensar que esto me tuvo craneando toda una mañana.

Etiquetas: bucle, while-foreach, 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 11:16.