Comunidad de diseño web y desarrollo en internet online

Mostrar mensaje sin perder ventana del Form usando php y mysqli

Citar            
MensajeEscrito el 24 Jun 2020 02:41 pm
Estimadas(os) buenos dias

Tengo un formulario que guarda datos usando Submit a través de php en base de datos mysqli, El archivo del formulario se llama ingreso_usuarios.php y el archivo que guarda los datos agregar.php. Este último muestra un mensaje de Exito o Fracaso, pero al mostrar los mensajes oculta todo lo demas.

Necesito que al presionar en el Submit no desaparezca el formulario y aparezcan ahí mismo los mensajes de exito o fracaso.

obs: La grabación se hace bien

Gracias, desde ya.

Por lba

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Jun 2020 06:01 pm
Les envio foto del formulario que tengo quiero, que al guardar no desaparezca el formulario, y ahi mismo aparezcan los mensajes de "guardado" o "no guardado"

https://drive.google.com/file/d/1_v136Sq7LwgDiCyRQTE0Kx3Br1XPssTE/view?usp=sharing

Por lba

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Jul 2020 03:19 pm
Estimados les muestro el código completo mejor, él del formulario y el php que hace la inserción. Esto me funciona bien es decir graba el registro en la base de datos MYSQL.

El problema es que después que presiono Grabar en el Submit me queda la ventana en blanco, muestra los datos y un mensaje, pero se queda pegada y no vuelve a mostrar el formulario. Quiero que se mantenga el formulario con los datos y que ahí mismo aparezca el mensaje.


ARCHIVO ingreso_usuarios.php

Código :

<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es"> 
<html>
<head>
    <title>Usuarios</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <link rel="stylesheet" type="text/css" href="css/ing_usuarios.css"/>
    <!--<script>
        if (!("autofocus" in document.createElement("input"))) {
            document.getElementById("rut").focus();
        }
    </script>-->
    <!--<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        $('#submit').on('click', function() {
            $("#central").load('agregar.php');
            return false;
        });
    });
    </script>-->
</head>

<body>
    <?php
    
        //echo "Version de PHP: ".phpversion()."\n";

        if (!$enlace = mysqli_connect('localhost','root','')) {
            echo "No pudo conectarse a mysql";
            exit;
        }
        if (!mysqli_select_db($enlace,'losmininos')) {
            echo "No pudo seleccionar la base de datos";
            exit;
        }

        $comu="SELECT Codigo, Nombre FROM comunas";
        $res_comunas =mysqli_query($enlace, $comu);    

        if (!$res_comunas) {
            echo "Error de BD, no se pudo consultar la base de datos\n";
            echo "Error MySQL: " . mysqli_error();
            exit;
        
        }
        $fi_comunas = mysqli_fetch_assoc($res_comunas);

        //echo "header('Location: localhost/Los_mininos/agregar.php')";

        echo "<h1>Datos de Personas</h1>";
        echo "<form name='form1' method='post' action='agregar.php' enctype='multipart/form-data'>"; /* target='salida'*/  
        echo "<fieldset>";
        echo "<legend> Ingrese sus datos</legend>";
        
        echo "<label> Rut:</label>";
        echo "<input  id='rut' type='text' name='rut' autofocus /> <input type='text' name='dv' class='dv' required pattern='[0-9]|k|K' />";
        echo "<p><label> Nombre: </label><input type='text' name='nombre' /></p>";
        echo "<p><label>Apellido Paterno: </label><input type='text' name='apaterno' /></p>";
        echo "<p><label>Apellido Materno: </label><input type='text' name='amaterno' /></p>";
        echo "<p><label>Fecha Nacimiento: </label>";
        echo "<input type='date' name='fechanac' value=" . date('Y-m-d\TH-i') . "min='1900-01-01' max='" . date('Y-m-d') . "' /></p>";
        echo "<p><label>Estatura: </label><input type='number' name='estatura' step='0.01' min='0.10' max='2.50' placeholder='Ej: 1.75' pattern='^[0-9]|.|[0-9]' /> Metros</p>";
        echo "<p><label>Peso: </label><input type='number' name='peso' step='0.1' min='0.50' max='200.0' placeholder='Ej: 75.0'/> Kilos</p>";
        echo "<p><label>Apodo: </label><input type='text' name='apodo' /></p>";
        echo "<p><label>Correo: </label><input type='email' name='correo' pattern='^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'/></p>";
        echo "<p><label>Direccion: </label><input type='text' name='direccion' /></p>";
        echo "<p><label>Comuna: </label>"; 
        echo "<select name='comuna'><option value='0'>Seleccione:</option>";
            while ($fi_comunas = mysqli_fetch_array($res_comunas)) {
                echo "<option value='" . $fi_comunas['Codigo'] . "'>" . $fi_comunas['Nombre'] . "</option>";
            }
        echo "</select>";
        echo "<p><label>Celular: </label><input type='text' name='celular' placeholder='Ejemplo: 912345678'/></p>";
        echo "<p><label>Contrasena: </label><input type='password' name='password' /></p>";
        echo "<p><label id='lblFoto'>Subir Foto:</label>";
        //echo "<img src='imagenes/icono_foto.ico' id='upfile' style='cursor:pointer' />";
        echo "<input type='file' class='form-control' id='image' name='image' multiple ></p>";
        echo "<div><input type='submit' id='submit' name='submit' value='Guardar'>";
        echo "<input type='reset' name='reset' value='Limpiar'></div>";

        echo "</fieldset></form>";
        
        /*echo "<iframe name='salida' style='display:none'>";
        echo "<input type='text' name='mensaje' id='mensaje' value=''>";
        echo "<div id='mostrar_mensaje'></div>";
        echo "</iframe>";*/

        mysqli_free_result($res_comunas);
        mysqli_close($enlace);
    ?>

</body>
</html>


ARCHIVO: agregar.php

Código :

<html>
  <head>
<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es"> 

   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
   <meta http-equiv="refresh" content="2";url="localhost/Los_mininos/ingreso_usuarios.php">
   <title>Datos de Usuarios</title>

  </head>

<body>
   <?php

   // Usamos esas variables:
      if (!$enlace = mysqli_connect('localhost','root','')) {
         echo "No pudo conectarse a mysql";
         exit;
      }
      if (!mysqli_select_db($enlace,'losmininos')) {
         echo "No pudo seleccionar la base de datos";
         exit;
      }


      //Validamos que hayan llegado estas variables, y que no esten vacias:
      if (isset($_POST["rut"], $_POST["dv"], $_POST["nombre"],$_POST["apaterno"], $_POST["amaterno"], $_POST["fechanac"],$_POST["estatura"], $_POST["peso"], $_POST["apodo"],$_POST["correo"], $_POST["direccion"], $_POST["comuna"], $_POST["celular"],$_POST["password"]) and $_POST["rut"] !="" and $_POST["dv"]!="" and $_POST["nombre"]!="" and $_POST["apaterno"] !="" and $_POST["amaterno"]!="" and $_POST["fechanac"]!="" and $_POST["estatura"] !="" and $_POST["peso"]!="" and $_POST["apodo"]!="" and $_POST["correo"] !="" and $_POST["direccion"] !="" and $_POST["comuna"]!="" and $_POST["celular"]!="" and $_POST["password"]!="")
      {


         //traspasamos a variables locales, para evitar complicaciones con las comillas:
         $rut = $_POST["rut"];
         $dv = $_POST["dv"];
         $nombre = $_POST["nombre"];
         $apaterno = $_POST["apaterno"];
         $amaterno = $_POST["amaterno"];
         $fechanac = $_POST["fechanac"];
         $estatura = $_POST["estatura"];
         $peso = $_POST["peso"];
         $apodo = $_POST["apodo"];
         $correo = $_POST["correo"];
         $direccion = $_POST["direccion"];
         $comuna = $_POST["comuna"];
         $celular = $_POST["celular"];
         $password = $_POST["password"];
         $metodo = 'sha1';

         $mensaje=null;

         echo "$rut";
         echo "$dv";
         echo "$nombre";
         echo "$apaterno";
         echo "$amaterno";
         echo "$fechanac";
         echo "$estatura";
         echo "$peso";
         echo "$apodo";
         echo "$correo" ;
         echo "$direccion";
         echo "$comuna";
         echo "$celular";
         echo "$password";
         

         //Comprobar que se haya subido un archivo
         if(isset($_POST["submit"]) || isset($_POST["image"]["tmp_name"])) {
               $check=getimagesize($_FILES["image"]["tmp_name"]);
                if ($check != false) {   
               $image=$_FILES['image']['tmp_name'];      
               $imgContent=addslashes(file_get_contents($image));

               $consulta = "INSERT INTO usuarios
               (rut,dv,nombre,apellidop,apellidom,fechanac,estatura, peso, apodo, email, direccion, Codigo, celular, foto, password, metodo) VALUES ('$rut','$dv','$nombre','$apaterno','$amaterno','$fechanac','$estatura','$peso','$apodo','$correo','$direccion','$comuna','$celular','$imgContent','$password', '$metodo')";

               $res_usuarios =mysqli_query($enlace, $consulta);

               if ($res_usuarios)
               {
                  //echo "<p>Registro agregado.</p>";
                  $mensaje="Registro agregado";
               } else {
                  //echo "<p>No se agregó...</p>";
                  $mensaje="No de agregó...";
               }
         
               //Mostramos el resultado. Este 'echo' será el que recibirá la conexión AJAX
               echo $mensaje;
               //if ($res_usuarios) { mysqli_free_result($res_usuarios); }
            } //Cierra if($check
            
            else
            {
               echo "Por favor seleccione imagen a subir.";
            }

         } //Cierra if(isset      
         
         
      }  //Cierra el if(isset)

      
      mysqli_close($enlace);
         //else 
         //{
         //   echo '<p>Por favor, complete el <a href="ingreso_usuarios.html">Formulario</a></p>';
         //}
   ?>
</body>
</html>

Por lba

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Jul 2020 06:50 am
Estas cargando el PHP que procesa con jquery en la misma pagina, con lo cual no deberia funcionar nada, pero como no cancelas el form submit, igual se envia y por eso funciona el insert, aunque te queda el mensaje de resultado (mira si al final la URL no es agregar.php)
Si quisieras insertar y volver al formulario en modo edicion, es decir con los datos que insertaste cargados en el formulario, deberias hacer

- Si controlas JQuery, haz un post con los datos ingresados, muestra el success o error en un alert, no recargas nada, https://www.tutorialrepublic.com/faq/how-to-submit-a-form-using-jquery.php
- O sino deberias modificar el PHP para que no use todo echo, sino tags HTML estandard, tienes que pintar todas las variables en los campos y tener un condicional que si viene ID por URL, estas en modo edicion. Al enviar el form, luego de procesarse te tiene que redirigir de vuelta pasando el id de la insercion, es mas complicado que lo anterior (asi se hacia antes de JS), pero adecuado si dominas mas PHP

Jorge

Por solisarg

BOFH

13650 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.