0

Tengo un código PHP que me rellena un formulario con datos de la base de datos. Lo único que el action de form tengo que enviarlo a otra página para que me lo procese porque si lo dejo en la misma página me hace la consulta al no más mostrar la página y quiero que se ejecute solo si se presiona el botón.

<?php
include 'index.php';
//se incluye el archivo de conexion
include 'conexion.php';

$id = $_POST["id"];

$selecciona = "select `idEmbarazada`, `nombreEmb`, `edad`, `Expediente`, `idCanton`, `fechaInscripcion`,"
        . " `riesgo`, `fur`, `fpp`, `gravida`, `paridad`, `prematuro`, `aborto`, `vive`, `visita1`, "
        . "`visita2`, `visita3`, `visita4`, `visita5`, `visita6`, `visita7`, `visita8`, `fechaFracaso`,"
        . " `edadgesFracaso`, `parto`, `lugarParto`, `complicacionParto`, `FechaInsPP`, `fechaInsRN`, "
        . "`complicacionRN`, `insodontologia`, `observaciones`, `IdUCSF`, `idPromotor` FROM `embarazadas`"
        . " WHERE idEmbarazada='$id'";
$registros = mysqli_query($conexion, $selecciona) or
        die("Problemas en el select:" . mysqli_error($conexion));
//creando un tabla con class para que sea mapeada por boobstrap
echo"     <div class='container'> 
            <form class='form-horizontal' name='form1>'  action='update2.php' method='POST'>
                <div class='form-group'>
                    <div class='col-sm-offset--5 col-sm-10'>";
echo"<table class='table table-bordered' align='center'>";
//echo"<form name='update' action='update2.php' method='POST'>";

//mientras haya un registro se imprimira en pantalla los datos de cada embarazada por fila
while ($reg = mysqli_fetch_array($registros)) {//echo "<tr>   
    echo"<tr><td>Id Embarazada</td><td><input type ='text' name='idEmbarazada' id='idEmbarazada' value='" . $reg['idEmbarazada'] . "' readonly/></td></tr>";
    echo"<tr><td>Nombre de la Embarazada</td><td><input type ='text'name='nombreEmb'id='nombreEmb' value='" . $reg["nombreEmb"] . "'/></td></tr>";
    echo"<tr><td>Edad: </td><td><input type ='number' min='10' max='52' name='edad'step='1'id='edad' value='" . $reg["edad"] . "'/></td></tr>";
    echo"<tr><td>Expediente: </td><td><input type ='text' name='Expediente'id='Expediente' value='" . $reg["Expediente"] . "'/></td></tr>";
    echo"<tr><td>Canton: </td><td><input type ='text' name='idCanton' id='idCanton' value='" . $reg["idCanton"] . "'/></td></tr>";
    echo"<tr><td>Fecha de Inscripcion</td><td><input type ='date' name='fechaInscripcion'id='fechaInscripcion' value='" . $reg["fechaInscripcion"] . "'/></td></tr>";
    echo"<tr><td>Riesgo: </td><td><input type ='text' name='riesgo' id='riesgo' value='" . $reg["riesgo"] . "'/></td></tr>";
    echo"<tr><td>Fecha Ultima Regla</td><td><input type ='date' name='fur' id='fur' value='" . $reg["fur"] . "'/></td></tr>";
    echo"<tr><td>Fecha Probable de parto</td><td><input type ='date' name='fpp' id='fpp' value='" . $reg["fpp"] . "'/></td></tr>";
    echo"<tr><td>Gravidad</td><td><input type ='number' min='0' max='18' step='1'name='gravida' id='gravida' value='" . $reg["gravida"] . "'/></td></tr>";
    echo"<tr><td>Paridad:</td><td><input type ='number' min='0' max='18' step='1'name='paridad' id='paridad' value='" . $reg["paridad"] . "'/></td></tr>";
    echo"<tr><td>Prematuro:</td><td><input type ='number' min='0' max='18' step='1'name='prematuro' id='prematuro' value='" . $reg["prematuro"] . "'/></td><tr>";
    echo"<tr><td>Aborto:</td><td><input type ='number' min='0' max='18' step='1'name='aborto' id='aborto'  value='" . $reg["aborto"] . "'/></td></tr>";
    echo"<tr><td>Vivo:</td><td><input type ='number' min='0' max='18' step='1'name='vive' id='vive' value='" . $reg["vive"] . "'/></td></tr>";

    echo"<tr><td>Fecha Visita 1</td><td><input type ='date' name='visita1' id='visita1' value='" . $reg["visita1"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 2</td><td><input type ='date' name='visita2' id='visita2' value='" . $reg["visita2"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 3</td><td><input type ='date' name='visita3' id='visita3' value='" . $reg["visita3"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 4</td><td><input type ='date' name='visita4' id='visita4' value='" . $reg["visita4"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 5</td><td><input type ='date' name='visita5' id='visita5' value='" . $reg["visita5"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 6</td><td><input type ='date' name='visita6' id='visita6'  value='" . $reg["visita6"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 7</td><td><input type ='date' name='visita7' id='visita7' value='" . $reg["visita7"] . "'/></td></tr>";
    echo"<tr><td>Fecha Visita 8</td><td><input type ='date' name='visita8' id='visita8' value='" . $reg["visita8"] . "'/></td></tr>";
    echo"<tr><td>Fecha Fracaso del Parto</td><td><input type ='date' name='fechaFracaso' id='fechaFracaso' value='" . $reg["fechaFracaso"] . "'/></td></tr>";
    echo"<tr><td>Edad gestacional al fracaso:</td><td><input type ='number' min='0' max='42' step='1' required name='edadgesFracaso' id='edadgesFracaso' value='" . $reg["edadgesFracaso"] . "'/></td><tr>";
    echo"<tr><td>Fecha  Parto</td><td><input type ='date' name='parto' id='parto' value='" . $reg["parto"] . "'/></td></tr>";
    echo"<tr><td>Lugar del parto: </td><td><input type ='text' name='lugarParto' id='lugarParto' value='" . $reg["lugarParto"] . "'/></td></tr>";
    echo"<tr><td>Complicacion en el parto: </td><td><input type ='text' name='complicacionParto' id='complicacionParto' value='" . $reg["complicacionParto"] . "'/></td></tr>";
    echo"<tr><td>Fecha  Inscripcion de la Puerpera Nacido</td><td><input type ='date' name='FechaInsPP' id='FechaInsPP' value='" . $reg["FechaInsPP"] . "'/></td></tr>";
    echo"<tr><td>Fecha Inscripcion del recien nacido  </td><td><input type ='date' name='fechaInsRN' id='fechaInsRN' value='" . $reg["fechaInsRN"] . "'/></td></tr>";
    echo"<tr><td>Complicaciones del Recien nacido:</td><td><input type ='number' min='0' max='18' step='1'name='complicacionRN' id='complicacionRN' value='" . $reg["complicacionRN"] . "'/></td><tr>";

    echo"<tr><td>Inscripcion Odontologia</td><td><input type ='date' name='insodontologia' id='insodontologia' value='" . $reg["insodontologia"] . "'/></td></tr>";
    echo"<tr><td>Observaciones : </td><td><textarea rows='3' cols='30'name='observaciones' id='observaciones' value='" . $reg["observaciones"] . "'></textarea></td></tr>";

    echo"<tr><td>UCSF Responsable:</td><td><input type ='number' min='0' max='18' step='1'name='IdUCSF' id='IdUCSF' value='" . $reg["IdUCSF"] . "'/></td></tr>";


    echo"<tr><td>Promotor Responsable:</td><td><input type ='number' min='0' max='18' step='1'name='idPromotor' id='idPromotor' value='" . $reg["idPromotor"] . "'/></td></tr>";

    echo"   <tr><td> <input class='btn btn-default' type='Submit' name='actualizar' value='Actuzalizar'/></td>";

    echo"  <td>  <input formnovalidate='formnovalidate' class='btn btn-default' type='Submit' name='Guardar' value='Regresar'/> </td></tr> ";
}

echo"</form>";
echo"<table>";

Como ven lo envío a update2.php pero quisiera quedarme siempre en la misma página en update2 tengo lo siguiente:

<?php
include 'conexion.php';
$idEmbarazada=$_POST["idEmbarazada"];
$nombreEmb = $_POST["nombreEmb"];
$edad = $_POST["edad"];
$Expediente = $_POST["Expediente"];
$idCanton = $_POST["idCanton"];
$fechaInscripcion = $_POST["fechaInscripcion"];
$riesgo = $_POST["riesgo"];
$fur = $_POST["fur"];
$fpp = $_POST["fpp"];
$gravida = $_POST["gravida"];
$paridad = $_POST["paridad"];
$prematuro = $_POST["prematuro"];
$aborto = $_POST["aborto"];
$vive = $_POST["vive"];
$visita1 = $_POST["visita1"];
$visita2 = $_POST["visita2"];
$visita3 = $_POST["visita3"];
$visita4 = $_POST["visita4"];
$visita5 = $_POST["visita5"];
$visita6 = $_POST["visita6"];
$visita7 = $_POST["visita7"];
$visita8 = $_POST["visita8"];
$fechaFracaso = $_POST["fechaFracaso"];
$edadgesFracaso = $_POST["edadgesFracaso"];
$parto = $_POST["parto"];
$lugarParto = $_POST["lugarParto"];
$complicacionParto = $_POST["complicacionParto"];
$FechaInsPP = $_POST["FechaInsPP"];
$fechaInsRN = $_POST["fechaInsRN"];
$complicacionRN = $_POST["complicacionRN"];
$insodontologia = $_POST["insodontologia"];
$observaciones = $_POST["observaciones"];
$IdUCSF = $_POST["IdUCSF"];
$idPromotor = $_POST["idPromotor"];
$actualiza = "UPDATE embarazadas SET nombreEmb='$nombreEmb',`edad`='$edad',`Expediente`='$Expediente',"
        . "`idCanton`='$idCanton',`fechaInscripcion`='$fechaInscripcion',`riesgo`='$riesgo',`fur`='$fur',"
        . "`fpp`='$fpp',`gravida`='$gravida',`paridad`='$paridad',`prematuro`='$prematuro',`aborto`='$aborto',`vive`='$vive',"
        . "`visita1'$visita1',`visita2`='$visita2',`visita3`='$visita3',`visita4`='$visita4',`visita5`='$visita5',`visita6`='$visita6'"
        . ",`visita7`='$visita7',`visita8`='$visita8',`fechaFracaso`='$fechaFracaso',`edadgesFracaso`='$edadgesFracaso',`parto`='$parto'`lugarParto`='$lugarParto',`complicacionParto`='$complicacionParto',"
        . "`FechaInsPP`='$FechaInsPP',`fechaInsRN`='$fechaInsRN',`complicacionRN`='$complicacionRN',`insodontologia`='$insodontologia',`observaciones`='$observaciones',"
        . "`IdUCSF`='$IdUCSF',`idPromotor`='$idPromotor'] WHERE idEmbarazada='$idEmbarazada'";
mysqli_close($conexion);
Alvaro Montoro
  • 48,157
  • 26
  • 100
  • 179
  • al respuesta que tienes te dice exactamente como hacer la consulta, en estos enlaces puedes mirar mas sobre estas consultas http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=959:ajax-y-javascript-con-consulta-a-base-de-datos-recuperar-informacion-en-tiempo-real-de-servidor-cu01216f&catid=83&Itemid=212 https://mimentevuela.wordpress.com/2015/08/09/busqueda-instantanea-con-ajax-php-y-mysql/ http://www.ribosomatic.com/articulos/ajax-php-mysql-consulta-de-registros/ Saludos – Alejo Florez Jul 31 '17 at 16:51
  • 1
    Tu código presenta una vulnerabilidad de seguridad: puede sufrir ataques de inyección SQL. Además, como no se limita la consulta y se usa un bucle para mostrar los datos, un usuario podría obtener todos los datos de la tabla si usa el id `' or '1'='1` (o potencialmente borrar la base de datos)... lo que podría tener graves consecuencias legales si los datos son historiales médicos o similares (como parecen ser). Lee sobre [qué es la inyección SQL](https://es.stackoverflow.com/q/10518/250) y [cómo evitarla en PHP](https://es.stackoverflow.com/q/18232/250). – Alvaro Montoro Jul 31 '17 at 21:25
  • no, la conexion la he hecho con usuario que solo tiene acceso a crear modificar datos de los campos, no es un usaurio root y los pass estan encriptados con md5 –  Aug 03 '17 at 04:38

3 Answers3

2

Puedes utilizar AJAX, dentro del evento click del boton que deseas presionar y enviar la data

$.ajax({
    type: "POST",
    url: TU_URL
    contentType: "application/json",
    dataType: "json",
    data: {id : id},
    success: function(response) {
        console.log(response);
    },
    error: function(response) {
        console.log(response);
    }
});

En este caso el valor de URL deberia ser el nombre del archivo al cual apuntas a procesar los datos, el parametro data es los datos que deseas enviar por POST en tu caso.

Para evitar que presiones el boton y se ejecute el action de tu form, debes quitarle la etiqueta submit, agregarle una id y hacer algo asi :

<button id="enviar_datos">Enviar</button>

En el codigo jquery en mi ejemplo :

$('#enviar_datos').click(function(){
    //ejecutas el codigo AJAX
})
sioesi
  • 11,365
  • 5
  • 20
  • 55
1

Lo puedes realizar con ajax, como te dicen anteriormente, te paso otra forma de hacer la solicitud, a mi me parece mas practica.

$.post("URL",DATOS,function (resultado){
   if(resultado){
     console.log("resultado positivo");
   }else{
    console.log("resultado negativo");
   }
},"json");

Donde DATOS es un array con los datos a enviar , en caso de enviar por GET, es un valor null, y el resultado json que recibes con RESULTADO ya lo manipulas a tu conveniencia. Solo te di un ejemplo

0

agrega un header('Location: primeraPagina.php'); en la pagina que procesas los datos osea en update2.php así cuando llegue a update2.php procesara los datos y cuando termine de procesar leera el header y regresara a donde tu le digas.