Foros del Web » Programando para Internet » PHP »

Combobox: tomar varios campos

Estas en el tema de Combobox: tomar varios campos en el foro de PHP en Foros del Web. Hola amigos Estoy trabajando en extraer información de la base MySQL usando PHP y tengo una Combobox que me permite encontrar el registro deseado. El ...
  #1 (permalink)  
Antiguo 16/10/2007, 20:56
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Combobox: tomar varios campos

Hola amigos
Estoy trabajando en extraer información de la base MySQL usando PHP y tengo una Combobox que me permite encontrar el registro deseado.
El codigo es el siguiente:

<?php
$query="SELECT Usuario,Nombres,Apellidos FROM claves ORDER BY Usuario";
$result=mysql_query($query,$emangal) or die ('Hay error de: '.mysql_error());
echo "<select name='username' size='1' selected=$username>";
while ($aut = mysql_fetch_assoc($result)) {
echo "<option value=".$aut['Usuario'].">".$aut['Usuario']."</option>";
}
echo "</select>";
?>

Con esto tengo dos problemas:
1.- No me funciona que venga seleccionado el registro deseado ($username)
2.- Aparte de tomar el valor del campo Usuario, también necesito tomar los valores de los campos Nombres y Apellidos del registro seleccionado y no se como hacerlo.
Alguien podría por favor ayudarme a solucionar esto?
  #2 (permalink)  
Antiguo 17/10/2007, 05:29
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Combobox: tomar varios campos

Hola Luis

Modifique un poco tu codigo...
Código PHP:

<?php


    $query
="SELECT Usuario,Nombres,Apellidos FROM claves ORDER BY Usuario";

    
$result=mysql_query($query,$emangal) or die ('Hay error de: '.mysql_error());

        echo 
"<select name='username' size='1'>";

            while (
$aut mysql_fetch_array($result)) {
                echo 
"<option value=".$aut['Usuario']." >".$aut['Nombres']." ".$aut['Apellidos']." (".$aut['Usuario'].")</option>";
                                
                                                            
            
            }


        echo 
"</select>";
?>

Para que este seleccionado un registro del combobox

debes hacer
Cita:
<select ... >
<option ..... selected></option>
</select>
Y solo debes hacer un if dentro de tu while con la condicion para la seleccion

Saludos.
__________________
Nuevamente a las pistas ...
  #3 (permalink)  
Antiguo 17/10/2007, 09:31
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Combobox: tomar varios campos

Hola JorgeDX
Gracias por tu ayuda...
Hice la modificación que me has indicado y el While queda asi:

while ($aut = mysql_fetch_assoc($result)) {
if ($aut['Usuario']==$username) {
echo "<option value=".$aut['Usuario']." selected>".$aut['Usuario']."</option>";
}
}

pero ahora me muestra solamente un registro de la tabla (el que tiene el $username actual) en lugar de todos como yo necesito...
además, cómo hago para tomar otros campos de la misma tabla, como Nombres y Apellidos?
Gracias por tu tiempo y ayuda.
  #4 (permalink)  
Antiguo 17/10/2007, 09:45
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Combobox: tomar varios campos

Ocupa este while

Código PHP:
while ($aut mysql_fetch_array($result)) {
                echo 
"<option value=".$aut['Usuario']." >".$aut['Nombres']." ".$aut['Apellidos']." (".$aut['Usuario'].")</option>";
                                
                                                            
            
            } 
para seleccionar una opcion dentro del select es necesario que una y solo una contenga el valor selected. No todas.
__________________
Nuevamente a las pistas ...
  #5 (permalink)  
Antiguo 17/10/2007, 09:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Combobox: tomar varios campos

Cita:
Iniciado por Luis Galdames Ver Mensaje
Hola JorgeDX
Gracias por tu ayuda...
Hice la modificación que me has indicado y el While queda asi:

while ($aut = mysql_fetch_assoc($result)) {
if ($aut['Usuario']==$username) {
echo "<option value=".$aut['Usuario']." selected>".$aut['Usuario']."</option>";
}
}

pero ahora me muestra solamente un registro de la tabla (el que tiene el $username actual) en lugar de todos como yo necesito...
además, cómo hago para tomar otros campos de la misma tabla, como Nombres y Apellidos?
Gracias por tu tiempo y ayuda.
Haz esto dentro del while
Código PHP:
$selected = ( $aut['Usuario']==$username )? 'selected="selected"':'';
echo 
'<option value="'.$aut['Usuario'].'" '.$selected.'>'.$aut['Usuario'].'</option>'
la primera linea es un condicional ternario (creo que se llama asi) y lo que hace es evaluar lo que se encuentra dentro del parentesis.
Si es true, $selected toma como valor el 'selected="selected"', sino tomará ''.
  #6 (permalink)  
Antiguo 17/10/2007, 09:57
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Combobox: tomar varios campos

está bien lo que dices respecto que solo una debe ser la seleccionada... eso mismo es lo que quiero, pero sin el if anterior, el combobox muestra todos los registros de la tabla, y se posiciona en el primero o ultimo registro de la tabla, dependiendo del ORDER BY ... DESC que le aplique... eso está claro, pero lo que quiero hacer es modificar un registro de la tabla, que puede ser el del medio, y para ello necesito que en el select venga seleccionado ese registro, ya que si otro es el seleccionado, cuando pinche en actualizar me cambiará el campo username para aquel seleccionado y que no se modificó...
  #7 (permalink)  
Antiguo 17/10/2007, 10:10
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Combobox: tomar varios campos

Ocupa los scritp anteriores que te pasamos, estoy seguro que con esas lineas de codigo podras hacerlo.

Saludos.
__________________
Nuevamente a las pistas ...
  #8 (permalink)  
Antiguo 17/10/2007, 10:47
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Combobox: tomar varios campos

Si funciona... Muchas gracias a ambos.
Problema numero uno resuelto, ahora si selecciona y muestra toda la tabla...
Ahora me podrían ayudar con el problema dos?
Como tomo otros campos del registro seleccionado, como Nombres y Apellidos?
  #9 (permalink)  
Antiguo 17/10/2007, 10:55
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Combobox: tomar varios campos

Por si alguien está necesitando esta codificación, que si funciona, la agrego a continuación:

<?php
$emangal=conectar();
$query="SELECT Usuario FROM claves ORDER BY Usuario";
$result=mysql_query($query,$emangal) or die ('Hay error de: '.mysql_error());
echo "<select name='email' size='1'>";
while ($aut = mysql_fetch_assoc($result)) {
$selected = ( $aut['Usuario']==$email )? 'selected="selected"':'';
echo '<option value="'.$aut['Usuario'].'" '.$selected.'>'.$aut['Usuario'].'</option>';
}
echo "</select>";
?>

Espero sirva a muchos colegas a futuro.
Con mis agradecimientos a JORGEDX y CLINISBUT
  #10 (permalink)  
Antiguo 17/10/2007, 11:09
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Combobox: tomar varios campos

Los otros campos los tomas con el array $result

haciendo referencia a ellos mediante su nombre o su indice

Código PHP:
$result['Usuario']; 
o
Código PHP:
$result[0]; 
__________________
Nuevamente a las pistas ...
  #11 (permalink)  
Antiguo 17/10/2007, 12:42
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Combobox: tomar varios campos

He usado la indicación que me diste, JORGEDX, pero no toma nada.
Sucede que al pedir un var_dump($result) me dice: resource(8) of type (mysql result)
Porque el array está en $aut pero al pedir un var_dump me dice: bool(false)
He dejado el select de esta forma pero no funciona, porque me trae el nombre del último elemento de la tabla en vez de tomar el seleccionado:

echo "<select name='email' size='1'>";
while ($aut = mysql_fetch_assoc($result)) {
$selected = ( $aut['Usuario']==$email )? 'selected="selected"':'';
echo '<option value="'.$aut['Usuario'].'" '.$selected.'>'.$aut['Usuario'].'</option>';
$nombres=$aut['Nombres'];
$apellidos=$aut['Apellidos'];
$name=$nombres.' '.$apellidos;
}
echo "</select>";

Toma correctamente el Usuario seleccionado, pero Nombres y Apellidos no los toma. He intentado poner las lineas en diferentes lugares y nada. Algo me falta y no lo encuentro...
  #12 (permalink)  
Antiguo 17/10/2007, 12:46
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Combobox: tomar varios campos

La parte del query la extendí para que tambien tome esos dos campos:
$query="SELECT Usuario,Nombres,Apellidos FROM claves ORDER BY Usuario";
$result=mysql_query($query,$emangal) or die ('Hay error de: '.mysql_error());
echo "<select name='email' size='1'>";
while ($aut = mysql_fetch_assoc($result)) {
$selected = ( $aut['Usuario']==$email )? 'selected="selected"':'';
echo '<option value="'.$aut['Usuario'].'" '.$selected.'>'.$aut['Usuario'].'</option>';
$nombres=$aut['Nombres'];
$apellidos=$aut['Apellidos'];
$name=$nombres.' '.$apellidos;
}
echo "</select>";

Ahi está el codigo completo que toma el Usuario correcto pero no los Nombres y Apellidos.
  #13 (permalink)  
Antiguo 17/10/2007, 13:32
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Combobox: tomar varios campos

si te fijas yo use
Código PHP:
mysql_fetch_array 
prueba con eso...
__________________
Nuevamente a las pistas ...
  #14 (permalink)  
Antiguo 17/10/2007, 13:38
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Re: Combobox: tomar varios campos

puedes concatenar y usar explode

saludos
__________________
gerardo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:57.