【问题标题】:I cannot access variables from my form in php我无法从我的 php 表单中访问变量
【发布时间】:2018-02-05 10:35:12
【问题描述】:

我已经研究了一段时间,并查看了所有类似的问题,但我找不到任何可以解决我的问题的东西。

所以我正在使用 main't html 和 php 在我自己的服务器上构建一个假装购物网站。这只是为了我自己的教育目的,所以基本上只是为了好玩。

这只是我第三次用 html 或 php 做任何事情,所以还有很多我不明白的地方,这个项目可能比我预期的要大一点。

我有一个“用户”登录的页面,然后我使用会话将他们输入的数据(用户名等)带入一个非常简单的问候语。这大部分都奏效了。唯一的问题是如果我刷新新页面太多有时它会消失。

主要问题在新页面中。我有一个商店物品的表格,用户可以在其中选择他们想要购买的数量。但是,当按下提交按钮时,我的检查显示表单为空,我不明白为什么。我已经搞砸了,从使用 $_POST 到 $_GET 开始,但这并没有帮助。 这是我的 php 的开始,它检查上一页中的内容。

<?php
//start session
session_start();

//check is post variables exist, if it does assign it
if (isset($_POST['username'])) {
  $name = $_POST['username'];
  $_SESSION['usersname'] = $name;
}
if (isset($_POST['email'])) {
  $email = $_POST['email'];
  $_SESSION['useremail'] = $email;
}
if (isset($_POST['password'])) {
  $password = $_POST['password'];
  $_SESSION['userpassword'] = $password;
}
$username = $_SESSION['usersname'];
$useremail = $_SESSION['useremail'];
$userpassword = $_SESSION['userpassword'];

然后项目列表看起来像这样。

 <!--- List of all items and how many they want --->
 <nav class="col-1">
 <p> Shopping List </p>
 <br/>
 <form action="index.php" method="GET" name="items">
    <table class="table1">
      <tr><th>WEAPONS</th></tr>
      <tr><td class="td1">
          <br/>
          <img class="disc" src="images/wand.png"></img><br/>
            Item Name: Butterfly Wand<br/>
            Price: $50.00<br/>
          <input type="number" name="wandNum" min="0" style="width: 50px"/>
          <br/>
          <?php $wandprice = 50.00; ?>
          </td></tr>
          <tr><td class="td1">
          <br/>
          <img class="disc" src="images/sword.png"></img><br/>
            Item Name: Normal Sword<br/>
            Price: $20.00<br/>
          <input type="number" name="swordNum" min="0" style="width: 50px"/>
          <br/>
          <?php $swordprice = 20.00; ?>
       </td></tr>
       <tr><td class="td1">
          <br/>
          <img class="disc" src="images/Bow_and_Arrows.png"></img><br/>
            Item Name: Normal Bow<br/>
            Price: $12.00<br/>
          <input type="number" name="bowNum" min="0" style="width: 50px"/>
          <br/>
       <?php $bowprice = 12.00; ?>
       </td></tr>
     </table> 
     <input type="submit" id="orderButton" name="order" value="Order"/>
    </form>      
  </nav>

最后,我想以某种方式将所有项目及其信息放入一个数组中以存储它们。我也不确定这是否是实现它的最佳方式。我还没有进入这部分,因为上面的表格一直是空的。即使我为每个项目都输入了一个值。

   if (isset($GET['items'])) {
        $wandnum = $_GET['wandNum'];
        $swordnum = $_GET['swordNum'];
        $bownum = $_GET['bowNum'];

这只是检查值是否超过 0...我认为..然后希望它将值放入数组中。

          if ($wandnum > 0) {
             $wand = array ("Butterfly Wand", $wandprice, $wandnum);
             $items[] = array_push($wand);
           }
          if ($swordnum > 0) {
             $sword = array ("Normal Sword", $swordprice, $swordnum);
             $items[] = array_push($sword);
           }
           if ($bownum > 0) {
             $bow = array ("Normal Bow", $bowprice, $bownum);
             $items[] = array_push($bow);
           }
     }
    ?>

我无法通过 if 语句,因为显然它没有设置。我没有用于 html 或 php 的 IDE(任何带有调试功能的免费 IDE 都很棒)我通过命令行运行代码并且运行良好。我只是无法弄清楚为什么没有价值观。我的其他页面运行良好,所以我不确定为什么这个页面给我带来了麻烦。

【问题讨论】:

  • 你打错了,应该是$_GET['items']而不是$GET['items']。但是,isset($_GET['items']) 总是评估为 false,因为您没有任何具有该名称的表单元素。您已将name="items" 添加到表单本身,但不会发送表单标签。尝试将其更改为 isset($_GET['order'])(这是您的按钮)。
  • 感谢您发现错字。当我将它从 $_POST 更改为 GET 时一定发生了。我在其他页面上使用了表单标签,它有效,但我也会尝试一下。

标签: php html forms post get


【解决方案1】:

需要在开头添加:

<?php  
if(isset($_GET['order'])) {
      if (isset($_GET['items'])) {
            $wandnum = $_GET['wandNum'];
            $swordnum = $_GET['swordNum'];
            $bownum = $_GET['bowNum'];

      if ($wandnum > 0) {
                 $wand = array ("Butterfly Wand", $wandprice, $wandnum);
                 $items[] = array_push($wand);
               }
              if ($swordnum > 0) {
                 $sword = array ("Normal Sword", $swordprice, $swordnum);
                 $items[] = array_push($sword);
               }
               if ($bownum > 0) {
                 $bow = array ("Normal Bow", $bowprice, $bownum);
                 $items[] = array_push($bow);
               }
         }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多