Foros del Web » Programando para Internet » PHP »

Problemas con un combo

Estas en el tema de Problemas con un combo en el foro de PHP en Foros del Web. Hola a todos, Tengo un formulario con un combo en PHP, dicho combo contiene el nombre de los departamentos de una empresa. Cada departamento tiene ...
  #1 (permalink)  
Antiguo 04/09/2008, 06:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Problemas con un combo

Hola a todos,

Tengo un formulario con un combo en PHP, dicho combo contiene el nombre de los departamentos de una empresa. Cada departamento tiene su id que lo identifica.

Ahora bien, cuando un usuario escoge un campo del combo, quiero que el nuevo id perteneciente a este departamento tb cambie y que este id se escriba en una caja de texto del formulario.

Lo que he hecho es esto:

1. Creo el combo y le digo que al cambiar ejecute la accion "actualizar servicio" a la que le paso como parametro la variable donde he almacenado el dato.

<select name="combo" size="1" onchange="actualizar_servicio('<?php $idservicio?>')">


2. La funcion actualizar_servicio funciona correctamente pues la he probado metiendole un valor a mano. Sin embargo parece que al hacerlo así no reconoce la variable $idservicio.

¿Alguien puede darme una explicación o decirme cómo podría hacerlo??

Muchas gracias.
  #2 (permalink)  
Antiguo 04/09/2008, 06:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

prueba <?php echo $idservicio; ?>

tb puede ser porque $idservicio está pegado a ?> no distinguiéndose el final del bloque de código $idservicio?>
  #3 (permalink)  
Antiguo 04/09/2008, 06:39
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Ahora he puesto esto:

<select name="combo" size="1" onchange="actualizar_servicio('<?php echo $idservicio; ?>')">


Tampoco funciona, no se por qué.
La variable $idservicio la he declarado así para hacer pruebas y no va:

$idservicio = '99';

Parece que no reconoce el valor de la variable, ya que si pongo esto si que funciona:

<select name="combo" size="1" onchange="actualizar_servicio('99')">

¿Que suece? :SSS
  #4 (permalink)  
Antiguo 04/09/2008, 06:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

ponlo así:

<php echo '<select name="combo" size="1" onchange="actualizar_servicio("'.$idservicio.'")"> '; ?>
  #5 (permalink)  
Antiguo 04/09/2008, 06:55
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Pues tampoco va :S, ahora me escribe todos los valores del combo encima del formulario...

Estoy probando nuevas formas de hacerlo:

<select name="combo" size="1" onchange="BuscarIdServicio(this.value)">

Pero ahora no me reconoce this.value como el contenido del registro seleccionado del combo. ¿Qué hago?
  #6 (permalink)  
Antiguo 04/09/2008, 07:49
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: Problemas con un combo

No he entendido bn el problema! :(
Creo que lo que deseas hacer es q cuando se seleccione un option del select se escriba este valor en un campo de texto y que el valor del option cambie a un valor que pasas como argumento??
Si es esto, deberias colocar el codigo de la funcion a ver si es alli donde esta el error.
De todas formas creo que el select deberia ir asi:

Cita:
<php echo '<select name="combo" size="1" onchange="actualizar_servicio('".$idservicio."')"> '; ?>
Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #7 (permalink)  
Antiguo 04/09/2008, 07:57
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 1 mes
Puntos: 2
Respuesta: Problemas con un combo

Si es un entero, por qué no le quitas las comillas simples (') al parámetro que le pasas la función y pruebas asi:

<select name="combo" size="1" onchange="actualizar_servicio(<?php echo $idservicio; ?>)">

y si necesitaras las comillas, prueba poniendolas de esta forma:

<select name="combo" size="1" onchange="actualizar_servicio(&quot;<?php echo $idservicio; ?>&quot;)">

Creo que una de esas dos te debe servir.
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #8 (permalink)  
Antiguo 04/09/2008, 10:26
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Problemas con un combo

<select name="combo" size="1" onchange="actualizar_servicio('<?php $idservicio?>')">


SI ES ASI COMO LO DICES DEBE SER ASI

Código PHP:
<select name="combo" size="1" onchange="actualizar_servicio('<?php $idservicio?>')">
DONDE actualizar_servicio DEBE SER UNA FUNCION JAVASCRIPT QUE RECIBA UN NUMERO Y ESTA FUNCION OVIAMENTE TIENE QUE HACER UN SUBMIT() A TU FORMULARIO , PARA QUE LA VARIABLE PUEDA SALIR Y ENTRAR LA CAPTURAS CON UN $_REQUEST['idservicio'];

oviamente tu textbox debe estar asi

<input type="text" value="<php echo $_REQUEST['idservicio']; ?>" >
  #9 (permalink)  
Antiguo 05/09/2008, 00:44
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Buenas de nuevo,

Creo que no me he debido expresar nada bien :P

A ver, tengo un formulario como este:



El combo lo relleno con el campo "servicio" de una tabla que contiene estos datos:



Lo que quiero es que al escoger otra opción del combo, también cambie su id en la caja de texto que os he señalado con la flecha roja.

Para conseguir eso, necesito obtener el nuevo valor del combo, buscar su id en la tabla y luego ponerlo en la caja de texto, pero no sé hacerlo.

Hasta ahora lo único que se me ocurre es algo así:


Código HTML:
<select name="combo" size="1" onchange="BuscarIdServicio(this.value)"> 
El primer probleme es que aquí el "this.value" no me devuelve el valor del combo.

Luego en buscaridServicios he puesto:

Código:
 function BuscarIdServicio($descServicio)
    {
        
        $oConexion = new Cl_ConexionPostgreSQL();
        $oConexion->AbrirConexion(ip, user, pass, bd);
        $strsql = "SELECT uid FROM \"td_Servicios\" where servicio = '".$descServicio."'";
        $query = pg_exec($strsql);
        $rs = pg_Fetch_Array($query, 0);
       $idservicio = $rs[0];
        actualizar_servicio($rs[0]);}
Y por ultimo, actualizar_servicio es una funcion javascript que hace esto:

Código:
function actualizar_servicio(elemento){
    document.getElementById('servicio').value = elemento;
}

El resultado final es que no va y llevo ya días pegándome con este código
  #10 (permalink)  
Antiguo 05/09/2008, 01:06
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

en el select no tienes definido el value
  #11 (permalink)  
Antiguo 05/09/2008, 01:09
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Sí, el select ya lo tengo rellenado con los datos de una tabla. ¿A qué te refieres?
  #12 (permalink)  
Antiguo 05/09/2008, 01:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

el select lo realizas así:

<SELECT NAME="nombre" onChange="BuscarIdServicio(this.value)">
<OPTION VALUE="r">R</OPTION>
<OPTION VALUE="g">V</OPTION>
<OPTION VALUE="b">A</OPTION>
</SELECT>

asignas las values a las opciones????
  #13 (permalink)  
Antiguo 05/09/2008, 01:38
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Sí eso ya lo tengo echo mediante un for() que va recorriendo la tabla y va metiendo los values en el combo
  #14 (permalink)  
Antiguo 05/09/2008, 01:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

pues si según comentabas metiéndole el parámetro directamente funcionaba y de la otra manera no, puede ser debido a un problema de los values. asegúrate que los valores son correctos (los introducidos por el for). Puede ser esa la causa del problema.

Última edición por ilie; 05/09/2008 a las 01:49
  #15 (permalink)  
Antiguo 05/09/2008, 01:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Sí, por eso supongo que lo que no está bien es el "this.value" que aparece aquí:

<select name="combo" size="1" onchange="BuscarIdServicio(this.value)">

¿Cómo le paso el contenido del registro seleccionado en el combo??
  #16 (permalink)  
Antiguo 05/09/2008, 02:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

muestrame el codigo del for, seguro que con eso bastará
  #17 (permalink)  
Antiguo 05/09/2008, 02:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

$sqlquery="Select servicio,uid from \"td_Servicios\" ORDER BY servicio";
$result = pg_exec($oConexion->bConexion,$sqlquery);
$filas = pg_num_rows($result);

for($i=0;$i<=$filas-1;$i++){
$row=pg_Fetch_Array($result, $i);
$id = $row['uid'];
$cadena=$row['servicio'];

if ($id== $strServicio) {

?>

<option selected value=" <?php $cadena; ?>" ><?php echo $cadena; ?></option>

<?php

}
else{
?>
<option value=" <?php $cadena; ?>" ><?php echo $cadena; ?></option>

<?php
}
}
?>
  #18 (permalink)  
Antiguo 05/09/2008, 02:19
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

<option selected value=" <?php $cadena; ?>" ><?php echo $cadena; ?></option>

utilizas dos veces $cadena, en value tendrías que poner $id
  #19 (permalink)  
Antiguo 05/09/2008, 02:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con un combo

Ya lo he probado y eso no cambia nada...

Lo que quiero saber es cómo le meto correctamente el valor seleccionado del combo en:

<select name="combo" size="1" onchange="BuscarIdServicio(this.value)">

porque creo que el this.value no me esta funcionando
  #20 (permalink)  
Antiguo 05/09/2008, 02:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Problemas con un combo

prueba con onchange="BuscarIdServicio("this.value")
  #21 (permalink)  
Antiguo 05/09/2008, 08:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problemas con un combo

Creo tienes un error de implementación, si piensas que desde el onChange puedes mandar llamar a la función en PHP estas en un error ya que PHP y Javascript se ejecutan en dos ambitos diferentes.

La forma correcta de hacerlo es implementando AJAX y mandando llamar a la función que necesitas.

Saludos.
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 00:04.