Foros del Web » Programando para Internet » PHP »

problema al actualizar select

Estas en el tema de problema al actualizar select en el foro de PHP en Foros del Web. A ver si consigo explicarme bien, el codigo de la pagina es este: <?php $formulario=($_POST['cursos']); visualizaDatosCurso($formulario); ?> <?php include_once('FuncionesValidadoras.inc'); $Cursos = array( '1 A ESI'=>'1º ...
  #1 (permalink)  
Antiguo 07/03/2009, 10:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
problema al actualizar select

A ver si consigo explicarme bien, el codigo de la pagina es este:

<?php
$formulario=($_POST['cursos']);
visualizaDatosCurso($formulario);
?>
<?php
include_once('FuncionesValidadoras.inc');

$Cursos = array( '1 A ESI'=>'1º Curso de ESI Mañanas',
'1 B ESI'=>'1º Curso de ESI Tardes',
'1 A ASI'=>'1º Curso de ASI Tardes',
'1 A DAI'=>'1º Curso de DAI Tardes',
'1 A GA'=>'1º Curso de GA Tardes',
'1 A AF'=>'1º Curso de AF Tardes',
'2 A AF'=>'2º Curso de AF Tardes');

function visualizaDatosCurso($pcurso){
foreach($Cursos as $indice => $valor){
if($pcurso==$valor){
echo $indice;
}
}

?>
<html>
<head>
</head>
<body>
<form action="CursosYAlumnos.php" method="POST">
Curso:<select name="cursos">
<?php
echo '<option>'.$Cursos['1 A ESI'].'</option>';
echo '<option>'.$Cursos['1 B ESI'].'</option>';
echo '<option>'.$Cursos['1 A ASI'].'</option>';
echo '<option>'.$Cursos['1 A DAI'].'</option>';
echo '<option>'.$Cursos['1 A GA'].'</option>';
echo '<option>'.$Cursos['1 A AF'].'</option>';
echo '<option>'.$Cursos['2 A AF'].'</option>';

?>
</select>
<input type="submit" value="Actualizar Datos">
</form>
</body>
</html>



La cosa es que en el select saldrian los valores del array y cuando eliges 1 y le das al boton de actualizar datos deberia mostrar el indice del valor pero da un error:

Warning: Invalid argument supplied for foreach() in C:\xampplite\htdocs\CursosYAlumnos.php on line 96
  #2 (permalink)  
Antiguo 07/03/2009, 10:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema al actualizar select

Para empezar, $Cursos no podrás usarlo dentro de la función (primero debes colocar global $Cursos dentro de la función para que logres usar una variable en el entorno global), además, deberías imprimir lo que quieres recibir del formulario en el atributo value de los option. Así:
Código html:
Ver original
  1. <option value="valor">Texto</option>
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 07/03/2009, 11:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema al actualizar select

he cambiado la funcion

function visualizaDatosCurso($pcurso){
global $Cursos;
foreach($Cursos as $indice => $valor){
if($pcurso==$valor){
echo $indice;
}
}

pero sigue dando el mismo error

(estoy empezando con php) jeje

EDITO: a ver, igualmente creo que lo estoy ahciendo mal, por que al darle a actualizar recarga toda la pagina, y los demas input de l apagina y demas, los recarga a su valor inicial y tampoco es eso, la idea es que al seleccionar un select escriba a la derecha su indice, pero lo demas de la pagina no lo toque.
  #4 (permalink)  
Antiguo 07/03/2009, 11:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema al actualizar select

Además, estás llamando a visualizaDatosCurso antes que la variable $Cursos sea un array.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 07/03/2009, 11:50
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
vale vale puto amo mira que lo probe pero em daba error de algo y no cuajo, aunque tengo 1 problemilla, al cargar la pagina SIEMPRE se pone el mismo select por defecto, en vez del que has elejido pero weno creo qeu eso si hago un if donde el php que si el que va a escribir es el que a cogido antes escriba <option selected> o algo asi, ahora pruebo y te comento.

Vale no consigo arreglarlo, la cosa es que funciona bien la funcion por que te lo muestra a la derecha, pero en el select SIEMPRE se ve el primero por defecto :S:S

Última edición por GatorV; 08/03/2009 a las 17:55
  #6 (permalink)  
Antiguo 07/03/2009, 13:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema al actualizar select

¿Cuál es el código que estás tratando de usar ahora?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 07/03/2009, 13:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema al actualizar select

es el mismo, lo unico que he puesto

global $Cursos;

en la funcion, y he llamado a la funcion despues de crear los arrays y entonces va bien pero hay 1 problemilla que es ese, que en el select tu elijes 1, te actualiza al pagina, te pone a la derecha su indice y en el select se queda marcado siempre el primero.

Para arregalrlo habia pensado en en el php de abajo escribir:

<?php
if($formulario===($Cursos['1 B ESI'])){
echo '<option selected=\'selected\'>'.$Cursos['1 A ESI'].'</option>';
}
echo '<option>'.$Cursos['1 A ESI'].'</option>';
echo '<option>'.$Cursos['1 B ESI'].'</option>';
echo '<option>'.$Cursos['1 A ASI'].'</option>';
echo '<option>'.$Cursos['1 A DAI'].'</option>';
echo '<option>'.$Cursos['1 A GA'].'</option>';
echo '<option>'.$Cursos['1 A AF'].'</option>';
echo '<option>'.$Cursos['2 A AF'].'</option>';

?>

pero como despues del if te lo machaca pues... no sirve...
  #8 (permalink)  
Antiguo 07/03/2009, 13:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema al actualizar select

En lugar de poner en el if, coloca en el elemento que quieres que esté seleccionado de acuerdo a la condición. Así no lo escribes dos veces.

Otra cosa, todavía no le estás poniendo el atributo value a los option.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 07/03/2009, 13:50
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema al actualizar select

Cita:
Iniciado por David el Grande Ver Mensaje
Otra cosa, todavía no le estás poniendo el atributo value a los option.
No estoy seguro a qeu te refieres, si en el value le pongo el valor del array entre comillas, le pongo la posicion del array y ya escribe el el valor o si escribo el indice entre comillas, y para que lo usare, si me devuelve el valor de la seleccionada en $formulario :S

Cita:
Iniciado por David el Grande Ver Mensaje
En lugar de poner en el if, coloca en el elemento que quieres que esté seleccionado de acuerdo a la condición. Así no lo escribes dos veces.
No estoy seguro de a que te refieres, si a meterlo todo dentro de un if o a que en todos pongo lo de selected y que se ponga segun la opcion que haya escogido :S
  #10 (permalink)  
Antiguo 07/03/2009, 14:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema al actualizar select

Para empezar, con lo del value de los option me refería a que en el HTML deberías tener algo como esto:
Código html:
Ver original
  1. <option value="valor">Texto</option>
Como ya te había explicado en un mensaje anterior. Eso es porque si sólo colocas el texto (y esperas recibirlo en el código que procesa el formulario) tendrás problemas con algunos navegadores.

Lo otro, no sabría decirte exactamente cómo hacerlo ya que no entiendo cuál es la condición en la que debería basarse para saber cuál debería ser la opción predeterminada en el select.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 07/03/2009, 15:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema al actualizar select

echo '<option value=\''.$Cursos['1 A ESI'].'\'>'.$Cursos['1 A ESI'].'</option>';
echo '<option value=\''.$Cursos['1 B ESI'].'\'>'.$Cursos['1 B ESI'].'</option>';
echo '<option value=\''.$Cursos['1 A ASI'].'\'>'.$Cursos['1 A ASI'].'</option>';
echo '<option value=\''.$Cursos['1 A DAI'].'\'>'.$Cursos['1 A DAI'].'</option>';
echo '<option value=\''.$Cursos['1 A GA'].'\'>'.$Cursos['1 A GA'].'</option>';
echo '<option value=\''.$Cursos['1 A AF'].'\'>'.$Cursos['1 A AF'].'</option>';
echo '<option value=\''.$Cursos['2 A AF'].'\'>'.$Cursos['2 A AF'].'</option>';

Esto ya esta arreglado pero bueno, sigo teniendo el problema de que SIEMPRE esta seleccionado el primero de la lista por defecto, he intentado arerglarlo poniendo esto:

if($formulario===$Cursos['1 A ESI']){
echo '<option selected=\'selected\' value=\''.$Cursos['1 A ESI'].'\'>'.$Cursos['1 A ESI'].'</option>';
}
if($formulario===$Cursos['1 B ESI']){
echo '<option selected=\'selected\' value=\''.$Cursos['1 B ESI'].'\'>'.$Cursos['1 B ESI'].'</option>';
}

Pero entonces solo escribe el que elegistes..... :S:S

EDITO: Solucionado, aunque no me gusta la solucion:

if($formulario===$Cursos['1 A ESI']){
echo '<option selected=\'selected\' value=\''.$Cursos['1 A ESI'].'\'>'.$Cursos['1 A ESI'].'</option>';
}else{
echo '<option value=\''.$Cursos['1 A ESI'].'\'>'.$Cursos['1 A ESI'].'</option>';
}
if($formulario===$Cursos['1 B ESI']){
echo '<option selected=\'selected\' value=\''.$Cursos['1 B ESI'].'\'>'.$Cursos['1 B ESI'].'</option>';
}else{
echo '<option value=\''.$Cursos['1 B ESI'].'\'>'.$Cursos['1 B ESI'].'</option>';
}
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 15:47.