Foros del Web » Programando para Internet » PHP »

Problema con $_SESSION

Estas en el tema de Problema con $_SESSION en el foro de PHP en Foros del Web. Hola a todos llevo varios dias enfrascado en un problema que soy incapaz de solucionar y vengo a ver si me podeis ayudar. Tengo un ...
  #1 (permalink)  
Antiguo 04/06/2013, 03:04
 
Fecha de Ingreso: junio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Problema con $_SESSION

Hola a todos llevo varios dias enfrascado en un problema que soy incapaz de solucionar y vengo a ver si me podeis ayudar.
Tengo un ComboBox que me seleciona unos Nombre y cuando le doy al boton de Enviar el me pinta una tabla a traves de una consulta. Hasta ahi todo bien el problema es que cuando le doy a varios nombre siempre me pinta encima e creado un array en $_SESSION para que me guarde los seleccionados y desde ahi me haga una consulta.
El problema es que siempre me pinta en la misma posicion en la posicion 0 y no soy capaz de hacer que avanze si me pueden ayudar se lo agradeceria.
Un saludo y gracias!!
  #2 (permalink)  
Antiguo 04/06/2013, 10:34
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con $_SESSION

Empieza por postear el código que te da problemas, salu2.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 05/06/2013, 02:23
 
Fecha de Ingreso: junio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Tienes toda la razon

codigo php
Código PHP:
Ver original
  1. <input type="submit" name="btnAceptar" value="Enviar" onclick="funcEnviar('<?php echo $enviar ?>')"  />
  2.       <script>
  3.       function funcEnviar(){
  4.         <?php $enviar = 1 ?>
  5.              location.href="hoja.php?<?php $enviar ?>=$_GET[$enviar]";
  6.          
  7.       }
  8.       </script>
  9.       <select name="CmbNombre">
  10.       <?php
  11. $query2="SELECT nombre FROM asistentes_nombre order by nombre asc";
  12. $result=mysql_query($query2);
  13. $i=0;
  14.  
  15. while( $row = mysql_fetch_row($result))
  16. {
  17.     echo "<option value=".$row[$i].">".$row[$i]."</option>\n";     
  18.  
  19. }
  20.  
  21. echo "</select>";
  22. echo "<br>";
  23. echo "<br>";
  24. echo "<br>";
  25.  
  26. print_r ($confirmado);
  27.  
  28. if ($enviar == 1){
  29. $nombre= $_REQUEST['CmbNombre'];
  30. //$confirmado[] = $nombre;  
  31. //Se guarda aqui porque asi se el valor seleccionado que es $nombre
  32. array_push($confirmado,$nombre);
  33. echo "ENVIADO";
  34. $enviar = 0;
  35. }
  36.  
  37. $_SESSION['Confirmados'][]= $nombre;
  38.  
  39. for($i=0;$i<count($_SESSION['Confirmados']);$i++)
  40.    {
  41.     echo $_SESSION['Confirmados'][$i];
  42.    }
  43. ?>

me falla al final siempre guarda y sobreescribe la misma posicion
  #4 (permalink)  
Antiguo 05/06/2013, 02:34
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con $_SESSION

Si quieres que sea múltiple tendrías que ponerle
<select name="CmbNombre[]" multiple="multiple">

Y después en php tratar CmbNombre como un array, que en este caso es lo que es, si no le pones los [] solo te mandara uno de ellos.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #5 (permalink)  
Antiguo 05/06/2013, 02:49
 
Fecha de Ingreso: junio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Puedes explicarlo un poco mas??Gracias!!
  #6 (permalink)  
Antiguo 05/06/2013, 02:56
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con $_SESSION

Los select normalmente envían solo el ultimo valor indicado, para que puedan enviar mas de un valor necesitas "convertirlo" en un array, ya que un array bajo un mismo nombre tiene varios valores dentro.
Bien para convertir un select múltiple en un array tienes que ponerle en el nombre los corchetes [] así cuando lo obtengas desde PHP con $NombreArray = $_POST['NombreSelect']; puedas procesar $NombreArray como un array cualquiera de PHP.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #7 (permalink)  
Antiguo 05/06/2013, 03:03
 
Fecha de Ingreso: junio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Mi problema mio no es la seleccion ya que con mi codigo al selecionar uno y darle a enviar me lo envia y me sale hasta y todo bien. el proble es cuando le doy a otro y a enviar, ahi me pisa el que ya habia enviado.¿Como puedo hacer para que se guarde el ultimo y no pise al primero?.Gracias
  #8 (permalink)  
Antiguo 05/06/2013, 03:10
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con $_SESSION

El <select name="CmbNombre"> no es múltiple, por eso siempre te va a marcar 1 solo.

Si le pones como múltiple, en el ejemplo que te puse un poco mas arriba tienes el como, y en esta línea:
echo "<option value=".$row[$i].">".$row[$i]."</option>\n";
Le agregas un condicional que compruebe que si ya fue elegida, que le agregue un selected, de tal manera que así, se quede marcada para poder seleccionar otra opción si quieres.
Después con el simple $_POST ya te cogería los 2 valores.

Te estóy preparando un ejemplo sencillo para que lo entiendas.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Última edición por bookmaster; 05/06/2013 a las 03:36
  #9 (permalink)  
Antiguo 05/06/2013, 03:44
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con $_SESSION

A ver te dejo el ejemplo sencillo que te puse, recuerda que esta es la parte teórica, y que tienes que ajustarlo a tus necesidades.

Código:
<?php
if (isset($_POST['Enviado'])){
	$_SESSION['Seleccionados'] = $_POST['Opciones'];
}
echo 'Seleccionados actualmente:';
foreach ($_SESSION['Seleccionados'] as $Elemento){
	echo $Elemento .'<br>';
}
;
?>
<hr>
<p>
<?php 
	$Valores = array('volvo', 'saab', 'opel','audi');
?>
<form name="Ejemplo" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<select name="Opciones[]" multiple>
<?php
	foreach ($Valores as $Valor){
		$Marcar = (in_array($Valor, $_SESSION['Seleccionados']))? ' selected':'';
		echo '<option value="'.$Valor.'"'.$Marcar.'>'.ucfirst($Valor).'</option>';
	}
?>
</select>
<input type="submit" name="Enviado" value="Enviar">
</form>
</p>
Ejemplo funcionando: http://fdw.lohacemosweb.net/bendich.php
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Etiquetas: $_session
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:18.