简单的PHP表单不起作用

时间:2013-05-15 14:37:15

标签: php javascript jquery html codeigniter

我正在尝试创建一个有效的表单。我使用codeigniter,视图有这种形式:

    <form class="renuncia_form" action="/formulario/send_form" method="post">
        <p>
            <label for="nombre">Nombre y apellidos:</label>
                <input name="nombre" type="text" id="renuncia_nombre">
            <br>
            <label for="participe">Nº Partícipe: </label>
                <input name="participe" type="text" id="renuncia_participe">
            <br>
            <label for="nombre_fondo">Nombre del Fondo de Inversión o SICAV: </label>
                <input name="nombre_fondo" type="text" id="renuncia_fondo">
            <br>
            <label for="email">Direccion de correo electrónico: </label>
                <input name="email" type="text" id="renuncia_email">
            <br>
            <input type="submit" value="Enviar" class="renuncia_submit" name="enviar">
        </p>
     </form>

控制器有这个php:

public function send_form(){
    if($_POST['submit'] == "Submit")
    {
        $errorMessage = "";

        if(empty($_POST['nombre']))
        {
            $errorMessage .= "<li>You forgot to enter your name</li>";
        }
        if(empty($_POST['participe']))
        {
            $errorMessage .= "<li></li>";
        }

        $varMovie = $_POST['nombre'];
        $varName = $_POST['participe'];

        if(empty($errorMessage)) 
        {
            $fs = fopen("mydata.csv","a");
            fwrite($fs,$varName . ", " . $varMovie . "\n");
            fclose($fs);

            header("Location: thankyou.html");
            exit;
        }
    }

}

我不知道我的表格是否正确。我只是想把它作为一个普通的表单操作,你点击提交它会带你到一个新的页面说“谢谢你的电子邮件”,没有AJAX,只是那个。

有人可以帮我解决这个问题吗?

修改:我还在哪里放收件电子邮件?

7 个答案:

答案 0 :(得分:1)

 if($_POST['submit'] == "Submit")

应该是

 if(isset($_POST['enviar']))

由于提交按钮的name不是submit,而是name='enviar'

答案 1 :(得分:1)

试试这个

if(isset($_POST["enviar"]) && $_POST["enviar"] == "Enviar")

答案 2 :(得分:0)

我认为这是因为您正在翻译您使用的表单

if($_POST['submit'] == "Submit")

你在表格中使用

<input type="submit" value="Enviar" class="renuncia_submit" name="enviar">

您的实际提交按钮名称为enviar而不是submit。由于这是一个按钮,我建议您查看isset()

if(isset($_POST['enviar']))

答案 3 :(得分:0)

你有

if($_POST['submit'] == "Submit")

然后如果条件满足则其他一切。它永远不会没有这样的领域。只需删除它就可以了。

至于邮件,您应该通过$_POST['email']访问它。如果您要发送电子邮件,请查看herehere

答案 4 :(得分:0)

我不确定,但问题是动作属性。

为什么不使用From helper来创建这个表单?无论如何,如果你不使用或不能使用它,请将动作更改为http://localhost/your_project/index.php/formulario/send_form

在这里阅读base_url http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

此外如果($ _ POST ['submit'] ==“提交”)是错误的。一定是

if(isset($_POST['submit']) && ($_POST['submit'] === "Enviar"))

答案 5 :(得分:0)

if (isset($_POST['enviar']))

这应该有效

答案 6 :(得分:0)

使用:

public function send_form(){

    if(array_key_exists('submit',$_POST))
    {
        $errorMessage = "";

        if(empty($_POST['nombre']))
        {
            $errorMessage .= "<li>You forgot to enter your name</li>";
        }
        if(empty($_POST['participe']))
        {
            $errorMessage .= "<li></li>";
        }

        $varMovie = $_POST['nombre'];
        $varName = $_POST['participe'];

        if(empty($errorMessage)) 
        {
            $fs = fopen("mydata.csv","a");
            fwrite($fs,$varName . ", " . $varMovie . "\n");
            fclose($fs);

            header("Location: thankyou.html");
            exit;
        }
    }

}
相关问题