Foros del Web » Programando para Internet » PHP »

variable SESSION no funciona en Foreach

Estas en el tema de variable SESSION no funciona en Foreach en el foro de PHP en Foros del Web. Intento hacer un upload multipple de archivos, pero quiero guardarlos en una carpeta especifica por cada usuario, para esto la variable se session $_SESSION['carpeta']; contiene ...
  #1 (permalink)  
Antiguo 11/09/2010, 14:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
variable SESSION no funciona en Foreach

Intento hacer un upload multipple de archivos, pero quiero guardarlos en una carpeta especifica por cada usuario, para esto la variable se session $_SESSION['carpeta']; contiene en nombre de la carpeta, en este caso son folios '01208'
el caso es que, dentro del foreach la variable $c1 o $_SESSION['carpeta']; no funciona es decir las ignora.
Este es el Codigo:
<?
$c1= $_SESSION['carpeta'];

$dir= 'Documentos/'.$c1.'/';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];

move_uploaded_file($tmp_name,"$dir/$name");
}
else
{
echo $dir;
echo "Imposible hacer Upload de Documentos, intente de nuevo";

}
}


?>


Cuando hago el echo $dir; me muestra la cadena, asi Documentos// cuando deberia ser Documentos/01208/

Espero que puedan ayudarme. Gracias
Saludos
  #2 (permalink)  
Antiguo 11/09/2010, 14:30
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 4 meses
Puntos: 150
Respuesta: variable SESSION no funciona en Foreach

¿pusiste session_start(); al inicio de la pagina?
  #3 (permalink)  
Antiguo 11/09/2010, 15:53
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: variable SESSION no funciona en Foreach

Pues el session_start(); ya esta activado en auto, de hecho si hago
echo $_SESSION['carpeta'];
me muestra el valor sin problema
el problema es cuando lo pongo dentro del foreach
cuando pongo el foreach es cuando me omite el valor de la variable de session
  #4 (permalink)  
Antiguo 11/09/2010, 16:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: variable SESSION no funciona en Foreach

Cita:
Iniciado por alanCM Ver Mensaje
Pues el session_start(); ya esta activado en auto, de hecho si hago
echo $_SESSION['carpeta'];
me muestra el valor sin problema
el problema es cuando lo pongo dentro del foreach
cuando pongo el foreach es cuando me omite el valor de la variable de session
pero lo que dices no tiene sentido, si te imprime algo... ¿que es?

porque foreach() trabaja obligatoriamente con array, entonces... ¿que valor te muestra sin problema?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 11/09/2010, 16:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: variable SESSION no funciona en Foreach

me refiero a que si en la pagina pongo solo

<?
$c1= $_SESSION['carpeta'];

$dir= 'Documentos/'.$c1.'/';

echo $dir

?>
me muestra por ejemplo:
"Documetos/012020/"
que es la direccion de la carpeta
pero al poner dentro del foreach
echo $dir ;
me imprime: "Documentos//" <---entre las diagonales deberia aparecer el valor de la variable $_SESSION['carpeta']
no se si me explico?
  #6 (permalink)  
Antiguo 11/09/2010, 16:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: variable SESSION no funciona en Foreach

bueno, entonces muestra el código del foreach() porque eso de adivinar porque no pasa la variable esta en chino...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 11/09/2010, 16:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: variable SESSION no funciona en Foreach

pues es que yo no entiendo por que no pasa el valor, mira aki esta el codigo:

<?
$c1= $_SESSION['carpeta']; //asigno el valor de la variable de session
$dir= 'Documentos/'.$c1.'/'; // la concateno para obtener "Documentos/012020/"

foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];

move_uploaded_file($tmp_name,"$dir/$name"); // Aki mando la variable con la direccion
}
else
{
echo $dir;
echo "Imposible hacer Upload de Documentos, intente de nuevo";

}
}


?>

con el foreach hago el upload, y si funciona de hecho me guarda los archivos en la carpeta "Documentos". sin embargo yo kiero ke lops guarde en "Documentos/012020/"
y al final quedaria asi "Documentos/012020/archivo.jpg"
pero no entiendo por que ignora el valor de la variable de session y hace esto "Documentos/archivo.jpg"

Gracias por tu tiempo
espero que esta vez haya sido mas explicito
  #8 (permalink)  
Antiguo 11/09/2010, 16:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: variable SESSION no funciona en Foreach

y en dicho código donde empleas session_start()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 11/09/2010, 16:37
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 3 meses
Puntos: 71
Respuesta: variable SESSION no funciona en Foreach

Yo creo que el problema lo tienes en una doble /, si te fijas, asignas la variable $dir a 'Documentos/'.$c1.'/'; (fijate la última /) y luego, dentro del foreach, haces esto otro move_uploaded_file($tmp_name,"$dir/$name"); (ves la / en medio de $dir y $name??)

Yo creo, que si $dir lo dejas así: $dir= 'Documentos/'.$c1; Te soluciona el problema.
  #10 (permalink)  
Antiguo 11/09/2010, 16:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: variable SESSION no funciona en Foreach

Cita:
Iniciado por DooBie Ver Mensaje
Yo creo que el problema lo tienes en una doble /, si te fijas, asignas la variable $dir a 'Documentos/'.$c1.'/'; (fijate la última /) y luego, dentro del foreach, haces esto otro move_uploaded_file($tmp_name,"$dir/$name"); (ves la / en medio de $dir y $name??)

Yo creo, que si $dir lo dejas así: $dir= 'Documentos/'.$c1; Te soluciona el problema.
no amigo, en dado caso... mientras $c1 tenga valor no importa el último /

sin embargo, aún no tenga valor... las / repetidas se consideran como una sola, así que el problema no es ese...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 11/09/2010, 16:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: variable SESSION no funciona en Foreach

aa bueno, lo que sucede es que la pagina esta hecha con wordpress, y en el config.php
puse el
session_start();
y asi utilizo las variables en todas las paginas que agrego.
la pagina en si, si recibe el valor de la variable $_SESSION['carpeta'];

de hecho si borro el codigo y solo pongo
<?
echo $_SESSION['carpeta'];
?>
me muestra 012020, o el codigo que yo le mande.
el problema empieza al integrarla al foreach, me la pasa en blanco, la ignora
Ese es el misterio =S
Gracias
  #12 (permalink)  
Antiguo 11/09/2010, 16:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: variable SESSION no funciona en Foreach

bueno, vamos a hacer esto:
Código PHP:
echo "RUTA: $dir/$name";
#move_uploaded_file($tmp_name,"$dir/$name"); // Aki mando la variable con la direccion 
¿cual es el resultado?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 11/09/2010, 16:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: variable SESSION no funciona en Foreach

Jum Sucedio lo mismo sigue ignorando el valor
Me imprimio:

" RUTA: Documentos//archivo.jpg
Imposible hacer Upload de Documentos, intente de nuevo "
  #14 (permalink)  
Antiguo 11/09/2010, 17:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: variable SESSION no funciona en Foreach

pero entonces, con el mismo código... antes del foreach()
Código PHP:
echo "RUTA: $dir";
// foreach... 
¿que arroja?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 11/09/2010, 17:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: variable SESSION no funciona en Foreach

uuuuf que crees
Muchas Gracias Pateketrueke
Me desblokeaste, lo que pasa es que me centre en el ciclo y no rebice lo demas.
cuando te decia que si hacia echo $_SESSION['carpeta'];
lo prove con el previwe de la pagina y funcionaba.
y cuando me hiciste esa pregunta de comentariar el foreach y probar, dejo de arrojarme valor.
y se me hizo muy extraño pense que ya estaba loco XD
Lo que sucedio es que, como te decia el Session_start esta en el config.php
y al momento de hacer preview hace algo como " http//:www.pagina.org//?page_id=835&preview=true&preview_id=835&preview"

y yo en la pagina donde seleccionaba los archivos puse " http//:pagina.org//?page_id=835"
soy novato en esto, pero supongo que de esa forma sin "www." accesa directo al archivo .php y no pasa por el config.php que es parte del wordpress.

En fin fue una confusion malisima de mi parte, pro bueno a cualquiera le pasa ke no?

Muchas gracias compañeros!!

Etiquetas: documentos, foerach, session, upload
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:20.