Foros del Web » Programando para Internet » PHP »

Que falta?

Estas en el tema de Que falta? en el foro de PHP en Foros del Web. Hola estoy utilizando este codigo imitando un FAQ que he visto. Pero la variable $_POST["curs"] parece que no se llena a pesar del submit. <select ...
  #1 (permalink)  
Antiguo 28/04/2008, 08:33
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Que falta?

Hola estoy utilizando este codigo imitando un FAQ que he visto. Pero la variable $_POST["curs"] parece que no se llena a pesar del submit.



<select name="curs" id="curs" onchange="this.form.submit()" >
<?php
$consulta= "Select nomcurs from cursos";
$cursos=mysql_query($consulta) or die ("Error al consultar cursos");
if(mysql_num_rows($cursos>0)) {
$row=mysql_fetch_array($cursos);
}
echo "<option value=''>Selecciona</option>";
while ($row=mysql_fetch_array($cursos)) {
echo '<option value='.$row["nomcurs"];
echo ' >';
echo $row["nomcurs"];
echo'</option>';

} ?>
</select>

<select name="Alumne" id="Alumne">
<?php
if (isset($_POST["curs"])) {
echo $_POST["curs"];
$consulta= "Select nom from alumnos where curs='".$_POST["curs"]."'";
$alumnes=mysql_query($consulta) or die ("Error al consultar alumnes");
if(mysql_num_rows($alumnes>0)) {
$row2=mysql_fetch_array($alumnes);
}
echo "<option value=''>Selecciona</option>";
while ($row2=mysql_fetch_array($alumnes)) {
echo '<option value='.$row2["nom"];
echo ' >';
echo $row2["nom"];
echo'</option>';
}
}

else {

echo "<option>--Primer selecciona un curs--</option>";

}?>
</select>


Un saludo, gracias por adelantado.
  #2 (permalink)  
Antiguo 28/04/2008, 08:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Que falta?

Hola Ziyad,

¿Tienes todo dentro de las etiquetas <form></form>?

Saludos.
  #3 (permalink)  
Antiguo 29/04/2008, 01:10
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Cita:
Iniciado por GatorV Ver Mensaje
Hola Ziyad,

¿Tienes todo dentro de las etiquetas <form></form>?

Saludos.

Si si, es que solo he puesto la parte de los selects nada más. Pero en el código completo si que estan.

Gracias de todas formas, ¿alguna otra idea?.
  #4 (permalink)  
Antiguo 29/04/2008, 01:16
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Re: Que falta?

¿Qué tipo de value le llegan a las opciones del selector curs?
  #5 (permalink)  
Antiguo 29/04/2008, 01:26
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Cita:
Iniciado por tunait Ver Mensaje
¿Qué tipo de value le llegan a las opciones del selector curs?
String, el nombre de los cursos y los alumnos.
  #6 (permalink)  
Antiguo 29/04/2008, 01:33
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Re: Que falta?

Deberías entonces encerrar esos valores entre comillas. Si en el string existieran espacios el valor enviado sería sólo los caracteres hasta el primer espacio

fíjate que tal y como lo tienes te estará imprimendo las opciones sin comillas


echo '<option value='.$row["nomcurs"];
echo ' >';

No sé si tal vez pueda ser eso
  #7 (permalink)  
Antiguo 29/04/2008, 01:41
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Cita:
Iniciado por tunait Ver Mensaje
Deberías entonces encerrar esos valores entre comillas. Si en el string existieran espacios el valor enviado sería sólo los caracteres hasta el primer espacio

fíjate que tal y como lo tienes te estará imprimendo las opciones sin comillas


echo '<option value='.$row["nomcurs"];
echo ' >';

No sé si tal vez pueda ser eso
Es muy posible, porque los nombres de los cursos tienen espacios. ¿Cómo debería ponerlo entonces? Gracias por la ayuda
  #8 (permalink)  
Antiguo 29/04/2008, 01:43
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Re: Que falta?

Prueba así


echo '<option value="'.$row["nomcurs"]. '">';

...y me cuentas
  #9 (permalink)  
Antiguo 29/04/2008, 03:24
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Sonrisa Re: Que falta?

Cita:
Iniciado por tunait Ver Mensaje
Prueba así


echo '<option value="'.$row["nomcurs"]. '">';

...y me cuentas
Funciona a la perfección. Infinitas gracias
  #10 (permalink)  
Antiguo 29/04/2008, 03:29
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Re: Que falta?

Estupendo, me alegra que lo solucionaras

Un saludo
  #11 (permalink)  
Antiguo 29/04/2008, 05:19
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Una cosa más. perdón por la molestias pero...:

He añadido, al final del primer select, esto:

if (isset($_POST["curs"])) {
echo '<option selected="selected">'.$_POST["curs"].'</option>';
}

Para que al recargarse la página me salga seleccionado el curs que se eligió. Pero, cuando se recarga, el curso que selecciono me aparece repetido 3 veces en el select.

¿Por qué pasa esto?
  #12 (permalink)  
Antiguo 29/04/2008, 11:23
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Re: Que falta?

Por que la única condición que pones es que la variable $_POST["curs"] exista y eso se cumple en todas las iteraciones. Debes además comparar si el curso que se está imprimiendo es igual al recogido por $_POST

Te pongo un planteamiento

Código:
while(condicion){
  $seleccionado = (isset($_POST["curs"]) and $_POST["curs"] == $row['nombre_curso']) ? ' selected ="selected"' : "";
  echo "<option $seleccionado value=\"".$row["nombre_curso"]. "\">" . $row['nombre_curso'] ."</option>\n";
}
Si no lo entiendes dímelo y te lo explico, aunque creo que se entiende a simple vista
__________________
Javascript Códigos - Bambú difunde
  #13 (permalink)  
Antiguo 30/04/2008, 01:35
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Solucionado, gracias una vez más.
Lo único que no entiendo es el interrogante, pero vamos entiendo perfectamente lo que hace.

Muchísimas gracias.

Última edición por Ziyad; 30/04/2008 a las 02:30
  #14 (permalink)  
Antiguo 30/04/2008, 02:15
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Re: Que falta?

(isset($_POST["curs"]) and $_POST["curs"] == $row['nombre_curso']) ? ' selected ="selected"' : "";


condicion ? si_es_verdadero : si_es_falso

es lo mismo q

if(condicion) si_es_verdadero; else si_es_falso;

creo que era así :)
  #15 (permalink)  
Antiguo 30/04/2008, 02:30
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Ahhh, ya está todo claro entonces.

Muchas gracias a ti tambien.
  #16 (permalink)  
Antiguo 30/04/2008, 02:52
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Re: Que falta?

Es muy práctico para condiciones que han de evaluar una sola sentencia.

Hace un par de años puse un artículo al respecto. Si bien los ejemplos son con javascript la teoría es la misma usada con php. Si le quieres dar un ojo tunait.com/tutoriales/operadorescondicionales.php

Un saludo
  #17 (permalink)  
Antiguo 30/04/2008, 03:17
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Que falta?

Fastástico, me va a venir muy bien.

Gracias
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 20:37.