Foros del Web » Programando para Internet » PHP »

Por qué el primer elemento de un select no se registra hasta elegir otro

Estas en el tema de Por qué el primer elemento de un select no se registra hasta elegir otro en el foro de PHP en Foros del Web. Hola a todos tengo la siguiente pregunta trabajo con este código Código PHP: mysql_select_db ( $database_connection ,  $connection ); $query_profesor  = sprintf ( "SELECT * FROM docentes" ); ...
  #1 (permalink)  
Antiguo 25/11/2011, 11:13
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Por qué el primer elemento de un select no se registra hasta elegir otro

Hola a todos tengo la siguiente pregunta trabajo con este código
Código PHP:
mysql_select_db($database_connection$connection);
$query_profesor =sprintf("SELECT * FROM docentes");
$profesor mysql_query($query_profesor$connection) or die(mysql_error());
$row_profesor mysql_fetch_assoc($profesor);
$totalRows_profesormysql_num_rows($profesor); 
Código PHP:
<select name="profesor" onchange="document.getElementById('id').value=this.value;">
 
<?php   
 
do {    
  
$id $row_profesor['rfcdocente']; 
  
$fullName $row_profesor['Nombre']." ".$row_profesor['ApellidoPaterno']." ".$row_profesor['ApellidoMaterno']; 
  echo 
" <option value='$id'>$fullName</option>"
 } while (
$row_profesor mysql_fetch_assoc($profesor));  
?>  
        </select>
     
        <input type="text" name="id" id="id" value="" size="26" /> </td>

Es una consulta a una tabla, en el select muestra a los profesores al elegir uno , su rfc se registra en el input ... Todo funciona bien solo que no sé por que al elegir el primer nombre de la lista del select en el input no se registra el rfc.... solo si elijo cualquier otro se visualiza, para q me registre el primer rfc que corresponde al primer nombre tengo que elegir primero otro nombre ya sea segundo o tercero....

Que puedo hacer para q en el input el rfc de la primera elección ( nombre 1) se muestre .... sin que tenga que elegir otro nombre (nombre2, ...3..4, etc)
  #2 (permalink)  
Antiguo 25/11/2011, 11:56
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

porque debes setearlo antes de usarlo, por lo que usar do while no sirve, has de usar solo while

¿nunca has hecho una corrida en frío?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 25/11/2011, 12:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Gracias por responder :) podrías explicarme un poco más eso de setearlo jejeje no sé a q te refieres ...
he pensando en ponerle al select el tipico Elegir y de ahi mostrar los nombres pero no se como quedaria en este codigo

<?php
do {
$id = $row_profesor['rfcdocente'];
$fullName = $row_profesor['Nombre']." ".$row_profesor['ApellidoPaterno']." ".$row_profesor['ApellidoMaterno'];
echo " <option value='$id'>$fullName</option>";
} while ($row_profesor = mysql_fetch_assoc($profesor));
?>

ya q se muestra desde una tabla
  #4 (permalink)  
Antiguo 25/11/2011, 12:27
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 7 meses
Puntos: 15
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

El evento onchange se dispara cuando el valor actual cambia, cuando cargas tu pagina por primera vez el primer valor sera siempre el mismo así que no se dispara el onchange. Te recomiendo dos alternativas:
  1. Poner un primer valor con la descripcion [SELECCIONE UN NOMBRE] con valor 0, y por consiguiente cuando se seleccione esta opción validar para que no haga nada el script.
  2. La otra es que utilizes el evento onClick en lugar del onchange, así siempre que des click en el select se disparara el evento. Si quisieras verte mas detallista tendrías que validar en la llamada de la función si cambia el valor, guardando en una variable el valor anterior.
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM
  #5 (permalink)  
Antiguo 25/11/2011, 12:35
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Cita:
Iniciado por molig Ver Mensaje
El evento onchange se dispara cuando el valor actual cambia, cuando cargas tu pagina por primera vez el primer valor sera siempre el mismo así que no se dispara el onchange. Te recomiendo dos alternativas:
  1. Poner un primer valor con la descripcion [SELECCIONE UN NOMBRE] con valor 0, y por consiguiente cuando se seleccione esta opción validar para que no haga nada el script.
  2. La otra es que utilizes el evento onClick en lugar del onchange, así siempre que des click en el select se disparara el evento. Si quisieras verte mas detallista tendrías que validar en la llamada de la función si cambia el valor, guardando en una variable el valor anterior.
Gracias funciona bien con onClick... solo una pregunta y disculpa que no sepa como se hace jejeje pero al tener el select atos desde la base no se en este codigo donde se agrega Lo de Elegir Opcion

<?php
do {
$id = $row_profesor['rfcdocente'];
$fullName = $row_profesor['Nombre']." ".$row_profesor['ApellidoPaterno']." ".$row_profesor['ApellidoMaterno'];
echo " <option value='$id'>$fullName</option>";
} while ($row_profesor = mysql_fetch_assoc($profesor));
?>
  #6 (permalink)  
Antiguo 25/11/2011, 12:43
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 7 meses
Puntos: 15
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Briss corrida en frio se refiere a que ejecutes manualmente cada sentencia de código que tengas con un conjunto de datos para probar si hará lo que se desea.

mmm en tu problema no veo el caso de hacer una prueba o corrida en frió, otra solución que se me ocurre es que guardes el RFC del primer elemento y lo muestres en el input que tiene el RFC para que al cargar la página siempre se muestre el RFC del primer elemento.
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM
  #7 (permalink)  
Antiguo 25/11/2011, 12:45
 
Fecha de Ingreso: noviembre-2011
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Hola, se que esta pregunta no corresponde al tema, pero como le hago para crear un nuevo tema en este foro? no encuentro la opción
Gracias
  #8 (permalink)  
Antiguo 25/11/2011, 12:47
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 7 meses
Puntos: 15
Información Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

ok, quedaria de la siguiente forma:

Código:
<select name="profesor" onchange="document.getElementById('id').value=this.value;"> 
<option value="0">[SELECCIONA UNA OPCION]</option>

<?php    
 do {     
  $id = $row_profesor['rfcdocente'];  
  $fullName = $row_profesor['Nombre']." ".$row_profesor['ApellidoPaterno']." ".$row_profesor['ApellidoMaterno'];  
  echo " <option value='$id'>$fullName</option>";  
 } while ($row_profesor = mysql_fetch_assoc($profesor));   
?>   

</select>
si lo haces de esta forma ya no necesitas el evento OnClick.
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM
  #9 (permalink)  
Antiguo 25/11/2011, 12:55
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Cita:
Iniciado por molig Ver Mensaje
ok, quedaria de la siguiente forma:

Código:
<select name="profesor" onchange="document.getElementById('id').value=this.value;"> 
<option value="0">[SELECCIONA UNA OPCION]</option>

<?php    
 do {     
  $id = $row_profesor['rfcdocente'];  
  $fullName = $row_profesor['Nombre']." ".$row_profesor['ApellidoPaterno']." ".$row_profesor['ApellidoMaterno'];  
  echo " <option value='$id'>$fullName</option>";  
 } while ($row_profesor = mysql_fetch_assoc($profesor));   
?>   

</select>
Gracias, gracias he dejado el onClick y funciona igual que onchange ... es necesario q lo cambie o nop????

Gracias otra vez me haz salvado la vida!!!!

si lo haces de esta forma ya no necesitas el evento OnClick.
  #10 (permalink)  
Antiguo 25/11/2011, 12:58
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Cita:
Iniciado por els_tkm Ver Mensaje
Hola, se que esta pregunta no corresponde al tema, pero como le hago para crear un nuevo tema en este foro? no encuentro la opción
Gracias
Hola para crear un nuevo tema baja hasta el ultimo tema del lado izquierdo (al otro extremo de las pag) hay un icono que dice crear nuevo tema da clic ahi :)
  #11 (permalink)  
Antiguo 25/11/2011, 13:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

por favor!! nada tiene que ver con Javascript, el problema es que usa una variable sin setearla (establecerla, asignarle valor o como le llamen), porque está usando un ciclo do while cuando debería usar un while.

claro que esto no sucedería si se tuvieran nociones básicas de programación, he allí lo de la corrida en frío, en donde se ve la verdadera diferencia entre las estructuras do while y while
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #12 (permalink)  
Antiguo 25/11/2011, 13:31
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Cita:
Iniciado por maycolalvarez Ver Mensaje
por favor!! nada tiene que ver con Javascript, el problema es que usa una variable sin setearla (establecerla, asignarle valor o como le llamen), porque está usando un ciclo do while cuando debería usar un while.

claro que esto no sucedería si se tuvieran nociones básicas de programación, he allí lo de la corrida en frío, en donde se ve la verdadera diferencia entre las estructuras do while y while
Con los cambios q hice gracias a molig funciona no se porque te alteras tanto?????
  #13 (permalink)  
Antiguo 25/11/2011, 14:13
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 7 meses
Puntos: 15
Sonrisa Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

te entiendo maycolalvarez lo que intentas decir pero no tiene ningún error el código, si la codificacion de Briss no tuviera antes del do la sentencia:

$row_profesor = mysql_fetch_assoc($profesor);

marcaria un error o si la instrucción SQL regresara ningún registro solo ahí estaria de acuerdo, segundo como dice Briss: no te alteres, su problema básicamente puede solucionarse con JavaScript, el poner la siguiente instruccion como dices:

Código PHP:
while ($row_profesor mysql_fetch_assoc($profesor)); {     
  
$id $row_profesor['rfcdocente'];  
  
$fullName $row_profesor['Nombre']." ".$row_profesor['ApellidoPaterno']." ".$row_profesor['ApellidoMaterno'];  
  echo 
" <option value='$id'>$fullName</option>";  
 } 
no le corregiría el problema seguiría igual y al contrario se iría al segundo registro saltando el primero ya que anterior a ello tiene una linea: $row_profesor = mysql_fetch_assoc($profesor);
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM
  #14 (permalink)  
Antiguo 25/11/2011, 14:20
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

de igual forma, con do while no es eficiente y eso es lo que corresponde al lado de PHP, si con ello el error persistiera le hubiese indicado que el error es del lado del cliente, saludos.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #15 (permalink)  
Antiguo 25/11/2011, 17:08
 
Fecha de Ingreso: noviembre-2011
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Cita:
Iniciado por Briss Ver Mensaje
Hola para crear un nuevo tema baja hasta el ultimo tema del lado izquierdo (al otro extremo de las pag) hay un icono que dice crear nuevo tema da clic ahi :)
Agradezco la respuesta, pero no lo encuentro :S ni con el 'find' del explorador. Hay que cumplir cierto perfil o tener cierta antigüedad para poder crear un nuevo tema?
  #16 (permalink)  
Antiguo 25/11/2011, 17:12
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Por qué el primer elemento de un select no se registra hasta elegir otro

Cita:
Iniciado por els_tkm Ver Mensaje
Agradezco la respuesta, pero no lo encuentro :S ni con el 'find' del explorador. Hay que cumplir cierto perfil o tener cierta antigüedad para poder crear un nuevo tema?
el botón está ubicado en las esquina superior izquierda de cada Foro o Sub-foro, y como es una imágen no la puedes buscar, tendrás que dirigirte al foro correspondiente para que aparesca porque en el hilo no aparece:

foro PHP -> http://www.forosdelweb.com/f18
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: elegir, mysql, primer, select, sql, tabla
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 05:06.