Soy nuevo en PHP e intento crear un formulario simple usando HTML y PHP. Estoy usando Apache Netbeans con XAMPP para ejecutar el archivo PHP en Google Chrome. Aquí está el código:

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>An example website</h1>
        <p>This is an example website to test HTML & PHP</p>
        <form action="myform.php" method="post">
            Name: <input type="text" name="name"><br>
            <input type="submit" name="formSubmit" value="Submit">
        </form>a
        <?php
        if($_POST['formSubmit'] == "Submit") {
            echo $_POST['name'];
        }                 
        ?>
    </body>
</html>

Así que he creado un formulario en la página HTML, y estoy tratando de imprimir el valor que escribí al hacer clic en el botón Enviar. Estoy seguro de que me falta algo básico aquí, pero no funciona y no estoy seguro de por qué. Esto es lo que sucede cuando cargo la página y escribo mi nombre en el campo del formulario:

enter image description here

Aquí está el error en la imagen de arriba en el texto:

Aviso: índice indefinido: formSubmit en C: \ xampp \ htdocs \ TestPHP \ index.php en la línea 20

Luego, cuando hago clic en el botón "Enviar", sucede esto:

enter image description here

Aquí está el error en la imagen de arriba en el texto:

¡Objeto no encontrado! La URL solicitada no se encontró en este servidor. El enlace en la página de referencia parece estar equivocado o desactualizado. Informe al autor de esa página sobre el error.

Si cree que se trata de un error del servidor, comuníquese con el webmaster.

Error 404 localhost Apache / 2.4.43 (Win64) OpenSSL / 1.1.1g PHP / 7.4.6

¿Alguien puede aclarar lo que realmente está sucediendo aquí y lo que debería hacer para obtener el valor ingresado en el campo de formulario?

0
Lou 14 jun. 2020 a las 15:06

4 respuestas

La mejor respuesta

Tienes algunos problemas diferentes aquí ...

En primer lugar, en el "aviso" se obtiene que la variable no se está configurando, esto se debe a que está tratando de verificar el valor de la variable POST antes de que se haya publicado algo en la página.

Puede superar esto comprobando si el valor se establece primero así:

if (isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {

Recibe el mensaje de error anterior porque E_NOTICE está habilitado; consulte Informe de errores para obtener más información de los documentos PHP

En segundo lugar, su formulario apunta a una página que no existe. Parece que su formulario y la parte que verifica el valor de publicación está en index.php pero su formulario apunta a myform.php.

En su lugar, debe actualizar su <form para apuntar a index.php

<form action="index.php" method="post">

Para poner todo junto:

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>An example website</h1>
        <p>This is an example website to test HTML & PHP</p>
        <form action="index.php" method="post">
            Name: <input type="text" name="name"><br>
            <input type="submit" name="formSubmit" value="Submit">
        </form>a
        <?php
        if(isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {
            echo $_POST['name'];
        }                 
        ?>
    </body>
</html>
2
simandsim 14 jun. 2020 a las 12:11

La primera vez que se ejecuta el script, el formulario no se ha enviado. Entonces, hay varias formas de verificar que el script PHP se esté ejecutando como resultado de un envío, esta es una

if(isset($_POST['formSubmit']) && $_POST['formSubmit'] == "Submit") {

El segundo error puede ser causado porque está intentando ejecutar otro script utilizando un action="myform.php"

¿El guión que nos muestra se llama myform.php? Si no, puede dejar ese parámetro en blanco de esta manera

action=""

Y hará que este script se ejecute para procesar los datos del formulario

1
RiggsFolly 14 jun. 2020 a las 12:09

Si desea enviar datos en la misma página puede usar


    <form method="post" action="<?=$_SERVER['PHP_SELF'];?>">




0
Nehry Dedoro 14 jun. 2020 a las 12:14

Es porque ha configurado su acción de formulario en myform.php pero no existe una página myform.php

Configure su acción de formulario en blanco si desea imprimir el nombre en la misma página

Y reemplace su código php con esto

<?php
        if(isset($_POST['formSubmit'])) {
            echo $_POST['name'];
        }                 
?>
1
Ashish rawat 14 jun. 2020 a las 12:10