【问题标题】:Form not getting submitted - Bootstrap framework表单未提交 - 引导框架
【发布时间】:2015-11-25 19:21:44
【问题描述】:

我正在做这个项目,到目前为止一切顺利,但是我遇到了一个我根本不知道如何解决的问题。

我在页面上有一个部分,您可以在其中编辑您的信息。

我正在同一页面上检查 $_POST 以避免重定向站点,但是提交按钮似乎没有提交任何内容。

编辑: 我没有收到任何 PHP 错误,当我按下提交按钮时不会发生任何事情。

我的 PHP 与表单在同一页面上:

require_once("inc/functions.php");

if(isset($_POST['saveButton'])){
    $emailValue = mysql_real_escape_string($_POST['email']);
    $bukserValue = mysql_real_escape_string($_POST['bukser']);
    $jakkeValue = mysql_real_escape_string($_POST['jakke-str']);
    $skoValue = mysql_real_escape_string($_POST['shoes']);
    setUserSetting($emailValue, $bukserValue, $jakkeValue, $skoValue);
};

我的 PHP 函数:

function setUserSetting($emailValue, $bukserValue, $jakkeValue, $skoValue) {
    $emailValue = strip_tags($emailValue);
    $uid = $_SESSION['usrId'];
    $sql = "UPDATE usr SET email='$emailValue', sko='$skoValue', jakke='$jakkeValue', bukser='$bukserValue' WHERE id='$uid'";

    $result=mysql_query($sql);
    if($result === FALSE) { 
        die(mysql_error());
    } else {
        $_SESSION['usrEmail'] = $emailValue;
        return "gemt";  
    };
};

最后是我的 html 表单:

                       <section id="settings" class="bg-light-gray">
    <div class="container">
        <div class="row">
            <div class="col-lg-12 text-center">
                <h2 class="section-heading">Indstillinger</h2>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-12">

                <form class="form-horizontal" action="#" method="post" role="form" name="settForm">
                    <fieldset>

                <!-- Text input-->
                        <div class="form-group">
                                <label class="col-md-4 control-label" for="email">E-mail</label>  
                            <div class="col-md-4">
                                <input id="email" name="email" type="text" placeholder="E-mail" class="form-control input-md" value="<? echo getUserSetting($usrEmail, 'mail'); ?>">
                            </div>
                        </div>

                        <div class="form-group">
                                <label class="col-md-4 control-label" for="bukser">Bukser størrelse</label>
                            <div class="col-md-4">
                                <select id="bukser" name="bukser" class="form-control">
                                    <option value="C44">C44</option>
                                    <option value="C46">C46</option>
                                </select>
                            </div>
                        </div>

                        <div class="form-group">
                          <label class="col-md-4 control-label" for="jakke-str">Jakke størrelse</label>
                            <div class="col-md-4">
                                <select id="jakke-str" name="jakke-str" class="form-control">
                                    <option value="XS">XS</option>
                                    <option value="S">S</option>
                                </select>
                            </div>
                        </div>

                        <div class="form-group">
                          <label class="col-md-4 control-label" for="shoes">Sko størrelse</label>
                            <div class="col-md-4">
                                <select id="shoes" name="shoes" class="form-control">
                                    <option value="36">36</option>
                                    <option value="37">37</option>
                                </select>
                            </div>
                        </div>
                    </fieldset>
                <button type="submit" class="btn btn-xl text-center center-block" id="saveButton" name="saveButton">Gem ændringer</button>
            </form>
        </div>
    </div>
</div>

【问题讨论】:

  • 完全删除action,无论如何它都会重定向到同一页面..我认为这是因为你做了action="",因此使你的表单看起来像&lt;form class="form-horizontal" action method="post" role="form" name="settForm"&gt;
  • 问题是它适用于我的登录页面:

标签: php html forms twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

问题是因为您的代码中缺少关闭 &lt;/select&gt; 标记。因为那个 php 会给出Undefined index: Sko 错误。所以先包含缺失的标签。

// your code

<div class="form-group">
  <label class="col-md-4 control-label" for="jakke-str">Jakke størrelse</label>
    <div class="col-md-4">
        <select id="jakke-str" name="jakke-str" class="form-control">
            <option value="XS">XS</option>
            <option value="S">S</option>
        </select>
    </div>
</div>

<div class="form-group">
  <label class="col-md-4 control-label" for="Sko">Sko størrelse</label>
    <div class="col-md-4">
        <select id="Sko" name="Sko" class="form-control">
            <option value="36">36</option>
            <option value="37">37</option>
        </select>
    </div>
</div>

// your code

旁注:请不要使用 mysql_ 数据库扩展,它们在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被删除。请改用 mysqliPDO 扩展名。这是why you shouldn't use mysql_

【讨论】:

  • 嗨,我更新了问题中的源代码。它仍然根本不提交。这让我很惊讶。
  • @EmilElkjærNielsen 更改您的提交按钮可能是这样的,&lt;input type="submit" class="btn btn-xl text-center center-block" id="saveButton" name="saveButton" value="Gem ændringer" /&gt;
【解决方案2】:

删除 mysql_real_escape_string() 函数来自您要获取发布值的代码

【讨论】:

  • 以前使用 mysql_real_escape_string() 从来没有遇到过问题,也可以在我的登录表单中使用。查看更新的问题 - 我没有收到任何 PHP 错误,它或多或少是基于 HTML 的
  • 尝试一次。我试过你的代码和提交的表单。
  • 对我来说没什么区别 :-)
【解决方案3】:

解决方案:

为您的按钮添加价值!在本地测试它我看到按钮参数是空的,所以 isset() 评估为假。

  <button type="submit" class="btn btn-xl text-center center-block" id="saveButton" name="saveButton" value="saveButton" >Gem ændringer</button>

至于&lt;input type="button"&gt;是携带按钮值的value属性。

更多细节:

首先,为了更好的做法,我会将您的表单与业务脚本分开。

 <form class="form-horizontal" action="" method="post" role="form" name="settForm">

<form class="form-horizontal" action="**YOURSCRIPT.PHP**" method="post" role="form" name="settForm">

您的选择缺少&lt;/select&gt; 标签

您始终可以从“控制器”脚本中清除数据,这样会更易于维护。 为了制作好的用户体验,您可以使用 javascript 添加客户端验证。

此外,不推荐使用 mysql 扩展。选择 mysqli 甚至更好的 PDO。

【讨论】:

  • 没有必要,没有设置动作,它只会提交到当前页面。
  • 他对表示层和业务使用相同的文件??
  • “我的 PHP 与表单在同一页面上:”
  • 是的,使用 isset($_POST) 在同一页面上进行检查,如果已设置,则收集值并发送到我的“业务”脚本中的函数:-)
  • 这并不是更好,因为会导致代码不好的代码可维护性。
【解决方案4】:

问题解决了。

监督 javascript 错误的我。

自我提醒:不要在疲倦时编码:D

感谢您的建议!

【讨论】:

  • 您能发布您的解决方案吗?因为我在请求中发现您的按钮参数为空。我很想知道什么 javascript 函数可以创建这个问题。
  • @YuriBlanc - 发布的代码没有任何变化。我的项目中只有一个 .js 干扰了解决方案,因此它不起作用:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 2015-05-04
相关资源
最近更新 更多