Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Llenar campos de formulario desde base de datos con varios campos

Estas en el tema de Llenar campos de formulario desde base de datos con varios campos en el foro de PHP en Foros del Web. Hola amigos, Estoy realizando un formulario en php con mysql, se trata de ver en pantalla los registros que están en la base de datos. ...
  #1 (permalink)  
Antiguo 13/08/2018, 15:55
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
Puntos: 2
Llenar campos de formulario desde base de datos con varios campos

Hola amigos,

Estoy realizando un formulario en php con mysql, se trata de ver en pantalla los registros que están en la base de datos. La base de datos es con tablas relacionales. Pero me encuentro en un problema, se supone que el registro son los datos personales de doctores y cada uno de estos cuenta con más de un domicilio. Para la consulta hice lo siguiente:
consulta.php
Código PHP:
include('conexion.php');

$oper=$_SESSION['usuario'];

$consulta mysqli_query($con"SELECT m.*, u.*, d.* FROM medico m, usuarios u, domicilio d WHERE u.usuario='$oper'  and m.id_medico = d.id_medico ORDER BY RAND() limit 1");


$registro mysqli_fetch_object($consulta); 
ahora bien, para los datos del individuo realicé los siguiente:
index.php
Código HTML:
 <div class="registros-cinco" id="">
    
        <tr>
            
            Apellido Paterno:    <td width="335"><input type="text" value="<?php echo $registro->apellido_paterno;?>" placeholder="" id="apellido_paterno" style="width:150px;" name="apellido_paterno" onkeypress="return validarletras(event)" /></td>
            Apellido Materno:    <td width="335"><input type="text" value="<?php echo $registro->apellido_materno;?>" placeholder="" id="apellido_materno" style="width:150px;" name="apellido_materno" onkeypress="return validarletras(event)"/></td>
            Primer Nombre:    <td width="335"><input type="text" value="<?php echo $registro->nombre_1;?>" placeholder="" id="nombre_1" style="width:150px;" name="nombre_1" onkeypress="return validarletras(event)"/></td>
            Segundo Nombre:    <td width="335"><input type="text" value="<?php echo $registro->nombre_2;?>" placeholder="" id="nombre_2" style="width:150px;" name="nombre_2" onkeypress="return validarletras(event)"/></td>
        </tr><br /><br />
        <tr> 
domicilio.php
Código HTML:
<div class="registros-tres" id="agrega-registros-tres">

	<label for="">Domicilio1</label><br />
		<tr>
		    Tipo de Vía   :    <td width="335"><select name="tipo_via" id="tipo_via">
				<option value="<?php echo $registro->tipo_via;?>"><?php echo $registro->tipo_via;?></option>
				<?php 

				 	while ($fila=mysqli_fetch_row($result_abrev_1)) {
				 		echo "<option value='".$fila['0']."'>".$fila['0']."</option>";
				 	}
				  ?>
			    </select></td>
			Calle:    <td width="335"><input type="text" value="<?php echo $registro->calle;?>" placeholder="" id="calle" name="calle"/></td>
			Número exterior:    <td width="335"><input type="text" value="<?php echo $registro->numero_exterior;?>" style="width: 100px;" placeholder="" id="numero_exterior" name="numero_exterior"/></td>
			Número interior:    <td width="335"><input type="text" value="<?php echo $registro->numero_interior;?>" style="width: 100px;" placeholder="" id="numero_interior" name="numero_interior"/></td>
			Referencia:    <td width="335"><input type="text" value="<?php echo $registro->referencia;?>" placeholder="" id="referencia" name="referencia"/></td>
		</tr><br /><br />
		<tr>
		
			Código Postal:    <td width="335"><input type="text" value="<?php echo $registro->codigo_postal;?>" style="width: 50px;" placeholder="" id="codigo_postal" name="codigo_postal" minlength="5" maxlength="5" onkeypress="return justNumbers(event)"/></td>
			<td width="100"><button id="consultar" class="btn btn-primary" name="consultar" onclick="return validarCP();">...</button></td>
			Estado:    <td width="335"><input type="text" value="<?php echo $registro->estado;?>" placeholder="" id="estado" name="estado" readonly="readonly"/></td>
			Municipio:    <td width="335"><input type="text" value="<?php echo $registro->municipio;?>" placeholder="" id="municipio" name="municipio" readonly="readonly"/></td>
			Ciudad:    <td width="335"><input type="text" value="<?php echo $registro->ciudad;?>" placeholder="" id="ciudad" name="ciudad" readonly="readonly"/></td>
			Colonia   :    <td width="335"><select name="colonia" id="colonia" style="width:200px;">
				<option value="<?php echo $registro->colonia;?>"><?php echo $registro->colonia;?></option>
				<?php 

				 	while ($fila=mysqli_fetch_row($sql_query)) {
				 		echo "<option value='".$fila['7']."'>".$fila['7']."</option>";
				 	}
				  ?>
			    </select></td>
		</tr><br><br>
		<tr> 
domicilio2.php
Código HTML:
<div class="registros-ocho" id="agrega-registros-diez">

	<label for="">Domicilio2</label><br />
		<tr>
		    Tipo de Vía   :    <td width="335"><select name="tipo_via_2" id="tipo_via_2" >
				<option value="<?php echo $registro->tipo_via_2;?>"><?php echo $registro->tipo_via_2;?></option>
				<?php 

				 	while ($fila=mysqli_fetch_row($result_abrev_2)) {
				 		echo "<option value='".$fila['0']."'>".$fila['0']."</option>";
				 	}
				  ?>
			    </select></td>
			Calle:    <td width="335"><input type="text" value="<?php echo $registro->calle;?>" placeholder="" id="calle_2" name="calle_2"/></td>
			Número exterior:    <td width="335"><input type="text" value="<?php echo $registro->numero_exterior_2;?>" style="width: 100px;" placeholder="" id="numero_exterior_2" name="numero_exterior_2"/></td>
			Número interior:    <td width="335"><input type="text" value="<?php echo $registro->numero_interior_2;?>" style="width: 100px;" placeholder="" id="numero_interior_2" name="numero_interior_2"/></td>
			Referencia:    <td width="335"><input type="text" value="<?php echo $registro->referencia_2;?>" placeholder="" id="referencia_2" name="referencia_2"/></td>
		</tr><br/><br/>
		<tr>
			Código Postal:    <td width="335"><input type="text" value="<?php echo $reg_cp->codigo_postal_2;?>" style="width: 50px;" placeholder="" id="codigo_postal_2" name="codigo_postal_2" minlength="5" maxlength="5" onkeypress="return justNumbers(event)"/></td>
			<td width="100"><button id="consultar_2" class="btn btn-primary" name="consultar_2" onclick="return validarCPD2();">...</button></td>
			Estado:    <td width="335"><input type="text" value="<?php echo $reg_cp->estado_2;?>" placeholder="" id="estado_2" name="estado_2" readonly="readonly"/></td>
			Municipio:    <td width="335"><input type="text" value="<?php echo $reg_cp->municipio_2;?>" placeholder="" id="municipio_2" name="municipio_2" readonly="readonly"/></td>
			Ciudad:    <td width="335"><input type="text" value="<?php echo $reg_cp->ciudad_2;?>" placeholder="" id="ciudad_2" name="ciudad_2" readonly="readonly"/></td>
			Colonia   :    <td width="335"><select name="colonia_2" id="colonia_2" style="width:200px;">
				<option value="<?php echo $reg_cp->colonia_2;?>"><?php echo $reg_cp->colonia_2;?></option>
				<?php 

				 	while ($fila=mysqli_fetch_row($sql_queryDos)) {
				 		echo "<option value='".$fila['7']."'>".$fila['7']."</option>";
				 	}
				  ?>
			    </select></td>
		</tr><br><br>
		<tr> 
Mi problema es que la consulta solamente llena el domicilio 1 pero no llena el domicilio 2, esto es porque los campos de la base de datos son los siguientes:

calle, numero_exterior, numero_interior, estado, municipio, ciudad y los componentes del domicilio 2 son calle_2, numero_exterior_2, numero_interior_2, estado_, municipio_2, ciudad_2.
No se como recuperarlos con el id de cada uno para poder enviarlos al domicilio 2.
Me pueden ayudar por favor?
Agradezco su apoyo
__________________
paco alonso
  #2 (permalink)  
Antiguo 13/08/2018, 18:49
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Llenar campos de formulario desde base de datos con varios campos

primero que nada no veo que relaciones la tabla usuarios con los otros datos, por consiguiente tu select traera cuantos registros tenga tu tabla usuario y repetira por la cantidad de registros que tendra las otras tablas.

lo siguiente seria que le colocas un LIMIT 1 donde estas limitando tu consulta a que te traiga 1 solo registro.

__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Lider de Proyecto/Desarrollador Banco Local
Espacio Geek - Comunidad Tecnologica
  #3 (permalink)  
Antiguo 14/08/2018, 11:13
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
Puntos: 2
Respuesta: Llenar campos de formulario desde base de datos con varios campos

Cita:
Iniciado por vicram10 Ver Mensaje
primero que nada no veo que relaciones la tabla usuarios con los otros datos, por consiguiente tu select traera cuantos registros tenga tu tabla usuario y repetira por la cantidad de registros que tendra las otras tablas.

lo siguiente seria que le colocas un LIMIT 1 donde estas limitando tu consulta a que te traiga 1 solo registro.
Gracias por tu respuesta, pero seguramente no me expliqué bien; tengo una tabla médico y una tabla domicilio, ambas están ligadas por el id_medico, mi consulta ya cuenta con el Limit 1. Pero mi pregunta va enfocada a saber como llenar el domicilio 2 con los datos que salen de la base de datos, es decir; cuando el médico tiene más de un domicilio, recupero de la tabla medico los datos básicos del médico y de la tabla domicilio recupero el primer domicilio, pero no el segundo porque no se como llenarlo ya que al ser la misma tabla pero; un domicilio va en el renglón de arriba y el segundo domicilio en el renglón de abajo aunque ambos con el mismo id_medico como llave foranea, mi pregunta es como recupero los datos del segundo domicilio para imprimirlos en los campos de domicilio 2, ejemplo:
id_medico 4 nombre: carlos apellido: ramírez
domicilio 1.- id_domicilio: 1 id_medico: 4 calle: av. saturno numero_exterior 21 colonia: alamo
domicilio 2.- id_domicilio: 2 id_medico: 4 calle: nacional numero_exterior: 10 colonia: cero
Ahora bien, mi domicilio 1 cuenta con los campos calle, numero_exterior, colonia y mi domicilio 2 cuenta con los campos calle_2, numero_exterior_2, colonia_2.
La consulta que muestro arriba, solo llena hasta el domicilio 1, pero si tengo dos como en este caso, mi pregunta es ¿como puedo llamar el siguiente renglón con el id_medico para que lo imprima en pantalla?.

Agradezco tu atención y espero con esto me puedas ayudar.
__________________
paco alonso
  #4 (permalink)  
Antiguo 14/08/2018, 15:32
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Información Respuesta: Llenar campos de formulario desde base de datos con varios campos

Cita:
Iniciado por madison_sg Ver Mensaje
Gracias por tu respuesta, pero seguramente no me expliqué bien; tengo una tabla médico y una tabla domicilio, ambas están ligadas por el id_medico, mi consulta ya cuenta con el Limit 1. Pero mi pregunta va enfocada a saber como llenar el domicilio 2 con los datos que salen de la base de datos, es decir; cuando el médico tiene más de un domicilio, recupero de la tabla medico los datos básicos del médico y de la tabla domicilio recupero el primer domicilio, pero no el segundo porque no se como llenarlo ya que al ser la misma tabla pero; un domicilio va en el renglón de arriba y el segundo domicilio en el renglón de abajo aunque ambos con el mismo id_medico como llave foranea, mi pregunta es como recupero los datos del segundo domicilio para imprimirlos en los campos de domicilio 2, ejemplo:
id_medico 4 nombre: carlos apellido: ramírez
domicilio 1.- id_domicilio: 1 id_medico: 4 calle: av. saturno numero_exterior 21 colonia: alamo
domicilio 2.- id_domicilio: 2 id_medico: 4 calle: nacional numero_exterior: 10 colonia: cero
Ahora bien, mi domicilio 1 cuenta con los campos calle, numero_exterior, colonia y mi domicilio 2 cuenta con los campos calle_2, numero_exterior_2, colonia_2.
La consulta que muestro arriba, solo llena hasta el domicilio 1, pero si tengo dos como en este caso, mi pregunta es ¿como puedo llamar el siguiente renglón con el id_medico para que lo imprima en pantalla?.

Agradezco tu atención y espero con esto me puedas ayudar.
es un poco complejo, pero te doy la Idea ya tu Googleas, Primero, usa JOINS, ya que para lo que necesitas es
1----------Datos Medico
+----------Domicilio 1
+----------Domicilo 2
lo que necesitas es que tu Consulta, Retorne los datos del medico, y a la vez retorne todos los Domicilios, podrian ser 3,4,5,n bueno depende si controlas ello, pero en SI , la solucion es:
Obten los datos del medico, luego, en una SubConsulta, ordena que se CONCATENE todos los domicilios con algun caracter SEparador, y este dato que contendra todos los DOMICILIOS los agregas al dato del medico, ya luego en tu vista de diseño si es php, con un EXPLODE no te dara problema alguno, y listo, asunto resuelto,

puedes hacer uso de JOINS que son mas eficientes, pero tambien las SUBQUERYS de mysql funcionan, pero son de menor rendimiento y alguna que otra vez te pueden dar sorpresas
  #5 (permalink)  
Antiguo 20/08/2018, 15:41
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
Puntos: 2
Respuesta: Llenar campos de formulario desde base de datos con varios campos

Forma de solucionarlo:

Se deben hacer dos consultas, una para la primera tabla y la otra para la segunda tabla, esto es porque primero debemos obtener el id a través de la primera consulta para poder asignarlo en la segunda consulta; las consultas deben hacerse por separado ya que si juntamos las dos tablas lo que hace es duplicar la primera tabla con los registros que encuentre de la segunda.

El ejemplo es el siguiente:
Código PHP:
$oper=$_SESSION['usuario'];
//primera consulta
$sql mysqli_query($con"SELECT * FROM medico ORDER BY RAND() LIMIT 1");
while (
$registro mysqli_fetch_row($sql)) {
//metemos el id en una variable
$id $registro['0'];

echo 
"<div class='registros-header' id=''>Consecutivo    <input type='text' style='width:60px;' id='id_medico' name='id_medico' readonly='readonly' value='".$registro['0']."'</input>";
echo 
"vdi   <input value='".$registro['1']."'</input>";
echo 
"nivel validación<input type='text'  style='width:120px;' id='nivel_validacion' name='nivel_validacion' readonly='readonly' value='".$registro['2']."'</input>";
echo 
"estatus<input value='".$registro['3']."'</input>";
echo 
"prefijo<input name='prefijo' id='prefijo' value='".$registro['4']."'</input></div></br></br>";
}
//hacemos la segunda consulta y obtenemos el id de la variable al igualarlo con el id //foraneo de la segunda tabla
$consulta mysqli_query($con"SELECT m.*, u.usuario, d.* FROM medico m, usuarios u, domicilio d WHERE u.usuario = '$oper' AND m.id_medico = d.id_medico AND m.id_medico='$id'");

while (
$fila=mysqli_fetch_array($consulta)) {
                        
                        echo 
"Domicilio"."</br>";
                        echo 
"</br><input value='".$fila['34']."'</input>";
                        echo 
"<input value='".$fila['35']."'</input>";
                        echo 
"<input value='".$fila['36']."'</input>";
                        echo 
"<input value='".$fila['37']."'</input>";

Y eso es todo por si a alguien le sirve.
Saludos.
__________________
paco alonso

Etiquetas: campos, formulario, mysql, query, select, tabla
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 13:28.