Foros del Web » Programando para Internet » PHP »

Pasar valor de array a variable de sesión?

Estas en el tema de Pasar valor de array a variable de sesión? en el foro de PHP en Foros del Web. Hola a tod@s, Bueno soy bastante nuevo en esto del PHP y creo que es la primera vez que posteo en el foro de hecho, ...
  #1 (permalink)  
Antiguo 20/03/2007, 09:18
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 2 meses
Puntos: 0
Pasar valor de array a variable de sesión?

Hola a tod@s,

Bueno soy bastante nuevo en esto del PHP y creo que es la primera vez que posteo en el foro de hecho, aunque he mamado ya un buen cacho, así que antes de nada gracias a vuestra ayuda.

Al lio, tengo el siguiente problema:

Recojo todos los datos de un formulario que me lleva a una página de confirmación de información. en esta para recoger los datos del select multiple tengo lo siguiente:
Código:
$_SESSION['areainfo']=$_POST['areainfo'];
$_SESSION['areainfo_es']=$_POST['areainfo_es'];
	if(isset($_POST['type'])){
	$arr_tipo = $_POST['type'];
	for($i = 0; $i < count($arr_pagina);i++){
		echo $arr_tipo[$i] . "&nbsp;";
		$tipo = $arr_tipo[$i];
	}
}
$_SESSION['type'] = $tipo;
Y este sería el código para mostrarlo dentro del formulario:
Código PHP:
<td align="right"><span class="EstiloDevelopment">Type:</span></td>
<td><span class="EstiloDevelopment"><? echo $_SESSION["type"]; ?>
      <input name="type" type="hidden" id="areainfo" style="border:1px solid #000000; font-family:Tahoma; font-size:11px; padding:2px" value="<? echo $_POST["type"]; ?>">
    </span>          
</td>
la instrucción echo la tengo puesta para ver que efectivamente me muestre que recoge los valores del select, esto lo hace ok.
El problema es que tengo que asignar el valor del array a una variable para asignarsela a $_SESSION['TYPE'] , esto ha de ser así porque otras personas hicieron el formulario y creo que es para mostrar el valor insertado anteriormente en el formulario y no que lo borre en caso de cargar la página ¿?

Espero haberme explicado bien, gracias.

Última edición por kyokurider; 20/03/2007 a las 09:24
  #2 (permalink)  
Antiguo 20/03/2007, 09:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 33
Antigüedad: 20 años, 6 meses
Puntos: 0
Hay un detalle que pasas por alto. Cuando haces $arr_tipo = $_POST['type']; tienes que tener en cuenta que $_POST['type'] no es un array, con lo que $arr_tipo va a valer lo que valga $_POST['type'], seguramente, una cadena de texto o un entero. Luego, dentro del bucle, intentas acceder a él como si fuera un array, pasándole el index: $arr_tipo[$i], con lo que te devolverá null, puesto que esa posición no existe. Igualmente, al final asignas un hipotético valor a $_SESSION['type'], que es el de la última iteración de $arr_tipo[$i] en el bucle; si eso es lo que buscas, es más fácil hacer lo siguiente, y ahorrarte el bucle:

$i = count($arr_tipo) - 1;
$_SESSION['type'] = $arr_tipo[$i];


Comenta que buscas exactamente, porque yo te he comentado cosas a voleo, sin saber muy bien lo que buscas y si te he ayudado o no.
  #3 (permalink)  
Antiguo 20/03/2007, 09:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Pasar valor de array a variable de sesión?

De momento edito: NO me he arreglado pasando el código de un lado a otro, necesito asignar los valores del select a una variable (que no sea un array), para poder insertarlos después en la BD , me tiro de los pelos tiene una pinta de lo más absurda y yo soy un negado.

perdona verm83 justo he contestado a la vez antes, el valor de $_POST['type'] en principio es un array ya que me recoge del select que tengo definido como <select name="type[]" multiple> de hecho ya comento que con el echo del bucle imprimo en pantalla y efectivamente se muestran las multiples opciones.

lo que quiero es asignar todas esas opciones a una variable de texto de forma que quedase como un texto por así decirlo.., y luego con imprimir esa variable en pantalla ya valdría.

La intención de querer hacerlo así es que quien hizo el formulario utilizó $_SESSION['variable'] = $_POST['variable']; para todas las variables del formulario y yo (en mi ignorancia) creo que eso es para si por ejemplo hay que volver a los datos del formulario por no haberlos rellenado todos muestre los que ya se rellenaron anteriormente...

espero haberlo explicado, gracias.

Última edición por kyokurider; 20/03/2007 a las 10:06
  #4 (permalink)  
Antiguo 20/03/2007, 13:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 33
Antigüedad: 20 años, 6 meses
Puntos: 0
De acuerdo Re: Pasar valor de array a variable de sesión?

Bueno, meter esos datos en una variable de texto e imprimirla, puedes hacerlo con:

$texto = "";
for ($i = 0; $i < count($arr_pagina); i++) {
$texto .= $arr_tipo[$i];
}
echo $texto;


Fíjate en el .= que lo que hace es sumar a lo que ya se tiene (tiene la misma función que $texto = $texto . $arr_tipo[$i];). Si quieres, separa las cadenas con espacios o algo parecido: $texto .= $arr_tipo[$i] . "<br />";.

Mira a ver si consigues algo, porque si el echo las muestra, por huevsss las tiene que almacenar bien en una variable.
  #5 (permalink)  
Antiguo 21/03/2007, 03:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Pasar valor de array a variable de sesión?

Siiiii!!!

Después de copiar el bucle que me indicas me he dado cuenta que en el mio lo que faltaba era el "punto", tal como me explicabas, sabía que era una chorrada y yo un ignorante je je.

Muchas gracias ti@ gracias a esto empiezo la mañana con buen pie

bueno..., todo no podía ir como la seda no..

en local ha ido perfect pero al subirlo..

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session bug _compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

estoy investigando un poco, utilizo la variable $_SESSION para todo con lo cual no debería haber problemas.., voy a ver..

edito:
he encontrado esto,
-----------------------------------------
; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, albeit
register_globals
; is disabled. PHP 4.3 and later will warn you, if this feature is
used.
; You can disable the feature and the warning seperately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled.

session.bug_compat_42 = 0 //yours is likely set to 1
session.bug_compat_warn = 1
-------------------------------------------

en mi php.ini las variables están así:

session.bug_compat_42 = off off
session.bug_compat_warn = on on

a mi me funciona sin problemas, sin embargo en el servidor me da el error e indudablemente no puedo seguir más allá ni insertar el registro.
Les he contactado comunicando esto y espero respuesta en estos momentos.

Lo raro es que tan solo incluyendo ese bucle for me devuelve el error cosa que antes no ocurría, puede ser mera coincidencia que hayan realizado un cambio justo justo hoy??, (no lo creo), puede ser que devuelva el error por alguna otra razón??, es seguro tener la variable session.bug_compat_42 = off ??

Última edición por kyokurider; 21/03/2007 a las 04:11
  #6 (permalink)  
Antiguo 22/03/2007, 09:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 7
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Pasar valor de array a variable de sesión?

Hola de nuevo, efectivamente estaba cambiado el valor.

Ahora bien, lo he modificado en el servidor y no me está funcionando.

En local ya funciona perfecto, pero en el servidor donde tengo el hosting cuando cliko el submit me muestra una página en blanco y seguido muestra la página del formularion con la info del registro en pantalla.

En local ya digo que me funciona perfectamente, no lo entiendo

la versión de php en local es la 4.3.11 y en el hosting la 4.4.4, pero antes también funcionaba..., tendrá esto que ver?
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:56.