我无法在php中访问我的表单中的变量

时间:2018-02-05 10:35:13

标签: php html forms post get

我现在已经看了一段时间,看着所有类似的问题,但我找不到能解决问题的任何问题。

所以我在主要的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语句,因为显然它没有设置。我没有IDE的html或php(任何好的免费调试都会很棒)我通过命令行运行代码,运行正常。我无法弄清楚为什么没有价值观。我的另一页运行正常,所以我不确定为什么这个给我带来了麻烦。

1 个答案:

答案 0 :(得分:0)

您需要在开头添加:

<?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);
               }
         }

    }