【问题标题】:Form Values not getting submitted表单值未提交
【发布时间】:2018-03-14 19:37:16
【问题描述】:

我有以下 PHP 代码

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

    <?php
    $conn=mysqli_connect("localhost","root","vravi","mrconnect");
    if(!$conn)
    {
        echo "error establishing the connection";
    }
    $sql="select UserID,UserEmail from Users order by UserID";
    $result=mysqli_query($conn,$sql);


    if(mysqli_num_rows($result)>0)
    {
        while($row=mysqli_fetch_assoc($result))
       {

          echo $row["UserID"];
          echo  $row["UserEmail"]." ".'<input type=\"text\" name=\"name[]\"/>'."</br>";     
        }
        echo '<button type=\"submit\" name=\"submit\"   value=\"submit\">'.Submit.'</button></br>';
    }
    ?>
</form>

在浏览器中给出以下输出。

现在我有两个问题。

1)当我尝试在其中一个文本框中插入一些值并单击底部的提交按钮时,这些值没有被提交。

下面是我的 admin.php php 文件。

<?php
if(isset($_POST['submit']))
{
    echo "submitted";
}
else
{
    echo "not submitted";
}


?>

2)现在第二个问题是,我也希望通过表单提交我的电子邮件 ID,但这只是普通文本,谁能告诉我该怎么做?

【问题讨论】:

  • @Rizier123 button 很好,只要typesubmit
  • 我认为转义字符串会导致提交按钮出现问题,
  • 为您的&lt;input&gt; 添加一个名称属性,并通过使用数组,您可以使用电子邮件 ID 作为键 - '&lt;input type="text" name="name['.$row["UserID"].']"&gt;'; 然后在 php 中您可以执行 foreach($_POST['name'] as $UserID =&gt; $value)
  • @Sean: 有一个name 属性,它前面有很多空格:)
  • @LinkinTED 很好。从来没有想过你需要滚动那么远才能看到输入的其余部分

标签: php html forms


【解决方案1】:

有几件事可能会改变:

  1. 单引号之间的双引号不需要转义
  2. 使用name="name['.$row["UserID"].']"
  3. &lt;button... 更改为&lt;input type="submit"...

您的页面将如下所示:

<form action="admin.php" method="post">
    <?php
    $conn=mysqli_connect("localhost","root","vravi","mrconnect");
    if(!$conn) { echo "error establishing the connection"; }

    $sql="select UserID,UserEmail from Users order by UserID";
    $result=mysqli_query($conn,$sql);

    if(mysqli_num_rows($result)>0) {
        while($row=mysqli_fetch_assoc($result)) {
            echo $row["UserID"] . ' ' . $row["UserEmail"] ." ";
            echo '<input type="text" name="name['.$row["UserID"].']" />'."<br />";
        }
        echo '<button type="submit" name="submit" value="submit">Submit</button></br>';
    }
    ?>
</form>

然后,当表单提交到 admin.php 时,您可以循环 name

<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
    foreach( $_POST['name'] as $data => $value ) {
        echo $data . ': ' . $value . '<br />';
        // will output    2:  12
    }
}
?>

在我的示例中,它将回显用户 ID 和提交的值。您当然也可以将其保存到数据库中。

【讨论】:

  • 提交类型的按钮也会提交表单,无需更改。
  • @Fadey,you are right。我不知道,并将更新我的答案。感谢您的提示!
【解决方案2】:

print_r(); 添加到您的脚本顶部,以查看发布到您页面的确切内容。

更正您的 input 语法 - 它不完整:

echo  $row["UserEmail"]." ".'<input type=\"text\"

应该是这样的:

echo  $row["UserEmail"]." ".'<input type=\"text\" name=\"userEmail".$row["UserID"]."\" />

甚至更好:

echo  '<label>'.$row["UserEmail"].'</label><input type="text" name="userEmail['.$row["UserID"].']" />';

【讨论】:

  • 查看 OP 代码右侧:name=\"name[]\"/&gt;'."&lt;/br&gt;";
  • 如果您为名称name=\"userEmail[".$row["UserID"]."]\" 做一个数组而不是将UserID 集中到userEmail 的末尾,那么在php 中访问会更容易
  • 你还在专心致志。你需要括号 [ ] 围绕 $row["UserID"] -> name="userEmail['.$row["UserID"].']"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多