Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/09/2018, 08:45
madison_sg
 
Fecha de Ingreso: noviembre-2015
Mensajes: 77
Antigüedad: 8 años, 5 meses
Puntos: 2
como guardar en la base de datos con foreach php

Hola a todos,

Estoy desarrollando un formulario php en el cual imprimo en pantalla los campos que vienen de la base de datos, estoy utilizando un foreach con un incremento $i para que cuando el registro tenga más de un domicilio lo pueda imprimir con diferente nombre, a continuación dejo el código de cómo lo imprimo en pantalla:
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'");


                        
$i 1;
            foreach (
$consulta as $fila) {
                
echo
"domicilio id<input  name='id_domicilio$i' id='id_domicilio$i' value='".$fila['id_domicilio']."'</input>";

                        echo 
"<div class='registros' id=''><div class='registros-cinco' id=''>Domicilio</br>";
                        

echo
"calle<input name='calle$i' id='calle$i' value='".$fila['calle']."'</input>
                        número exterior<input type='text' name='numero_exterior$i' id='numero_exterior$i' style='width:50px;' value='"
.$fila['numero_exterior']."'</input>
                        número interior<input type='text' name='numero_interior$i' id='numero_interior$i' style='width:50px;' value='"
.$fila['numero_interior']."'</input>
                        referencia<input type='text' name='referencia$i' id='referencia$i' value='"
.$fila['referencia']."'</input></div></br>"
En el name aumenté la variable $i, (name='calle$i'), funciona perfectamente bien, ya que al revisar en el navegador si le cambia el nombre a calle1, calle2, calle3. Mi problema es que al guardar, no realiza la operación correctamente; es decir, que cuando intento el siguiente código, simplemente no guarda en la base de datos correctamente, en sí se cicla y guarda varias veces el mismo campo. A continuación el código:
Código PHP:
<?php 

include('conexion.php');
if (isset(
$_POST['btn1'])) {
    
$btn $_POST['btn1'];
$op=$_SESSION['usuario'];
if (
$btn "grabar") {

    
#variables de la interfaz-----------------------------------------------------------------------------
    
$i=1;
    
$id_domicilio $_POST['id_domicilio$i'];
    
$calle $_POST["calle$i"];
    
$tipificacion $_POST['marcacion'];
    
$fecha $_POST['fecha'];
    
$bandera =  $_POST['bandera'];
    
$id_medico $_POST['id_medico'];

    
#consulta para recuperar el id_medico de la tabla para compararlo con el input id_medico-------------------
    
$consulta_general=mysqli_query($con"SELECT d.id_domicilio, d.calle, u.id_usuario, cu.id_campania from domicilio d, usuarios u, campania_usuario cu where u.usuario = '$op' and cu.id_campania_usuario = cu.id_campania  and d.id_domicilio = '$id_domicilio'");
    while (
$cg mysqli_fetch_row($consulta_general)) {
       
$iddom $cg['0'];
        
$dmed $cg['1']; #traemos la posición 0 de la tabla
        
$pr $cg['3'];
        
$pr1 $cg['3'];
    }

           foreach (
$consulta_general as $consulta) {
               
           
    if (
$calle != $dmed) {

    
#consulta que inserta en la tabla cambio--------------------------------------------------------------
    
$consulta="INSERT INTO cambio (nuevo, anterior, campo, id_campania, id_usuario, id_entidad, entidad, fecha_cambio) values ('$calle', '$dmed', 'calle', '$pr', '$pr1', '$iddom', 'Domicilio', '$fecha')";
    
$cs=mysqli_query($con,$consulta); #recibe la conexión y la consulta
  

}else{

}
$i++;
}
}
}

 
?>
Pero simplemente no funciona, mi consulta es cómo puedo hacer el ciclo para grabar en la base de datos el cambio por cada campo en un ciclo sin que se repita el guardado como 1000 veces.

Agradezco su apoyo.
Saludos
__________________
paco alonso