Ver Mensaje Individual
  #10 (permalink)  
Antiguo 04/02/2008, 18:27
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Error en while o ignorancia

Cita:
Iniciado por Italico76 Ver Mensaje
Por otro lado, si te interesa "ver" ese valor una infinidad de veces, deberias cargarlo en una variable (o array)
No necesariamente.

Haber, hay una manera sencilla de hacer lo que pides (con una sola funcion ). Vamos paso a paso. mysql_fetch_array() y las funciones similares (mysql_fetch_assoc() y mysql_fetch_row()) generan todas un array, pero de una manera un tanto especial.

A su primera llamada van a devolver el primer resultado, vamos, el primer elemento del array que contiene nuestro resultado. Y a la vez que devuelven este resultado, avanzan el puntero interno de ese array al siguiente elemento. Así, al llamar por segunda vez, se devuelve el segundo elemento y el puntero avanza una posición más. Y así sucesivamente. Cuando se llega al último elemento, al intentar avanzar el puntero, nos damos con que ya no hay más elementos, por lo que la siguiente ejecución de esas funciones retornará false. Esta es la base del uso de while() para mostrar resultados obtenidos de una consulta. Lo que hacemos con estos ciclos repetitivos del while es ejecutar repetidas veces la función mysql_fetch_algo(), avanzando cada vez un elemento, por lo tanto, recorremos todos los resultados. Una vez que se llega al final, estas funciones siempre devolverán false, y por eso el bucle se detiene.

Ahora, si queremos volver a recorrer todos los resultados, habrá que reubicar tal puntero interno en la posición inicial del array nuevamente y así poder volver a ciclar. Para eso, PHP ofrece la función mysql_data_seek(). Lo que hace esta función es colocar el puntero del array en una posición que nosotros le indiquemos, en este caso le tendremos que indicar la posición 0, que corresponde al elemento inicial.

Así, aquí tienes tu código, el uso de esa función es muy sencillo, sólo hay que ejecutar la función antes del while:

Código PHP:
// llista amb titol superior -------res2------- ESTE LO EJETUTA BIEN
while($fila2 mysql_fetch_array($res2)){
echo 
$fila2['desc_grup_burocra'];
 
echo 
"<br><table border=\"1\" width=\"500\" id=\"table1\" cellspacing=\"0\" cellpadding=\"0\" bordercolor=\"#000000\">";
 
// llista subcategoria superior -------res1------- ESTE SOLO ME LO EJECUTA UNA VEZ
 
        #
        #
        # Con esto se te va a ejecutar las veces que quieras ;-)
        #
        #
        
@mysql_data_seek($res10);
        
#
        #
 
        
while($fila1 mysql_fetch_array($res1)){
 
        echo 
"    <tr>";
        echo 
"        <td>".$fila1[desc_burocra]."</td>";
        echo 
"        <td width=\"61\">".$num_burocra_total[$fila1['id_burocra']]."&nbsp;</td>";
        echo 
"    </tr>";
 
        }
 
echo 
"</table>";
 

http://www.php.net/mysql_data_seek

Un saludo,