Foros del Web » Programando para Internet » PHP »

for en un while

Estas en el tema de for en un while en el foro de PHP en Foros del Web. Hola de nuevo ;P Estoy haciendo un script para mostrar el contenido de un tabla,el problema es que cuando creo el while para la tabla ...
  #1 (permalink)  
Antiguo 26/02/2009, 07:50
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 6 meses
Puntos: 1
for en un while

Hola de nuevo ;P
Estoy haciendo un script para mostrar el contenido de un tabla,el problema es que cuando creo el while para la tabla no se cuantos campos tiene, por que la tabla es una variable,entonces al mostrar el resultado con el while hay campos que no muestro por que no me se el numero de campos de la tabla.

ejem.
Código php:
Ver original
  1. $show_reg= mysql_query("SELECT * FROM ".$table);
  2. while($row=mysql_fetch_array($show_reg)) {
  3.             echo "$row['0']";
  4.         }
si la variable "table" tiene 13 campos en el while solo mostrare el primero,y para mostrar el segundo tendría que añadir otro 'echo "$row[1]";'y la cosa es que nose cuantos campos va a tener la table que seleccione.
entonces se me ocurrió que podría usar"$num_reg= mysql_num_fields($show_reg);" para averiguarlo,pero como hago que el while añade un "$row[1]" según el numero de la variable "$num_reg"? a lo mejor con for o algo pero no se me ocurre como puedo hacerlo.

Resumiendo:
si hay 3 campos o el numero que sea el script debería quedar así:
Código php:
Ver original
  1. while($row=mysql_fetch_array($show_reg)) {
  2.             echo "$row['0']";
  3.             echo "$row['1']";
  4.             echo "$row['2']";
  5.            //si hubiera 4 echo"row['3']";
  6.         }

Última edición por Wilfred; 26/02/2009 a las 07:55
  #2 (permalink)  
Antiguo 26/02/2009, 08:04
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Respuesta: for en un while

Sería de la siguiente forma si no sabes el número de campos que tiene la tabla.
Código PHP:
while($row=mysql_fetch_array($show_reg)) {     
     while (
$row as $indice=>$valor){
       echo 
$valor;
     }


Última edición por jorgivaz; 26/02/2009 a las 08:05 Razón: Un poco de formato al código
  #3 (permalink)  
Antiguo 26/02/2009, 12:32
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: for en un while

Gracias Jorgivaz,
no se me había ocurrido eso de un while dentro de otro.Me da un error de sintaxis en la segunda linea de tu código,no se que puede ser.La variable indice es igual a:
Código php:
Ver original
  1. $indice= mysql_num_fields($show_reg)
?
Saludos y gracias!

Última edición por Wilfred; 28/02/2009 a las 16:16
  #4 (permalink)  
Antiguo 28/02/2009, 16:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: for en un while

obvio, si leyeran el manual... (alguien debe saber)

caray!

lo que sucede es que el segundo while, NO debe ser while, sino foreach

Código PHP:
while($row=mysql_fetch_array($show_reg)) {     
     foreach (
$row as $indice=>$valor){
       echo 
$valor;
     }

listo!


--
además, odio el copy+paste ... que mala onda!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/03/2009, 16:17
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: for en un while

Lo siento por no responder antes...Gracias por tu paciencia y sorry que desconocía la función foreach.

El problema es que si lo hago asi me muestra los registros repetido,es decir si tengo una tabla con dos registros me los muestra así:
usuario1 usuario1 usuario 2 usuario2
como puedo hacer par que no se repitan los registros?
thnx y gracias por la paciencia!!
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 05:46.