Foros del Web » Programando para Internet » PHP »

Combobox anidado - Problema al editar un registro.

Estas en el tema de Combobox anidado - Problema al editar un registro. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/06/2011, 03:24
Avatar de nquerce  
Fecha de Ingreso: febrero-2011
Ubicación: Buenos Aires - Argentina
Mensajes: 5
Antigüedad: 13 años, 2 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.
  #2 (permalink)  
Antiguo 12/06/2011, 08:21
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Combobox anidado - Problema al editar un registro.

Bueno lo que debes hacer es mas orientado a Ajax (o por lo menos lo que yo haría)

1.- en el combo 1 muestra todos los datos y selecciona el que esta en la bd con una condicion ej:

Código PHP:
<?php 
//datos que te dara la base de datos para el combo1
$bd 2
?>
<select name="combo1" id="combo1">
  <option value="1" <?php if ($bd == 1) { ?> selected="selected" <?php ?> >datos1</option>
  <option value="2" <?php if ($bd == 2) { ?> selected="selected" <?php ?> >datos2</option>
  <option value="3" <?php if ($bd == 3) { ?> selected="selected" <?php ?> >datos3</option>
</select>
2.-muestra en el combo 2 los datos que hay guardados sin preocuparte por lo demas

3.- en el combo uno debes agregar una función en el evento OnChange que llame el ajax y modifique los valores del combo 2

4.- ya el resto es colocar un div en el combo2 y hacer la función de Ajax
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O

Etiquetas: combobox, registro, anidados
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 19:30.