【问题标题】:Bootstrap - Custom FormBootstrap - 自定义表单
【发布时间】:2014-11-16 11:18:23
【问题描述】:

我正在使用引导程序。我正在尝试创建一个工作表单,但提交功能不起作用。 这是我的表单 HTML:

                <form class="form-horizontal" role="form" action="mph.php" method="POST">
                    <div class="modal-body">
                            <fieldset>

                            <!-- Form Name -->
                            <legend>Map Problem Reporter</legend>

                            <!-- Select Basic -->
                            <div class="form-group">
                              <label class="col-md-4 control-label" for="selectbasic">What map?</label>
                              <div class="col-md-6">
                                <select id="selectbasic" name="selectbasic" class="form-control">
                                  <option value="1">6 Stages of Parkour</option>
                                  <option value="2">20 Stages of Parkour</option>
                                </select>
                              </div>
                            </div>

                            <!-- Multiple Radios -->
                            <div class="form-group">
                              <label class="col-md-4 control-label" for="radios">What kind of problem?</label>
                              <div class="col-md-4">
                              <div class="radio">
                                <label for="radios-0">
                                  <input type="radio" name="radios" id="radios-0" value="1">
                                  Blocks
                                </label>
                                </div>
                              <div class="radio">
                                <label for="radios-1">
                                  <input type="radio" name="radios" id="radios-1" value="2">
                                  Commands / Command Blocks
                                </label>
                                </div>
                              <div class="radio">
                                <label for="radios-2">
                                  <input type="radio" name="radios" id="radios-2" value="">
                                  Entities / Items
                                </label>
                                </div>
                              <div class="radio">
                                <label for="radios-3">
                                  <input type="radio" name="radios" id="radios-3" value="">
                                  Other (describe in the next text field)
                                </label>
                                </div>
                              </div>
                            </div>

                            <!-- Textarea -->
                            <div class="form-group">
                              <label class="col-md-4 control-label" for="textarea">Describe the Problem</label>
                              <div class="col-md-4">                     
                                <textarea class="form-control" id="textarea" name="textarea"></textarea>
                              </div>
                            </div>

                            <!-- Select Basic -->
                            <div class="form-group">
                              <label class="col-md-4 control-label" for="selectbasic">What is the priority?</label>
                              <div class="col-md-6">
                                <select id="selectbasic" name="selectbasic" class="form-control">
                                  <option value="1">Huge! It breaks the map!</option>
                                  <option value="2">Big</option>
                                  <option value="">Noticeable</option>
                                  <option value="">Barely Noticeable</option>
                                  <option value="">Almost Hidden</option>
                                  <option value="">I do not know</option>
                                </select>
                              </div>
                            </div>
                            <input type="submit" name="submit" value="Save Data">
                            </fieldset>
                        </form>

这是我当前的 PHP:

<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
$data = $_POST['field1'] . '-' . $_POST['field2'] . "\n";
$ret = file_put_contents('mpr.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
    die('There was an error writing this file');
}
else {
    echo "$ret bytes written to file";
}
}
else {
   die('no post data to process');
}
?>

当我单击表单中的“保存数据”时,它不会使用信息更新我的 mpr.txt。请帮忙。

【问题讨论】:

  • 1.哪个提交功能? 2.您的表格中的“保存数据”在哪里?还要添加att。表单标签的方法,例如:&lt;form method="post"&gt;
  • 答案显而易见! PHP 正在尝试查找已发布的field1field2。但是在你的 HTML 表单中你没有定义这两个属性,因此 PHP 不会更新文件!
  • 人们已经付出了他们的时间来帮助你。请不要通过删除或破坏它来惩罚他们并防止未来的访问者学习。
  • @Flexo 我不是在“惩罚”未来的人,不允许他们看到这一点。我将重新制作线程(一旦它被删除),并更改一些东西。
  • 欢迎您改进您的问题,但现在删除它只会浪费那些试图帮助您的人的时间。

标签: php html forms twitter-bootstrap


【解决方案1】:

我发现了 2 个问题:

1) 你已经用

创建了2 forms
<form class="form-horizontal" role="form">

<form class="form-horizontal">

应该是1

2) 您在&lt;form&gt; 标记中缺少action 属性,即它应该是&lt;form class="form-horizontal" role="form" action="&lt;php file name&gt;" method="&lt;request type&gt;"&gt;

纠正这些,我认为你应该通过。

您看不到 .txt file 中的数据,因为您的 html 页面中没有任何名为 field1field2 的字段。字段名称必须在 html 和 php 文件中匹配才能正确写入/读取数据。请更正名称,您应该可以通过。

如果您接受答案,也将不胜感激。

【讨论】:

    【解决方案2】:

    答案很明显! PHP 正在尝试查找已发布的 field1 和 field2。但是在您的 HTML 表单中,您没有定义这两个属性,因此 PHP 不会更新文件!

    编辑:

    如果您提交表单和print_r($_POST),您将获得以下数组:

    Array ( [selectbasic] => 1 [textarea] => [submit] => Save Data )
    

    如您所见,响应中没有[field1][field2]

    这意味着 PHP 无法继续打开和更新文本文件!

    为防止这种情况发生,您应该在 HTML 表单中定义 field1field2,方法是添加这些输入标签或更新现有标签。

    例如,如果您对select 标签和textarea 标签感兴趣,您应该更新您的HTML 代码或您的php 代码。

    您可以通过将 if 语句更新为 if(isset($_POST['selectbasic'], $_POST['textarea'])) 或在 HTML 表单中将 name="selectbasic" 更改为 name="field1"name="textarea" 更改为 name="field2 来使用 PHP 代码,并保留您当前的 php 代码和当前的PHP if 语句说:if(isset($_POST['field1']) &amp;&amp; isset($_POST['field2']))

    我希望这能解释一切!

    【讨论】:

    • 不,不是这样!当您提交表单时,PHP 会在响应中查找 $_POST['field1']$_POST['field2']!在您的代码中,您没有定义 name="field1"name="field2"
    • 你是不是也把这行:$data = $_POST['field1'] . '-' . $_POST['field2'] . "\n";改成了$data = $_POST['selectbasic'] . '-' . $_POST['textarea'] . "\n";
    • 只需更新这些行并使用以下代码即可工作:if(isset($_POST['selectbasic']) &amp;&amp; isset($_POST['textarea'])) { $data = $_POST['selectbasic'] . '-' . $_POST['textarea'] . "\n"; $ret = file_put_contents('mpr.txt', $data, FILE_APPEND | LOCK_EX); 我已经对其进行了测试,并且它在我的服务器上工作。 PS:确保mpr.txtmph.php文件在同一目录中。
    • 你可以在这里给我发电子邮件:karimwaiyl@gmail.com
    • 如果您觉得我的回答有帮助,请不要忘记将其标记为您问题的解决方案。它对我有用,我已经在我的服务器上对其进行了测试。
    猜你喜欢
    • 2018-10-02
    • 2016-11-11
    • 2017-10-23
    • 2019-11-24
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多