【发布时间】: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 时一定发生了。我在其他页面上使用了表单标签,它有效,但我也会尝试一下。