entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema con Select, que me de por default la opción que esta guardada en la bd

hola a todos, tengo este problema, y es que tengo este select

echo "<td>
                   <select name='rm_".$counter."' style='width: 60px'>";

                    $sql_="SELECT id_manager,signum FROM dbo.manager WHERE id_manager<>73  ORDER BY signum";
                     $rs_=odbc_exec($connection,$sql_);
                      while (odbc_fetch_row($rs_))
                                   {
                         echo "<option value='".odbc_result($rs_,"id_manager")."'>".strtolower(odbc_result($rs_,"signum"))."</option>";
                                   }

                echo "  </select></td>";

Este select me aparece cuando el usuario quiere modificar la información que se tiene, pero este campo se puede modificar o no, el problema es que si no lo modifica por default inicia con una opción y es con la que se hace el update, no se si me estoy dando a entender, pero si me pueden ayudar se los agradecería mucho.

0voto

white comentado

No logro entender que es lo que deseas hacer con el select, deseas mostrar una opcion por default? En que columna/tabla guardas la opcion por default? Tiene relacion con id_manager?

1voto

rach comentado

hola y gracias por contestar, esa tabla es un catalogo que tengo pero yo estoy guardando en otra tabla el manager correspondiente a la persona, quiero que me deje por defecto en el select, el valor guardado en BD, solo que esta tabla se relaciona con el catalogo, tengo una idea de que primero busco en la tabla donde se guardan los datos generales, que manager le asignaron, eso guardarlo en una variable y despues hacer algo asi

$sqla="select [rm] from  [RIA].[dbo].[resource_tracking] where [id_resource]='$recurso'";
                    $rsa=odbc_exec($connection,$sqla);
                    $rm=odbc_result($rsa,"rm");  -------- esta variable compararla

$sql="SELECT id_manager,signum FROM dbo.manager WHERE id_manager<>73  ORDER BY signum";
                     $rs=odbc_exec($connection,$sql);
                          while (odbc_fetch_row($rs))
                                 {
                    echo "<option value='".odbc_result($rs,"id_manager")."'  if  odbc_result($rs,"id_manager")=$rm selected>".strtolower(odbc_result($rs,"signum"))."</option>";
                                  }

o algo como este ejemplo pero no se bien como ponerlo en lo que ya tengo

<option value="" <?php if($estado=="baja") echo "selected";?>>Baja</option> 

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @rach,

en HTML para preseleccionar un OPTION dentro de un SELECT, la sintaxis es la siguiente:

<select ... >
  <option value="1">valor 1</option>
  <option value="2">valor 2</option>
  <option value="3" selected>valor 3</option>
  <option value="4">valor 4</option>
</select>

es decir, se le agrega el atributo selected al option que quieras por default.

En tu caso, podrías hacer algo como:

$sqla="select [rm] from  [RIA].[dbo].[resource_tracking] where [id_resource]='$recurso'";
                    $rsa=odbc_exec($connection,$sqla);
                    $rm=odbc_result($rsa,"rm");  -------- esta variable compararla

$sql="SELECT id_manager,signum FROM dbo.manager WHERE id_manager<>73  ORDER BY signum";
                     $rs=odbc_exec($connection,$sql);
                          while (odbc_fetch_row($rs)) {
                             $selected='';
                             if ( odbc_result($rs,"id_manager") == $rm) {
                                 $selected=" selected ";
                             }
                    echo "<option value='".odbc_result($rs,"id_manager")."$selected>".strtolower(odbc_result($rs,"signum"))."</option>";
                          }

Es decir, dentro del while comparás el valor que se va a mostrar con el guardado para ese dato, y en caso de coincidir, agregás la palabra selected al option.

Saludos cordiales!

0voto

rach comentado

si me funcionó muchas gracias!

0voto

rach comentado

Solo tengo otro problema, la persona igual puede tener dos managers diferentes, y cuando muestro la información de la misma persona pero con el proyecto diferente, ya no funciona asi :(

0voto

Leonardo-Tadei comentado

A ver...

En la variable $rm tenés que tener el dato que querés seleccionar por default para cada situación.
En la query que se ejecuta en el WHILE que genera los options, tenés que tener todos los posibles valores que se puedan seleccionar. En este caso, siempre el resultado de la query del WHILE va a contener el valor de $rm, que es el valor actual para esa pantalla.

Si una persona puede tener 2 managers diferentes, uno por cada proyecto, el valor de $rm tiene que salir del manager del proyecto, no del manager de la persona.

Tu problema pasó a ser de querys o de normalización de la DB, y yo no de como preseleccionar un valor.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta