Foros del Web » Programando para Internet » PHP »

problema con while y foreach

Estas en el tema de problema con while y foreach en el foro de PHP en Foros del Web. Hola, tengo un codigo que me armo un user de esta web que sirve para mostrar una tabla de mysql en un archivo php. Aqui ...
  #1 (permalink)  
Antiguo 05/11/2009, 19:04
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
problema con while y foreach

Hola, tengo un codigo que me armo un user de esta web que sirve para mostrar una tabla de mysql en un archivo php.

Aqui el codigo

Código:
$result = mysql_query("SELECT * FROM descprod");
         while($row=mysql_fetch_array($result)) {
             $resultArray[] = $row;
         }
      echo '<table width="600" border="1" cellspacing="2" cellpadding="2"  align="center">';
      foreach ($resultArray as $rows) {
       echo '<tr>';
       foreach ($rows as $col) {
       echo '<td>';
       echo '<div align="center">'.$col.'</div>';
       echo '</td>';
       }
       echo '</tr>';
      }

      echo '</table>';
El problema es que me imprime 2 veces cada campo y no logro dar con la solucion. Espero que alguien me ayude estoy trabado aca!! y no logro continuar!!
  #2 (permalink)  
Antiguo 05/11/2009, 19:22
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: problema con while y foreach

elimina esto

while($row=mysql_fetch_array($result)) {
$resultArray[] = $row;
}
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 05/11/2009, 19:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por urgido Ver Mensaje
elimina esto

while($row=mysql_fetch_array($result)) {
$resultArray[] = $row;
}
Elimine eso y me tira error en el primer FOREACH
me agregarias al msn? porque por el foro es medio complicadoo pachu91_@hotmai.
  #4 (permalink)  
Antiguo 05/11/2009, 19:29
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: problema con while y foreach

haber dejame ver en que fallé ahorita lo re posteo
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 05/11/2009, 19:31
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: problema con while y foreach

pues intenta solo con

$result = mysql_query("SELECT * FROM descprod");
while($row=mysql_fetch_array($result)) {
$resultArray[] = $row;
}



o quieres que forzosamente se muestre en una tabla?
solo debes imprimir el array... usa print_r
__________________
Hospedaje Web al mejor costo!
  #6 (permalink)  
Antiguo 05/11/2009, 19:37
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: problema con while y foreach

eso es por que la consulta manda el valor y la clave y puedes solucionarlo facil mente con este codigo


foreach ($resultArray as $rows) {

if(!isnumeric($rows)){



de este modo el resultado que no quieres no se mostrara(eso para por que te manda la idd que es un campo numerico)
  #7 (permalink)  
Antiguo 05/11/2009, 19:40
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por urgido Ver Mensaje
pues intenta solo con

$result = mysql_query("SELECT * FROM descprod");
while($row=mysql_fetch_array($result)) {
$resultArray[] = $row;
}



o quieres que forzosamente se muestre en una tabla?
solo debes imprimir el array... usa print_r
Necesito que se muestre en una tabla si o si. Probe con esto que me dijiste pero me sigue dando error, entra a leandrog.com/subir/productos.php y ves como sale.
para mi el problema es que el 2do foreach lo ejecuta 2 veces, ya intente poniendo break y flags pero no ..
  #8 (permalink)  
Antiguo 05/11/2009, 19:42
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por zaetoner Ver Mensaje
eso es por que la consulta manda el valor y la clave y puedes solucionarlo facil mente con este codigo


foreach ($resultArray as $rows) {

if(!isnumeric($rows)){



de este modo el resultado que no quieres no se mostrara(eso para por que te manda la idd que es un campo numerico)
Hola, no tengo que mostrar campos numericos unicamente, tengo q mostrar ID, PRODUCTO, DESCRIPCION, PRECIO.
pero me sale una tabla que seria ID, ID, PRODUCTO, PRODUCTO, DESCRIP, DESCRIP y asi..
  #9 (permalink)  
Antiguo 05/11/2009, 19:46
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: problema con while y foreach

que te sale? 2 veces lo mismo o un numero y el dato de consulta

!is_numeric identifica si es numerico y lo elimina segun el codigo que te di
__________________
...
  #10 (permalink)  
Antiguo 05/11/2009, 19:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por zaetoner Ver Mensaje
que te sale? 2 veces lo mismo o un numero y el dato de consulta

!is_numeric identifica si es numerico y lo elimina segun el codigo que te di
mira lo que me sale en leandrog.com/subir/productos.php

me repitetodos los campos no solo los numericos
  #11 (permalink)  
Antiguo 05/11/2009, 20:23
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: problema con while y foreach

$result = mysql_query("SELECT * FROM descprod");
echo '<table width="600" border="1" cellspacing="2" cellpadding="2" align="center">';
while($row=mysql_fetch_array($result)) {
echo '<tr>';
foreach ($rows as $col) {
echo '<td>';
echo '<div align="center">'.$col.'</div>';
echo '</td>';
}
echo '</tr>';

}

echo '</table>';
__________________
...
  #12 (permalink)  
Antiguo 05/11/2009, 20:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por zaetoner Ver Mensaje
$result = mysql_query("SELECT * FROM descprod");
echo '<table width="600" border="1" cellspacing="2" cellpadding="2" align="center">';
while($row=mysql_fetch_array($result)) {
echo '<tr>';
foreach ($rows as $col) {
echo '<td>';
echo '<div align="center">'.$col.'</div>';
echo '</td>';
}
echo '</tr>';

}

echo '</table>';
sigue mostrando 2 veces todo.. yo no entiendo!!
Lo que yo entiendo es que ROWS es un array que contiene los valores de la tabla? es como si le pase 2 veces cada valor a la variable COL, nose por que!!
  #13 (permalink)  
Antiguo 05/11/2009, 20:38
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: problema con while y foreach

aaaaaaaaa ya encontre el error y es que tienes dos arrays uno en $row y otro en $rows de donde sacaste rows?

quita la 's' de aqui en rows
foreach ($rows as $col) {
__________________
...
  #14 (permalink)  
Antiguo 05/11/2009, 20:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por zaetoner Ver Mensaje
aaaaaaaaa ya encontre el error y es que tienes dos arrays uno en $row y otro en $rows de donde sacaste rows?

quita la 's' de aqui en rows
foreach ($rows as $col) {
No, eso ya lo modifique y sigue igual
Podras agregarme por favor a msn?? [email protected] porque necesito salir de este embroyo por favor!! estoy cada vez mas cerca!
  #15 (permalink)  
Antiguo 05/11/2009, 21:03
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: problema con while y foreach

de donde sacas el $rows?, pon el codigo completo
__________________
...
  #16 (permalink)  
Antiguo 05/11/2009, 21:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por zaetoner Ver Mensaje
de donde sacas el $rows?, pon el codigo completo


Código:
<?
include "conectarbd.php";
    $result = mysql_query("SELECT * FROM productos");
echo '<table width="600" border="1" cellspacing="2" cellpadding="2" align="center">';
while($row=mysql_fetch_array($result)) {
echo '<tr>';
foreach ($row as $col) {
echo '<td>';
echo '<div align="center">'.$col.'</div>';
echo '</td>';
}
echo '</tr>';
}

echo '</table>';
?>
ese es el codigo que tengo ahora y que me esta generando el problema,
  #17 (permalink)  
Antiguo 05/11/2009, 22:08
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: problema con while y foreach

Cita:
Iniciado por pachuweb Ver Mensaje
Código:
...
while($row=mysql_fetch_array($result)) {
...
ese es el codigo que tengo ahora y que me esta generando el problema,
La función fetch_array genera un array con índices numéricos y nombres, le tienes que especificar el uso, números o títulos.

while($row=mysql_fetch_array($result, MYSQL_ASSOC)) {

Si hubieras impreso $row con print_r() te mostraría algo como:

Array {
[0] -> 1
[id] -> 1
[1] -> Datos
[nombre] -> Datos
}

Saludos,
  #18 (permalink)  
Antiguo 05/11/2009, 23:20
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 4 meses
Puntos: 30
Respuesta: problema con while y foreach

presisamente por eso que dice hackmanc es que dije de if(!isnumeric($rows)){ eso es lo que resuleve tu problema, por que no lo intentas? y despues nos cuentas
__________________
...
  #19 (permalink)  
Antiguo 06/11/2009, 04:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: problema con while y foreach

hola soy el user que armo el codigo....

He mandado un alternativa más elaborada en el otro hilo....


A ver que os parece....

Código php:
Ver original
  1. $result = mysql_query("SELECT * FROM mytable");
  2. echo '<table>';
  3.    echo '<THEAD><tr><td>ID</td><td>Nombre</td><td>Precio</td></tr></THEAD>';
  4.    echo '<TFOOT><tr><td colspan="3">Tabla de precios</td></tr></TFOOT>';
  5.    echo '<TBODY>';
  6.     while($row=mysql_fetch_array($result)) {
  7.    echo '<tr><td>'.$row['ID'].'</td><td>'.$row['nombre'].'</td><td>'.$row['precio'].'</td></tr>';
  8.    }
  9. echo '</TBODY></table>';


Cita:
mira lo que me sale en leandrog.com/subir/productos.php

me repitetodos los campos no solo los numericos
en esa dirección no se repite NADA????!?!?!?!?

Quim

Última edición por quimfv; 06/11/2009 a las 04:35
  #20 (permalink)  
Antiguo 06/11/2009, 06:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 39
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: problema con while y foreach

Cita:
Iniciado por quimfv Ver Mensaje
hola soy el user que armo el codigo....

He mandado un alternativa más elaborada en el otro hilo....


A ver que os parece....

Código php:
Ver original
  1. $result = mysql_query("SELECT * FROM mytable");
  2. echo '<table>';
  3.    echo '<THEAD><tr><td>ID</td><td>Nombre</td><td>Precio</td></tr></THEAD>';
  4.    echo '<TFOOT><tr><td colspan="3">Tabla de precios</td></tr></TFOOT>';
  5.    echo '<TBODY>';
  6.     while($row=mysql_fetch_array($result)) {
  7.    echo '<tr><td>'.$row['ID'].'</td><td>'.$row['nombre'].'</td><td>'.$row['precio'].'</td></tr>';
  8.    }
  9. echo '</TBODY></table>';




en esa dirección no se repite NADA????!?!?!?!?

Quim
Ya lo pude solucionar!!!! lo que hice fue cambiar mysql_fetch_array por mysql_fetch_row y listo! ahi estaba el problema!
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 14:50.