Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Llenar campos que vienen de un ciclo while php

Estas en el tema de Llenar campos que vienen de un ciclo while php en el foro de PHP en Foros del Web. Hola a todos, Estoy desarrollando un sistema en el cual se obtienen los valores de los input desde la base de datos. En este sistema ...
  #1 (permalink)  
Antiguo 18/09/2018, 12:34
 
Fecha de Ingreso: noviembre-2015
Mensajes: 49
Antigüedad: 2 años, 11 meses
Puntos: 2
Llenar campos que vienen de un ciclo while php

Hola a todos,

Estoy desarrollando un sistema en el cual se obtienen los valores de los input desde la base de datos. En este sistema lo que hace es mostrar una base de datos de médicos los cuales pueden tener uno, dos o tres domicilios, esto debido a que puede trabajar en un hospital los lunes y martes, en su consultorio los miércoles y jueves y en una farmacia el viernes. Esto no arrojaría como resultado que tiene 3 domicilios. En el código que elaboré realizo una consulta a dos tablas relacionales, una llamada medico y la otra llamada domicilio y lo hice con un while para que si tiene más de un domicilio se pueda imprimir en pantalla, pero al tratar de modificar el domicilio 2 y el domicilio 3 simplemente no me guarda ningún cambio en la base de datos, esto es porque al construirse con el php el input se sigue llamando igual, lo que me imprime son las posiciones de la base de datos, ejemplo:
Código PHP:
<input type='text' id='apellido_paterno' style='width:150px;' name='apellido_paterno' onkeypress='return validarletras(event)' value='".$registro['5']."'</input
En donde el apellido paterno viene de la posición 5 de la base de datos.
En el domicilio:
Código PHP:
$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 
"<div class='registros' id=''><div class='registros-cinco' id=''>Domicilio</br>";
                        

       
echo
"<div class='registros-uno' id=''>tipo de vía<select name='tipo_via' id='tipo_via'>";
                echo
"<option value='".$fila['38']."'>".$fila['38']."</option>";
                
$sql_abrev=mysqli_query($con"SELECT * FROM abreviatura_calle ORDER BY descripcion ASC");
        while (
$abrev=mysqli_fetch_row($sql_abrev)) {    
          echo
" <option value='".$abrev['0']."'>".$abrev['0']."</option>";
           }
               echo
" </select>";
/*--------------------------------------------Domicilio--------------------------------------------------------------------------*/  


/*-------------------------------------------------------------------------------*/
echo"calle<input name='calle' id='calle' value='".$fila['39']."'</input>
                        número exterior<input type='text' name='numero_exterior' id='numero_exterior' style='width:50px;' value='"
.$fila['40']."'</input>
                        número interior<input type='text' name='numero_interior' id='numero_interior' style='width:50px;' value='"
.$fila['41']."'</input>
                        referencia<input type='text' name='referencia' id='referencia' value='"
.$fila['42']."'</input></div></br>";

    echo
"<input type='text' placeholder='Buscar Código Postal' id='bs-prod'/>";  

echo
"<div class='registros-uno' id='agrega-registros'>código postal<input type='text' name='codigo_postal' id='codigo_postal' minlength='5' maxlength='5' onkeypress='return justNumbers(event)' readonly='readonly' style='width:50px;' value='".$fila['codigo_postal']."'</input>
                        colonia<select name='colonia' id='colonia'>
                        <option value='"
.$fila['colonia']."'>".$fila['colonia']."</option>
                        </select>
                        estado<input type='text' name='estado' id='estado' readonly='readonly' value='"
.$fila['estado']."'</input>
                        municipio<input type='text' name='municipio' id='municipio' readonly='readonly' value='"
.$fila['municipio']."'</input>
                        ciudad<input type='text' name='ciudad' id='ciudad' readonly='readonly' value='"
.$fila['ciudad']."'</input></br></br> 
En donde la calle siempre se llama calle, pero cuando tiene más de un domicilio simplemente no puedo modificar lo que hay en el domicilio 2 o en el domicilio 3, por la misma razón. Mi consulta es ¿Cómo puedo hacer para que pueda modificar los domicilios restantes cuando trae más de uno el registro del médico?

Espero haberme dado a entender.
Agradezco su apoyo y su ayuda.
Saludos.
__________________
paco alonso
  #2 (permalink)  
Antiguo 18/09/2018, 22:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.875
Antigüedad: 10 años, 2 meses
Puntos: 2152
Respuesta: Llenar campos que vienen de un ciclo while php

Crea los campos como array, solo agrega corchetes después del nombre:

Código HTML:
Ver original
  1. <input type="text" name="direccion[]" value="">
  2. <input type="text" name="direccion[]" value="">
  3. <input type="text" name="direccion[]" value="">

Luego en PHP;

Código PHP:
Ver original
  1. foreach($_POST['direccion'] as $direccion) {
  2.     // Aquí validas y haces lo que debas hacer con cada campo
  3. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 19/09/2018, 08:41
 
Fecha de Ingreso: noviembre-2015
Mensajes: 49
Antigüedad: 2 años, 11 meses
Puntos: 2
Respuesta: Llenar campos que vienen de un ciclo while php

Cita:
Iniciado por Triby Ver Mensaje
Crea los campos como array, solo agrega corchetes después del nombre:

Código HTML:
Ver original
  1. <input type="text" name="direccion[]" value="">
  2. <input type="text" name="direccion[]" value="">
  3. <input type="text" name="direccion[]" value="">

Luego en PHP;

Código PHP:
Ver original
  1. foreach($_POST['direccion'] as $direccion) {
  2.     // Aquí validas y haces lo que debas hacer con cada campo
  3. }
Gracias por responder, me puedas orientar un poco más, es decir; exactamente en dónde debo poner el foreach? antes o después del while. Ahora bien, mis input en realidad no existen, se construyen al momento de hacer la consulta a la base de datos, son de esta forma:
Código PHP:
<?php
$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
"calle<input name='calle' id='calle' value='".$fila['39']."'</input>
                        número exterior<input type='text' name='numero_exterior' id='numero_exterior' style='width:50px;' value='"
.$fila['40']."'</input>
                        número interior<input type='text' name='numero_interior' id='numero_interior' style='width:50px;' value='"
.$fila['41']."'</input>
                        referencia<input type='text' name='referencia' id='referencia' value='"
.$fila['42']."'</input></div></br>";

}
?>
En sí, no tengo html o por lo menos este no está hasta que lo construye php.
Me podrías hacer un ejemplo con el fragmento de código que te dejé arriba?.
Agradezco mucho tu apoyo.
Saludos.
__________________
paco alonso
  #4 (permalink)  
Antiguo 20/09/2018, 11:41
 
Fecha de Ingreso: noviembre-2015
Mensajes: 49
Antigüedad: 2 años, 11 meses
Puntos: 2
Respuesta: Llenar campos que vienen de un ciclo while php

Listo, lo realicé como me mencionaste y funcionó muy bien, quité el while y lo sustituí con un foreach con un incremento $i, $i++.

Saludos.
__________________
paco alonso



La zona horaria es GMT -6. Ahora son las 12:52.