> Faqs > Evitar reseteo al enviar un formulario en php

Evitar reseteo al enviar un formulario en php

Tengo que enviar un formulario con los datos nombre y telefono, al pulsar el botón añadir contacto se tiene que mostrar los datos enviados.

El problema es que al enviar nuevos datos me borra los anteriores. ¿Cómo puedo solucionarlo? Es la primera actividad que hago con php y estoy perdida, ya no se que más probar

<html>
<head>
    <meta charset="iso-8859-1">
    <meta name="description" content="Ejemplo de HTML5">
    <meta name="keywords" content="HTML5, CSS3, JavaScript">
    <title>agenda</title>
    <link rel="stylesheet" href="misestilos.css">
</head>
<body>
    <h1 align="center">AGENDA</h1>
        <section>

            <?php

            if(isset($_GET["contactos"])&&!empty($_GET["contactos"])){
                if($_REQUEST["nombre"] == ""){
                    print "<p>El nombre es Obligatorio!!!</p>";
                }
            }
            ?>
        
            <form action="tarea.php" name="agenda" method="get">

                <fieldset>
                    <legend>Datos agenda</legend>
                    <?php
                        
                        //crear array con los valores nombre y telefono

                            $nombre = $_GET['nombre'];
                            $telefono = $_GET['telefono'];
                            $datos = array("nombre" => $nombre, "telefono" => $telefono);

                        //evaluar si el boton Añadir contactos ha sido enviado y no se encuentra vacio
                        
                            if(isset($_GET["contactos"])&&!empty($_GET["contactos"])){

                                foreach($datos as $dato){
                                    echo $dato . "\n";
                                }
                            }
                    ?>
                </fieldset>

                <fieldset>
                    <legend>Nuevo contacto</legend>
                        <p>Nombre: <input type="text" name="nombre"></p>
                        <p>Telefono: <input type="tel" name="telefono"></p>
                        <input type="submit" name="contactos" value="Añadir contactos" method="get"></input>
                        <input type="reset" name="Limpiar campos" value="Limpiar campos"></input><!--no se si este boton es así para vaciar-->
                        <?php
                        ?>
                </fieldset>
¿A qué te refieres que borra los anteriores? no se entiende muy bien la verdad. Si quieres que se guarden las cosas al enviar el formulario lo tendrías que guardar en la base de datos o algo así.

Respuestas

Realmente no se entiende del todo lo que necesitas...

Si quieres que el formulario se envíe pero no pierda los datos lo que generalmente se hace es un formulario que llame a la misma página donde está el formulario.

Luego en los campos del formulario compruebas si estás recibiendo datos y los usas para componer los value.

<input type="text" name="cantidad" value="<?= isset($_POST['cantidad']) ? $_POST['cantidad'] : '' ?>">

Así cuando se recarga el formulario, si se están enviando los datos por POST, los campos aparecerán de nuevo con los value que tenían anteriormente.

La otra opción que se suele hacer ya requiere algo de Javascript, usando Ajax para el envío de los datos, que produce que la página no se recargue, por lo que los datos permancerán en los campos de formulario aunque envíes el formulario y lo proceses con PHP.

Miguel Angel
3295 146 215 17