Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2011, 03:24
Avatar de nquerce
nquerce
 
Fecha de Ingreso: febrero-2011
Ubicación: Buenos Aires - Argentina
Mensajes: 5
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Combobox anidado - Problema al editar un registro.

En una tabla de MySql tengo datos de empleados, con campos para nombre, cuil, sueldo, fecha de ingreso etc, los cuales cargo desde un form con textbox. Tambien tengo dos campos, convenio y categoria, los cuales son dependientes y los cargo desde un juego de dos combobox anidados. Depende el convenio seleccionado, obtengo las opciones de la categoria. Tanto los convenios como las categorias estan guardadas en una tabla.

El alta la puedo realizar sin problemas, pero el tema es que el usuario tiene la opcion de editar los datos de cada empleado, para esto uso un formulario identico, pero que en ves de un insert hace un update. Y aca tengo el problema:

Cuando voy al form de editar empleado, no tengo el form en blanco, sino que tomo los datos que le corresponden a ese registro y con eso relleno los textbox, pero no logro conseguir que se seleccionen las opciones de los combos como los tengo en la tabla.

En realidad en el primer combo consigo traer la seleccion que guarde anteriormente, pero en el segundo (el que se rellena de manera dinamica) no. Como puedo hacer?

Les copio parte del codigo:
Form para editar:
Código HTML:
 
<form action="<?php echo $editFormAction; ?>" method="POST" 
name="form1" id="form1" 
onsubmit="MM_validateForm('nombre_empl','','R','apellido_empl','','R','diaalta_empl','','NinRange1:31','mesalta_empl','','NinRange1:12','anioalta_empl','','RisNum','sueldo_empl','','RisNum','sueldo_cent_empl','','RisNum');return 
document.MM_returnValue">
 
 
  <table width="100%" border="0" align="center" cellpadding="3" 
cellspacing="0">
 
 
    <tr valign="baseline">
 
 
      <td colspan="2" align="left" nowrap="nowrap" 
class="tablatop">Modificacion de Datos del Empleado
 
 
        <input name="cuit_prefijo" type="hidden" 
id="cuit_prefijo" value="<?php echo $row_Padron['cuit_prefijo']; ?>" 
/>
 
 
        <input name="cuit_dni" type="hidden" 
id="cuit_dni" value="<?php echo $row_Padron['cuit_dni']; ?>" />
 
 
        <input name="cuit_subfijo" type="hidden" 
id="cuit_subfijo" value="<?php echo $row_Padron['cuit_subfijo']; ?>" 
/>
 
 
        <input name="id_empresa" type="hidden" 
id="id_empresa" value="<?php echo $row_Padron['id_empresa']; ?>" />
 
 
        <input name="id_empl" type="hidden" 
id="id_empl" value="<?php echo $row_Empleados['id_empl']; ?>" 
/></td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">CUIL:</td>
 
 
      <td class="tablabody"><input 
name="cuil_prefijo" type="text" id="cuil_prefijo" value="<?php echo 
$row_Empleados['cuil_prefijo']; ?>" size="2" maxlength="2" />
 
 
-        
 
 
<input name="cuil_dni" type="text" id="cuil_dni" value="<?php echo 
$row_Empleados['cuil_dni']; ?>" size="8" maxlength="8" /> 
 
 
-
 
 
      <input name="cuil_subfijo" type="text" 
id="cuil_subfijo" value="<?php echo $row_Empleados['cuil_subfijo']; ?>" 
size="1" maxlength="1" /> 
 
 
      (Anteriormente <?php echo 
$row_Empleados['cuil_prefijo']; ?>-<?php echo $row_Empleados['cuil_dni']; 
?>-<?php echo $row_Empleados['cuil_subfijo']; ?>)</td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Nombre:</td>
 
 
      <td class="tablabody"><input 
name="nombre_empl" type="text" id="nombre_empl" value="<?php echo 
$row_Empleados['nombre_empl']; ?>" size="50" maxlength="50" 
/></td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Apellido:</td>
 
 
      <td class="tablabody"><input 
name="apellido_empl" type="text" id="apellido_empl" value="<?php echo 
$row_Empleados['apellido_empl']; ?>" size="50" maxlength="50" 
/></td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Fecha de alta:</td>
 
 
      <td class="tablabody"><input 
name="diaalta_empl" type="text" id="diaalta_empl" value="<?php echo 
$row_Empleados['diaalta_empl']; ?>" size="2" maxlength="2" />
 
 
        /
 
 
        <input name="mesalta_empl" type="text" 
id="mesalta_empl" value="<?php echo $row_Empleados['mesalta_empl']; ?>" 
size="2" maxlength="2" />
 
 
        /
 
 
        <input name="anioalta_empl" type="text" 
id="anioalta_empl" value="<?php echo $row_Empleados['anioalta_empl']; ?>" 
size="4" maxlength="4" />
 
 
        Formato dd/mm/aaaa</td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Convenio:</td>
 
 
      <td class="tablabody"><select 
name="convenio_empl" id="convenio_empl" >
 
 
          <option  class="no" value="0" 
<?php if (!(strcmp(0, $row_Empleados['convenio_empl']))) {echo 
"selected=\"selected\"";} ?>>Seleccionar</option>
 
 
          <?php
 
 
do {  
 
 
?>
 
 
          <option  class="si" 
value="<?php echo $row_Recordset1['convenio']?>"<?php if 
(!(strcmp($row_Recordset1['convenio'], $row_Empleados['convenio_empl']))) {echo 
"selected=\"selected\"";} ?>><?php echo 
$row_Recordset1['convenio']?></option>
 
 
          <?php
 
 
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
 
 
  $rows = mysql_num_rows($Recordset1);
 
 
  if($rows > 0) {
 
 
      mysql_data_seek($Recordset1, 0);
 
 
   $row_Recordset1 = mysql_fetch_assoc($Recordset1);
 
 
  }
 
 
?>
 
 
        </select>
 
 
      </td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Categor&iacute;a:</td>
 
 
      <td class="tablabody"><select 
name="categoria_empl" id="categoria_empl">
 
 
          <option  class="no" 
value="0">Seleccionar</option>
 
 
        </select>
 
 
      </td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Remuneraci&oacute;n</td>
 
 
      <td class="tablabody"><input 
name="sueldo_empl" type="text" id="sueldo_empl" value="<?php echo 
$row_Empleados['sueldo_empl']; ?>" size="8" maxlength="8" />
 
 
        ,
 
 
        <input name="sueldo_cent_empl" 
type="text" id="sueldo_cent_empl" value="<?php echo 
$row_Empleados['sueldo_cent_empl']; ?>" size="2" maxlength="2" /> 
 
 
        (B&aacute;sico + Premios + Hs Extras 
etc)</td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">Estado:</td>
 
 
      <td class="tablabody"><select 
name="activo">
 
 
          <option value="Activo" 
selected="selected" <?php if (!(strcmp("Activo", $row_Empleados['activo']))) 
{echo "selected=\"selected\"";} ?>>Activo</option>
 
 
          <option value="Inactivo" <?php 
if (!(strcmp("Inactivo", $row_Empleados['activo']))) {echo 
"selected=\"selected\"";} ?>>Inactivo</option>
 
 
        </select>
 
 
      </td>
 
 
    </tr>
 
 
    <tr valign="baseline">
 
 
      <td width="200" align="right" nowrap="nowrap" 
class="tablabody">&nbsp;</td>
 
 
      <td class="tablabody"><input type="submit" 
value="Guardar Datos de Empleado" 
onclick="valcuit(concatenar(cuil_prefijo.value,cuil_dni.value,cuil_subfijo.value))"/></td>
 
 
    </tr>
 
 
  </table>
 
 
  <input type="hidden" name="MM_update" value="form1" />
 
 
</form> 
Script para rellenar (sin hacer submit, por que submit lo uso para validar el form con MM_validateForm de DreamWeaver):
Código HTML:
<script>
$(document).ready(function(){
 $("#convenio_empl").change(function(){
  $.post("../inc/carga_select2.php",{ id:$(this).val() },function(data){$("#categoria_empl").html(data);})
 });
})
</script> 
Y el script de php que uso para hacer el select del 2do combo:
Código PHP:
<?php require_once('../../Connections/bapro.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}
$colname_Recordset1 "-1";
if (isset(
$_POST['id'])) {
  
$colname_Recordset1 $_POST['id'];
}
mysql_select_db($database_bapro$bapro);
$query_Recordset1 sprintf("SELECT * FROM cct WHERE convenio = %s"GetSQLValueString($colname_Recordset1"text"));
$Recordset1 mysql_query($query_Recordset1$bapro) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
  <option  class="no" value="0">Seleccionar</option>
<?php
do {  
?>
  <option  class="si" value="<?php echo $row_Recordset1['categoria']?>"><?php echo $row_Recordset1['categoria']?></option>
  <?php
} while ($row_Recordset1 mysql_fetch_assoc($Recordset1));
  
$rows mysql_num_rows($Recordset1);
  if(
$rows 0) {
      
mysql_data_seek($Recordset10);
   
$row_Recordset1 mysql_fetch_assoc($Recordset1);
  }
mysql_free_result($Recordset1);
?>
Se daran cuenta que me apoyo en DReamWeaver. De ajax, poco y nada, pero tomo en cuenta sugerencias para cambiar la forma de hacer los conbos anidados si me ayudan a implementarlo. De paso aprendo.

Gracias de antemano.