Nueva pregunta

Pregunta:

Fecha: 26-10-2018 12:11:39 (En Español)

Evitar que los datos del formulario 2 se pasen a los campos vacios del formulario 1 cuando se ingresa a la base de datos[Resuelta]

Hola nuevamente tengo un problema al momento de ingresar varios formularios a la BD mysql, tengo una serie de formularios que se llenan todo en una misma ventana y se insertan al mismo tiempo con un solo submit todo corre bien pero el problema esta cuando reviso la base de datos encuentro que los campos vacíos del formulario 1 se rellenaron con los datos del formulario 2 y el formulario 2 quedo vació en eso campos

por ejemplo lo que yo ingreso es esto:

hospital1, glóbulos plaquetas,
hospital2, glóbulos plaquetas, plasma

cuando reviso la BD encuentro esto

hospital1, glóbulos plaquetas, plasma
hospital2, glóbulos plaquetas,

el campo vació en hospital 1 se relleno con el valor plasma del hospital2 y hospital2 ya no tiene el valor plasma

estoy utilizando el condicional FOR este es mi código php

<?php
//ini_set('display_errors',0);
include ("conexion.php");

$origen='Centro';
$destino=$_POST['destino'];
$globulos=$_POST['globulos'];
$plaquetas=$_POST['plaquetas'];
$plasma=$_POST['plasma'];
$materiales=$_POST['materiales'];
$hora=$_POST['hora'];


$sql = "INSERT INTO pedido (origen, destino, globulos, plaquetas, plasma, materiales, hora) VALUES";

for ($i=0; $i < count($destino); $i++) {
$sql.="('".$origen."', '".$destino[$i]."', '".$globulos[$i]."', '".$plaquetas[$i]."', '".$plasma[$i]."', '".$materiales[$i]."', '".$hora[$i]."'),";
}
$sql_final= substr($sql, 0, -1);
$sql_final.=";";

if (mysqli_query($conexion,$sql_final)) {
echo json_encode(array('error' => false));


}else{
echo json_encode(array('error' => true));

}


//header("location:form.php");
//echo "datos cargados";



?>

formulo mas clara mi pregunta "Como puedo evitar que los campos vacíos de un formulario se rellenen con los datos del formulario que le sigue que los campos vacios se queden asi en la BD y sigan vacios cuando haga una consulta"

Gracias y disculpen las molestia
Etiquetas: MySQL - PHP Votos: 0 - Respuestas: 4 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 26-10-2018 18:33:46 tendrias que copiar el html del los formularios para ver como tienes estructurada la secuencia, pues eso que indicas no debería de sucedes si esta correcta la estructura de tus campos, por ejemplo:

    
    <form>
        <div id="form1">
            <input name="hospital[]" value="hospi1"/>
            <input name="examen1[]" value="hospi2"/>
            <input name="examen2[]" value=""/>
        </div>
        <div id="form2">
            <input name="hospital[]" value="hospi1"/>
            <input name="examen1[]" value="hospi2"/>
            <input name="examen2[]" value="hospi3"/>
        </div>
    </form>
    
    


    Alli vemos un solo formulario con campos repetidos, pero al indicar con corchetes adicionales en el nombre del campo, le indicamos a nuestro backend que se traba de un arreglo que se interpretaría algo así:


    
    $post = [
        ['hospital'=>'hospi1','examen1'=>'hospi2','examen2'=>''],
        ['hospital'=>'hospi1','examen1'=>'hospi2','examen2'=>'hospi3'],
    ]
    
    


    por ende al hacer la inserción en la base de datos, no debería ocurrir lo que indicas, pues el sistema seguirá la secuencia de tus arreglo, en teoria la inserción quedaría algo así:

    
    for($i=0; $i<count($_POST['hospital']); $i++){
        $a = $this->db->query("INSET INTO tabla (campo1, campo2, campo3) VALUES ('$_POST[hospital][$i]' , '$_POST[examen1][$i]' , '$_POST[examen2][$i]')");
    }
    


    Lo que veo es que estas dejando fuera la primera parte de la secuencia, no se como funciona así pues nunca lo habia visto, en todo caso, la secuencia debería o al menos lo hago así, de estar completa dentro del mismo bucle, estoy casí seguro de que alli esta el problema.

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 01-11-2018 09:57:51 Coincido con Carlos, es necesario que nos pases el Html porque el error debe está ahí, quedo muy atengo.   Votos: 0 - Link respuesta
     
  • Fecha: 05-11-2018 09:59:07 ok entiendo aqui les dejo el codigo html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Empresa</title>
    <link rel="stylesheet" href="teststyle.css">

    </head>
    <body>
    <?php
    session_start();
    ?>
    <div class="logo">
    <a href="empresa.php"><img src="img/empresa.jpg"></a>
    </div>
    <header>
    <center>
    <nav class="navegacion">
    <ul class="menu">
    <!--<a href="">Envio</a></li>
    <li><a href="">Distribucion </a></li>-->
    <li>Distribucion de Lunes</li>
    </ul>
    </nav>
    </center>
    </header>
    <h1>Solicitud de Transporte</h1>

    <h2>Seleccione Procedencia</h2>



    <div class="pedido">
    <form action="" id="form_insert" method="POST">
    <?php for ($i=0; $i <=0 ; $i++) { ?>

    <h2>Destino</h2>

    <div>
    <center>
    <label for="">Hosp.1</label>
    <input type="checkbox" name="destino[]" value="Hosp.1" >
    </center>
    </div><br>


    <center>
    <table>
    <tr>
    <label><input type="checkbox" name="globulos[]" value="Globulos"><h1>Globulos</h1></label>
    <label><input type="checkbox" name="plaquetas[]" value="Plaquetas"><h1>Plaquetas</h1></label>
    <label><input type="checkbox" name="plasma[]" value="Plasma"><h1>Plasma</h1></label>
    <label><input type="checkbox" name="materiales[]" value="Materiales"><h1>Materiales</h1></label>
    </tr><br><br>
    </table>
    </center><br><br>

    <div>
    <center>
    <label for="">Hosp.2</label>
    <input type="checkbox" name="destino[]" value="Hosp.2" >
    </center>
    </div><br><br>

    <center>
    <table>
    <tr>
    <label><input type="checkbox" name="globulos[]" value="Globulos"><h1>Globulos</h1></label>
    <label><input type="checkbox" name="plaquetas[]" value="Plaquetas"><h1>Plaquetas</h1></label>
    <label><input type="checkbox" name="plasma[]" value="Plasma"><h1>Plasma</h1></label>
    <label><input type="checkbox" name="materiales[]" value="Materiales"><h1>Materiales</h1></label>
    </tr><br><br>
    </table>
    </center><br>

    <div class="">
    <h4>Hora de Despacho:<input type="time" name="hora[]"></h4>
    </div>

    <?php } ?>

    <div class="respuesta">
    <center>
    <a href="empresa.php"><input type="button" value="Salir"></a>
    <a href="form2.php"><input type="submit" value="Siguiente"></a>
    </center>
    </div>
    </form>
    </div>
    <script src="js/jQuery-3.1.1.js"></script>
    <script src="js/lunes/mainlun.js"></script>
    </body>
    </html>

    funciona junto con este Jquery:

    jQuery(document).on('submit','#form_insert', function(event){
    event.preventDefault();
    jQuery.ajax({
    url:'pedido2.php',
    type:'POST',
    datatype:'json',
    data: $(this).serialize(),

    })

    .fail(function(resp){
    console.log(resp.responseText);
    })
    .always(function(){
    console.log("complete");
    })
    window.location.href = "form2.php";

    })

    este es mi codigo php de pedido2.php

    <?php
    //ini_set('display_errors',0);
    include ("conexion.php");

    $origen='Centro';
    $destino=$_POST['destino'];
    $globulos=$_POST['globulos'];
    $plaquetas=$_POST['plaquetas'];
    $plasma=$_POST['plasma'];
    $materiales=$_POST['materiales'];
    $hora=$_POST['hora'];


    $sql = "INSERT INTO pedido (origen, destino, globulos, plaquetas, plasma, materiales, hora) VALUES";

    for ($i=0; $i <count($destino); $i++) {
    $sql.="('".$origen."', '".$destino[$i]."', '".$globulos[$i]."', '".$plaquetas[$i]."', '".$plasma[$i]."', '".$materiales[$i]."', '".$hora[$i]."'),";
    }
    ?>

    Gracias por responder y disculpen la demora estoy atento a sus comentarios
      Votos: 0 - Link respuesta
     
  • Fecha: 08-11-2018 02:02:41 reestructure el FOR de esta manera:
    <?php
    include ("conexion.php");
    $origen='hosp1';
    $destino=$_POST['destino'];
    $globulos=$_POST['globulos'];
    $plaquetas=$_POST['plaquetas'];
    $plasma=$_POST['plasma'];
    $materiales=$_POST['materiales'];
    $hora=$_POST['hora'];

    for ($i=0; $i <count($destino); $i++) {
    $sql =$conexion->query("INSERT INTO pedido (origen, destino, globulos, plaquetas, plasma, materiales, hora) VALUES ('$origen','$_POST[destino][$i]','$_POST[globulos][$i]','$_POST[plaquetas][$i]','$_POST[plasma][$i]','$_POST[materiales][$i]','$_POST[hora][$i]')");

    }

    de igual manera los datos en blanco se siguen rellenando con los datos del formulario siguiente
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com