Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2011, 23:05
Stackado
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
Cambiar el contenido de un <textarea> segun seleccion en un <select>

Hola,

Bueno pues ahora me encuentro tratando de mostrar un valor determinado (almacenado en una BD) en un textarea, segun lo que se seleccione en un elemento <select>.

Cuento con una tabla llamada "codigos_observaciones", donde tengo los campos "cod_observ" y "observ", donde cada "observ" tiene su respectivo "cod_observ"

Veran imagino que lo mas viable es que se haga con AJAX ya que el textarea forma parte de un formulario y debe enviarse al final con todos los datos juntos, pero la verdad mis nociones de AJAX son muy pocas (por no decir nulas), asi que quisiera saber si pueden auxiliarme un poco, dejenme mostrarles como tengo estructurados los elementos con los que voy a trabajar.

El Select esta formado de la siguiente manera:

Código PHP:
Ver original
  1. Cod. Obs.
  2. <br/>
  3. <select name="cod_observ" id="cod_observ" style="width: 100%" size="5">
  4. <?php
  5.        $consulta  = 'SELECT cod_observ FROM codigos_observaciones';
  6.        $resultado = mysql_query($consulta) or die('La consulta fall&oacute;: ' .  mysql_error());
  7.        while($b = mysql_fetch_array($resultado)){
  8.        echo '<option value="'.$b["cod_observ"].'">'.$b["cod_observ"].'</option>';
  9. }
  10. ?>     
  11. </select>

Y mi textarea esta así

Código HTML:
Ver original
  1. Descripción
  2. <br/>
  3. <textarea id="observ" name="observ" cols="20" rows="5"></textarea>

como pueden ver los elementos del select tambien son extraidos de la tabla "codigos_observaciones", lo que significa que al seleccionar cierto elemento solo tendra que extraer el campo "observ" donde "cod_observ" sea igual al criterio de busqueda que envie al seleccionar un elemento del select ya sea con la propiedad Onchange ú Onclick.

Ahora en otro sistema que realize, basandome en un ejemplo que encontre en internet, logre armar una función que con AJAX realizaba una consulta desde otra pagina que mandaba llamar y me mostraba el resultado sin recargar la pagina al presionar Enter, así que supongo que puedo partir de aqui para facilitar las cosas y solo modificarla para que funcione con mi select, podrian darme una mano por favor.

El codigo AJAX es le siguiente:

Código Javascript:
Ver original
  1. /****************Realizacion de consulta por medio de AJAX al presional ENTER Keycode == 13********************/
  2.       function detectkey(evt,obj) {
  3.       keycode = (evt.keyCode==0) ? evt.which : evt.keyCode;
  4.     if (keycode==13){
  5.           if (document.getElementById('NumFolio').value.length == 0){
  6.           alert("Debe completar el formulario");
  7.           document.getElementById('NumFolio').focus();
  8.           return 0;}
  9.           var Sfolio=obj.value + String.fromCharCode(keycode);
  10.           var pagina='externos/filtra.php?Sfolio=S'+Sfolio;
  11.          
  12.           divcontenido = document.getElementById('SSform1');
  13.           ajax=objetoAjax();
  14.           ajax.open("POST", pagina, true);
  15.           ajax.onreadystatechange=function() {
  16.             if (ajax.readyState==4) {
  17.               divcontenido.innerHTML = ajax.responseText
  18.             }
  19.           }
  20.           ajax.send(null);
  21.     }    
  22.       }

Asumiendo que se modifico ya el codigo AJAX, la pagina que realiza la consulta deberia quedar de la siguiente forma:

Código PHP:
Ver original
  1. <?PHP
  2. $conexion = mysql_connect("localhost", "root", "root") or die ("No se puede conectar con el servidor");
  3. $db="bitacora_seguridad"; // el nombre de la base de datos
  4.     mysql_select_db($db, $conexion) or die('No pudo seleccionarse la BD.'); // conectamos con la base de datos
  5.  
  6.     if(isset($_REQUEST['cod_observ'])) {
  7.     $cod_obs = $_REQUEST['cod_observ'];
  8.     $query="SELECT observ
  9.            FROM codigos_observaciones
  10.            WHERE (cod_observ LIKE '$cod_obs')";
  11.      };
  12.      
  13.      $consulta=mysql_query($query,$conexion);
  14. ?>
  15. <?php
  16.     echo"<td>";
  17.         echo"Descripcion";
  18.         echo"<br/>";
  19.         echo"<textarea id='observ' name='observ' cols='20' rows='5'>";
  20.             while($row = mysql_fetch_array($consulta)) {
  21.             $row['observ'];
  22.             }
  23.         echo"</textarea>";
  24.     echo"</td>";
  25. ?>

Realmente solo falta que el AJAX se acomode para que se active al seleccionar alguna opcion del select, realiza la consulta y la muestra en el textarea, podrian ayudarme a modificarlo o darme una idae de como quedaria por favor.