PHP - llenar un combo con información registrada desde otro combo para su edicion

 
Vista:
sin imagen de perfil

llenar un combo con información registrada desde otro combo para su edicion

Publicado por Daniel (4 intervenciones) el 31/07/2013 03:19:54
Hola amigos de la LWP cordial saludo a todos, me dirijo a ustedes con una pregunta que tengo sobre unos combo dependientes: resulta que estoy desarrollando una aplicación en la cual uso el patrón MVC como estructura y es para el registro y control de notas de una institución, el problema es que para registrar una persona debo tomar todos los datos de ella desde el departamento, municipio y la zona donde vive, estos son los select dependientes para el registro ya hice todo, es decir ya cargue los deptos los municipios y las zonas, uno va enlazado con el otro todo funciona bien, pero resulta que estos datos dado el caso tengo que modificarlos y pues aquí es donde no se como hacerlo, es decir tengo dos vistas una para el ingreso de la persona y otra para editarla en este ultimo quiero que me salgan los combos de nuevo, pero que ya tengan la información de la persona registrada, osea que me salga el depto, municipio y zona que registro al inicio, esto como información para saber donde vivía y pues como dije dado el caso seleccionar otra ubicación y guardarla de nuevo, espero haberme hecho entender y desde ya agradezco enormemente su colaboración.

PD: los combos los estoy cargando con un archivo js que lo que hace es refrescarme la información que contiene un div en mi vista persona y el envió de la información uso ajax esta es la vista de persona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<php>
<form name="frmRegistrar" action="../../controllers/persona/Cpersona.php" method="POST" id="frmRegistrar">
<div align="center">
<fieldset style="width: 450px; height: 550px; background: url('/stwSantamaria/public/images/Fondo_1.png') repeat">
<br>
 
 
 
 
<strong>Pais:</strong>
<select name="pais" disabled="">
<option>Colombia</option>
<option></option>
</select><br>
 
<strong>Departamento:</strong>
<select name="depto" id="departamento" onchange="from(document.frmRegistrar.depto.value, 'municipios', 'municipio.php');">
<option value="0">Seleccione</option>
<?php while ($fila = mysql_fetch_array($departamentos)) { ?>
<option value="<?php echo $fila['cod_departamento'] ?>"><?php echo $fila['nom_dep'] ?></option>
<?php } ?>
</select>
 
<div id="municipios">
 
</div>
 
<div id="zonas">
 
</div>
 
 
<div align="center">
 
 
<table width="324">
<tr>
<td><strong>Documento</strong></td>
<td>
<?php $tiDoc->getDocumento() ?> </td>
</tr>
<tr>
<td><strong>Numero de documento</strong></td>
<td><input id="numero_doc" placeholder="Aqui número..." name="ndocumento_usuario"/></td>
</tr>
<tr>
<td><strong>Nombre</strong></td>
<td><input id="nombre" placeholder="Aqui nombre..." name="nombre_usuario" /></td>
</tr>
<tr>
<td><strong>Apellido</strong></td>
<td><input id="apellido" placeholder="Aqui apellido..." name="apellido_usuario"/></td>
</tr>
<tr>
<td><strong>Fecha de nacimiento</strong></td>
<td><input id="fecha_nacimiento" type="date" name="fecha" id="fecha" value="2013-02-21" style="font-family: Arial; font-size: 10pt"/></td>
</tr>
<tr>
<td><strong>Edad</strong></td>
<td><input id="edad" placeholder="Aqui edad..." name="edad_usuario"/></td>
</tr>
<tr>
<td><strong>Sexo</strong></td>
<td>
<select name="" id="cod_sexo">
<option value="1">Masculino</option>
<option value="2">Femenino</option>
</select> </td>
</tr>
<tr>
<td><strong>Telefono</strong></td>
<td><input id="telefono" placeholder="Aqui teléfono..." name="telefono_usuario"/></td>
</tr>
<tr>
<td><strong>Direccion</strong></td>
<td><input id="direccion" placeholder="Aqui dirección..." name="direccion_usuario"/></td>
</tr>
<tr>
<td><strong>Correo-e</strong></td>
<td><input id="correo_electronico" placeholder="Aqui correo..." name="correo_usuario"/></td>
</tr>
</table>
<button type="button" id="" onClick="guardarPersona()">Registrar</button>
<button type="button" onClick="window.location = 'Vlistar.php'">Volver</button>
 
</div>
</div>
</form>
< /php>


Gracias de nuevo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de terra

llenar un combo con información registrada desde otro combo para su edicion

Publicado por terra (62 intervenciones) el 31/07/2013 09:59:25
Hola Daniel,
Ya casi lo tienes solo debes utilizar el CHECKED en el Select/Option.
Es decir:
<option value="valor A" IF (condicion=valor A es igual al Id q tienes en el registro d esta persona ) hago un ECHO en php con "checked">texto a mostrar</option>
Esto mismo para el otro comboX
Si no es muy claro me lo dices...
Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

llenar un combo con información registrada desde otro combo para su edicion

Publicado por Daniel (4 intervenciones) el 31/07/2013 22:37:18
Gracias terra por tu colaboracion..la verdad no entiendo mucho lo que tratas de decirme, que seria para mi el valor A? y el valor checked para que lo uso, por otro lado antes de que me prestaras tu ayuda trate por mi lado y lo que hice fue una consulta que me trajera el depto, municipio y zona de la persona que quiero editar en vista de edicion y pues ya logre poner estos datos en cada select pero cuando ejecuto mi vista me muestra el depto, mun y zona que registre en mi vista de registro pero no logro que me despliegue el resto de departamentos y a su vez los municipios y las zonas en los selects es decir solo logre con la consulta traer cada dato de determinada persona para ponerlo en su respectivo select pero dentro del select departamento no se como desplegar el resto de deptos y esto mismo hacerlo con los municipios lo que hice fue esto:
1
2
3
4
5
<strong>Departamento:</strong>
<select name="depto" id="departamento">
    <option value="<?php echo $pselect[$i]['cod_departamento'] ?>"><?php echo $pselect[$i]['departamento'] ?></option>
    <option value="<?php echo $departamentos['cod_departamento'] ?>"><?php echo $departamentos['nom_dep'] ?></option>
</select>

el primer option que en el que uso el pselect es la consulta que hice para traer los datos de la persona hacia mi vista de edicion y esto hice para los otros selects y si funciona hasta ahi, pero el siguiente option en el que uso departamentos ya no me funciona ya no me muestra los departamentos debajo del primer select....espero me colabores con esto y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de terra

llenar un combo con información registrada desde otro combo para su edicion

Publicado por terra (62 intervenciones) el 31/07/2013 23:40:31
Daniel,
Mil disculpas, me colgué ayudándote a tí y te contesté algo mal. El valor NO Es Checked sino selected='selected'. Resulta que estaba con DOS respuestas al mismo tiempo y me confundí. Mil disculpas.
A ver si te puedo ayudar...
Lo que has hecho es correcto salvo un pequeño detalle. Tienes que hace un consulta para obtener TODOS los Departamente, TODAS los MUNICIPIOS y TODOS las ZONAS, eso por un lado.
Estas consultas son las que deben colocar en:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<php>
<strong>Departamento:</strong>
<select name="depto" id="departamento">
<?php
$consulta = "SELECT cod_departamento, departamento from tbl_name" ; // tbl_name: reemplazar por el nombre REAL de tu TABLA
$resultado = mysql_query( $consulta ) or die( mysql_error() );
 
// aquí te desplegará todos los departamentos y tendrás seleccionado el de`partamente que corresponde al usuario.
while (  $registros = mysql_fetch_array( $resultado ) ) {
='editor_indent'>
<option value="<?php echo $registros['cod_departamento'] ?>" <?php if ( $registros['cod_departamento'] == IdDepartamenteUsuario ) { echo "selected='selected' "; }?> ><?php echo $registros['departamento'] ; ?></option>
}
?>
</select>
</php>


IdDepartamenteUsuario = como desconozco la consulta a la tbl (tabla) de los usuarios, deberías reemplazarlo por ese valor, sino postea la consulta y te ayudo a reemplazarlo.

Comenta si te sirvió...
saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

llenar un combo con información registrada desde otro combo para su edicion

Publicado por Daniel (4 intervenciones) el 01/08/2013 01:21:26
Muchas gracias terra voy a tratar con lo que me pasas cualquier cosa te comento..pero porfa leete ultimo comentario que hice a ver si me hechas una manita ahi te explico mas como es que funciona lo que tengo y de antemano gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

llenar un combo con información registrada desde otro combo para su edicion

Publicado por Daniel (4 intervenciones) el 01/08/2013 01:14:22
Que pena ya halle el problema de que el segundo select que no me desplegaba los deptos y era que no estaba haciendo el recorrido fila = mysql_fetch_array(departamentos) para sacar cada uno de los datos en el select pero antes que nada quiero que me colaboren en esto para saber si me funciona una idea que tengo para solucionar este post:

El problema es que la vista de ingreso_persona funciona bien..y es cierto, pero resulta que la forma en la que hice los combos dependientes es algo "raro", cuando ejecuto mi vista ingreso_persona me aparecen todos los datos de la vista pero me muestra solo un combo que es el de departamento el resto no los muestra solo queda el espacio vacio pero solo me aparece el siguiente combo cuando escojo una opcion del select departamento y aqui si aparece el otro combo que seria el de municipios y esto mismo pasa con la zona, solo me aparece la zona si escojo una opcion del combo municipio de lo contrario no se muestra, lo que hice exactamente fue esto: en la vista ingreso_persona hago esto:
1
2
3
4
5
6
7
<strong>Departamento:</strong>
                        <select name="depto" id="departamento" onchange="from(document.frmRegistrar.depto.value, 'municipios', 'municipio.php');">
                            <option value="0">Seleccione</option>
                            <?php while ($fila = mysql_fetch_array($departamentos)) { ?>
                                <option value="<?php echo $fila['cod_departamento'] ?>"><?php echo $fila['nom_dep'] ?></option>
                            <?php } ?>
                        </select>


departamentos me sirve para traer todos los deptos al select y la parte del onchange hasta la primer coma lo que hace es coger tomar datos del formulario, lo que llega a la segunda coma es el div que voy a refrescar que seria este que se encuentra abajo del select que puse arriba:
1
2
3
<div id="municipios">
 
                        </div>

y de la ultima parte del onchange que es municipio.php en este archivo tengo la consulta y el select de los municipios, asi:

1
2
3
4
5
6
7
<strong>Municipio:</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <select name="municipios" id="cod_municipio" onchange="from(document.frmRegistrar.cod_municipio.value, 'zonas', 'zona.php');">
        <option value="0">Seleccione</option>
        <?php while ($fila = mysql_fetch_array($res)) { ?>
            <option value="<?php echo $fila['cod_municipio'] ?>"><?php echo $fila['nombre'] ?></option>
        <?php } ?>
    </select>


como ven aqui genero el select que es el que voy a poner en el div municipios que puse arriba, lo de "poner el select en el div" lo hace es el archivo js, hasta aqui llega todo, esto es para hacer dependiente deptos con municipios y esto mismo hice con las zonas, pero como dije ese div solo se llena y me aparece en la vista solo cuando escojo una opcion del combo anterior, No se como hacer para que todos los selects me aparezcan sin necesidad de que le de clic a una para que me aparezca el otro quiero que todos esten ahi que se vean he buscado pero no lo logro pienso que es porque el combo de municipio y el combo de zonas los tengo en un archivo php fuera de la vista que despues seran llamados para que aparezcan, pero como hago? espero haberme hecho entender, por favor necesito su ayuda tengo la cabeza hecho un ocho con esto y no me cansare de agradecerles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

llenar un combo con información registrada desde otro combo para su edicion

Publicado por xve (6935 intervenciones) el 01/08/2013 08:47:17
Gracias por comentarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

llenar un combo con información registrada desde otro combo para su edicion

Publicado por wilsonsp (1 intervención) el 11/04/2014 18:41:41
hola.. daniel, tengo una situacion parecida.. em gustaria saber como queda editado el archivo municipio.php, es decir, como recibes el parametro del onchange( document.frmRegistrar.cod_municipio.value).. gracias... soy nuevo en esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de terra

llenar un combo con información registrada desde otro combo para su edicion

Publicado por terra (62 intervenciones) el 01/08/2013 23:43:56
Hola Daniel,
Para que TODOS los
1
SELECT
se llenen con todos LOS DATOS de la Tabla NO condiciones la consulta en una primera FASE con su COMBO dependiente. Hacelo libre sin WHERE, ej.:
1
select * from tbl

y listo!

Luego, cuando quieres asociar según lo seleccionado del COMBO dependiente provocas las consulta con WHERE, sobre el
1
Evento OnChange

ej.:
1
select * from tbl where xxx


Dime si te sirvió...
saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar