Foros del Web » Programando para Internet » PHP »

foreach que no funciona

Estas en el tema de foreach que no funciona en el foro de PHP en Foros del Web. buenas tengo un problema existencial con un foreach, hasta el momento todos me habian funcionado poero ahora no quiere hacer nada, rescato una variable de ...
  #1 (permalink)  
Antiguo 09/02/2006, 14:26
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Pregunta foreach que no funciona

buenas tengo un problema existencial con un foreach, hasta el momento todos me habian funcionado poero ahora no quiere hacer nada, rescato una variable de la bd y quiero mostra su contenido pero me arroja vacio o aveces me muestra la palabra "ARRAY", no tengo idea de cual puede serel problema.

Código PHP:
$parti=$row[participantes];
        foreach(
$parti as $value)
        { 
            echo 
"valor: $value - usuario: $usuario";    
            if(
$valor==$usuario)
            {
                
$compro[]=$row[idactividad];
            }
        } 
no muestrab nada de nada..alguien sabe que puede ser???
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #2 (permalink)  
Antiguo 09/02/2006, 14:44
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
La variable $valor existe, no será $value?

podrias cambiar esto: $compro[]=$row[idactividad];
por: $compro[]=$row["idactividad"];
  #3 (permalink)  
Antiguo 09/02/2006, 15:02
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
lo cambie, pero el tema es que ni siqueira entra al foreach, no me muestra las varibles que quiero ver con el echo, es como si no reconociera la funcion "foreach"
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #4 (permalink)  
Antiguo 09/02/2006, 15:05
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Seria bueno que pusieras el código que esta arriba del foreach puede que el error este mucho más arriba de el foreach.
  #5 (permalink)  
Antiguo 09/02/2006, 15:10
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Código PHP:
include("conexion.php");
$SQLbus  "SELECT * FROM actividad order by hora";
    
$SQLen pg_query($IdConexion,$SQLbus);

      while(
$row pg_fetch_array($SQLen)) 
    {
        
        
$parti=$row[participantes];
        foreach(
$parti as $value)
        { 
            echo 
"valor: $value - usuario: $usuario";    
            if(
$value==$usuario)
            {
                
$compro[]=$row["idactividad"];
            }
        }
    } 
eso es todo...
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #6 (permalink)  
Antiguo 09/02/2006, 16:01
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Pregunta

ya probaste esto;


Código PHP:
<?php
$SQLen 
pg_query($IdConexion,$SQLbus); 
if(!
$SQLen)
  echo 
"Error en el query";
?>
  #7 (permalink)  
Antiguo 09/02/2006, 16:03
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
no le encuentro sentido, $parti no es una array.
  #8 (permalink)  
Antiguo 09/02/2006, 16:07
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Cita:
Iniciado por plus_ultra
no le encuentro sentido, $parti no es una array.
jaja, cierto.

Bastaría con tener:

Código PHP:
<?php 
    
include("conexion.php");
    
$SQLbus  "SELECT * FROM actividad order by hora";
    
$SQLen pg_query($IdConexion,$SQLbus);

      while(
$row pg_fetch_array($SQLen)) 
      {
            if(
$row["participantes"]==$usuario)
            {
                
$compro[]=$row["idactividad"];
            }
        }
    }  
?>
  #9 (permalink)  
Antiguo 09/02/2006, 16:11
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Tiene TODA la razon PLUS ULTRA
  #10 (permalink)  
Antiguo 10/02/2006, 05:45
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
En el campo $row[participantes] de la bd guardo un "arreglo" con los id de los participantes en una reunion en particular, por eso cuando consulto po cada uno de los usuarios necesito saber si participo o no. probe poniendo directamente foreach($row[participantes]; as $value), pero tampoco funciona...si el campo $row[participantes] no fuese un arreglo, tengo mas que claro que puedo hacer la pregunta en forma directa, pero lko es...y "ese" es el problema.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #11 (permalink)  
Antiguo 10/02/2006, 06:32
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Es que ese arreglo no es un arreglo que php "entienda" como para trabajarlo con foreach, deberás usarlo de otra forma.
Como estan guardados esos datos en el campo participantes de tu tabla?
  #12 (permalink)  
Antiguo 10/02/2006, 07:20
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
gracias claudiovega
te cuento, rescato los datos asi:

Código PHP:
$SQLad="SELECT * FROM operador where estado='1' order by nivel_a";

        
$conad pg_query($IdConexion,$SQLad);

        While(
$row=pg_fetch_array($conad))

        {

            
$userp=ucwords($row[nombre]);    
            echo 
"<input type='checkbox' name='par[]' value='$row[idoperador]'>&nbsp;<font face='Arial, Helvetica, sans-serif' size='2'>$userp<br>";

        } 
luego el campo $par[], lo guardo en la base de datos, ¿esta bien asi? o deberia hacerlo de otra manera????
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #13 (permalink)  
Antiguo 10/02/2006, 07:32
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Y como quedan guardados los datos en el campo cuando usas ese metodo?
  #14 (permalink)  
Antiguo 10/02/2006, 09:21
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
la verdad es que siempre que lo hago asi queda guardada lapalabra "Array", asi, tal cual.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #15 (permalink)  
Antiguo 10/02/2006, 10:01
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
La idea de tu codigo es que un usuario del sistema elija los operadores a través de los checkbox? Luego, guardar esos operadores elegidos en una tabla dentro de un campo como un array?

1) Guardar varios valores dentro de un campo de una tabla es algo que rompe con la llamada normalización de las bases de datos.

2) claramente tienes un error al guardar los datos.

Recomendaría primero normalizar la base de datos, para ello puedes contar en el foro de bases de datos lo que quieres lograr y te ayudarán a diseñar mejor tus tablas, yo mismo puedo ayudarte. Luego, vemos el codigo para guardar mejor esos datos.
  #16 (permalink)  
Antiguo 14/02/2006, 06:31
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Gracias Nuevamente

la verdad es que me convenia mucho mas generar una tabla auxiliar ya que tengo una relacion de uno a muchos, todos los temas anteriores los habia trabajado asi, con tablas auxiliares, pero en este caso queria probar con algo distinto...gracias por tus consejos.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
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 22:29.