【问题标题】:html form with select box cannot get value in another php page带有选择框的html表单无法在另一个php页面中获取值
【发布时间】:2014-02-20 15:14:03
【问题描述】:

我有一个名为 page1.php 的 php 页面,带有这个表单

<form id="myForm" action="page2.php" method="post">
<label for="name">a label:</label><input type="submit" name="SubmitCar" value="Done" id="fbutton" /> <br />
<br />
<select name="selectCar">
<?php
session_start(); 

$user = "cardatabase";
$password = "";
$host = "";
$database = "my_cardatabase";
$connessione = mysql_connect($host, $user, $password) or die( mysql_error() . " <br/> could not connect to server");
mysql_select_db($database, $connessione) or die( mysql_error() . " <br/> could not connect datbase");

$id = $_SESSION['myid'];

         $query = "select IDCar
                       from Car";

         $result = mysql_query($query, $connessione) or die(mysql_error());
         if( mysql_num_rows($result) > 0 )  {
              $array = array();
              $i = 0;
              while ($row = mysql_fetch_array($result)) {

                $array[$i] = $row['IDCar'];
                ++$i;
                }

              for ($i = 0; $i < count($array); ++$i) {
                    echo "<option value='$array[$i]'>$array[$i]</option>";
                 }
            }
mysql_close();
?>
</select>
</form>

只需填写数据库中的选择框。现在问题来了。当我到达 page2.php 时,我需要选择框的值,我尝试了这个

page2.php

<?php
$value = $_POST['selectCar'];
?>

但它不起作用,所以我尝试以这种方式使用会话

page1.php

</form>

    <?php
    if(isset($_POST['SubmitCar'])){
    $_SESSION['idAuto'] = $_POST['selectCar'];
    }
    ?>

格式不正确,但仍然无法正常工作。我该怎么做才能在 page2.php 中获得这个值??

【问题讨论】:

  • 使用 firebug (net tab) 查看实际的帖子数据
  • 查询是否按预期工作?当您加载您的主页时,您是否看到了您需要的选项?您正在使用哪个浏览器进行测试?
  • Safari,是的,盒子已经装满了!但是当我尝试在 page2.php 中回显该值时,它总是空白
  • 您需要类似 developer.apple.com/library/safari/documentation/… 或 firefox 中的 firebug 来查看您发布到 page2.php 的内容。没有这些工具,你不会走得太远。
  • 这似乎很专业!这只是一个家庭作业!无论如何,我想出了一个简单的解决方法!我会发布以防有人需要

标签: php html forms


【解决方案1】:

尝试使用此代码构建您的 &lt;option&gt; ,并在使用数据库时使用 mysqli

 $result = mysqli_query($connessione, $query) or die(mysql_error());
         if( mysqli_num_rows($result) > 0 )  {
             $i=0;
              while ($row = mysqli_fetch_row$result)) {

                    echo "<option value='".$row[$i]."'>".$row[$i]."</option>";
                    $i++;
                 }
            }

此外,未指明名称为uppercasemysql 表或名称为uppercase 的字段。

【讨论】:

  • 选择框填充了正确的数据。我会试试这段代码,但我不认为这是解决方案
  • 我还建议您使用仅小写的名称作为输入名称
【解决方案2】:

Page2.php

你忘了回应它。

<?php
$value = $_POST['selectCar'];
echo $value;
?>

【讨论】:

  • 我回应它只是我没有粘贴代码。但我回应了很多价值(也有其他一些会议),这是唯一的空白
【解决方案3】:

我为我的问题找到了一个简单的解决方法。它可能并不完美,但它确实有效。

  1. 我删除了page1形式的action="page2.php"
  2. 在 page1.php 中将这段代码添加到表单之外

这样就可以了

        if(isset($_POST['SubmitCar'])){
        $_SESSION['idCar'] = $_POST['selectCar'];
        header('Location:page2.php');
        }

【讨论】:

  • 顺便说一句,我尝试了您的代码(我刚刚删除了 db 部分),它运行良好......
  • 你的意思是什么?如果你拿出 db 部分,你将不会填充选定的框
  • 我使用了一个虚拟数组:$array = array('a','b','c','d');然后其余的都是一样的。提交后,我能够在 post['selectedCar'] 中回显该值
  • 那么你认为问题出在哪里?我的意思是这个解决方法它有效,如果它是一个数据库错误,我也会得到空白吗?我还是 html/php 的新手。我继续欺骗编译器 xD
  • 是的,但是您编写的代码似乎应该可以工作。 page2.php 中可能有什么奇怪的地方吗?如果只有一个 应该没有问题。根据您的情况使用会话没有多大意义。
猜你喜欢
  • 1970-01-01
  • 2013-12-15
  • 2014-10-27
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多