我得到了一个dillema,我正在尝试为我的代码找到解决方案。如何使用当用户在index.php的文本框中输入给定数量时,它会将输入数量传输到invoice.php。我试过做post方法,但似乎它不起作用:/一如既往,任何帮助或建议将不胜感激!我希望这很简单:(这是我的代码:
此代码包含我的产品数组,还包含我的文本框。
//The following arrays contain our products and their information, one product per array.
$hulkhamburger = array('Product' => 'Hulk Hamburger', 'Description' => '...', 'Price' => '$1.00', 'Quantity' => "<input type='text' name='quantity1'>");
$atomichotdog = array('Product' => 'Atomic Hot Dog', 'Description' => '...', 'Price' => '$2.00', 'Quantity' => "<input type='text' name='quantity2'>");
$friedchicken = array('Product' => 'Fantastic 4 Fried Chicken', 'Description' => '...', 'Price' => '$3.00', 'Quantity' => "<input type='text' name='quantity3'>");
$psyonicpizza = array('Product' => 'Psyonic Pizza', 'Description' => '...', 'Price' => '$4.00', 'Quantity' => "<input type='text' name='quantity4'>");
$marvelmeatloaf = array('Product' => 'Marvel Meatloaf', 'Description' => '...', 'Price' => '$5.00', 'Quantity' => "<input type='text' name='quantity5'>");
//The following array takes our previous five arrays and puts them into one array for easier coding and reading.
$allfood = array ($hulkhamburger, $atomichotdog, $friedchicken, $psyonicpizza, $marvelmeatloaf);
?>
的index.php
<html>
<style>
body{
background-image: url('URL HERE');
font-family: "Helvetica";
font-size:15px;
}
h1{
color:black;
text-align:center;
}
p{
font-size:15px;
}
</style>
<h1>
STORE TITLE HERE
</h1>
<body>
<form action="login.php" method="post">
<?php
//Include products info.inc (Which holds all our product arrays and info)
//Credit: Tracy & Mark (THank you!)
include 'products_info.inc';
/*The following code centers my table on the page, makes the table background white,
makes the table 50% of the browser window, gives it a border of 1 px,
gives a padding of 2 px between the cell border and content, and gives 1 px of spacing between cells.
*/
echo "<table align=center bgcolor='FFFFFF' width=50% border=1 cellpadding=1
cellspacing=2>";
//Credit: Tracy & Mark (THank you!)
echo '<th>Product</th> <th>Description</th> <th>Price</th> <th>Quantity</th>';
//The following code loops through the whole table body and then prints each row.
for($i=0; $i<count($allfood); $i++)
{
//Credit: Tracy & Mark (THank you!)
echo "<tr align=center>";
echo "<td>{$allfood[$i]['Product']}</td>";
echo "<td>{$allfood[$i]['Description']}</td>";
echo "<td>{$allfood[$i]['Price']}</td>";
echo "<td>{$allfood[$i]['Quantity']}</td>";
echo "</tr>";
}
//This code ends the table.
echo "</table>";
echo "<br>";
?>
<br><center><input type='submit' name='purchase' value='Purchase'></center>
</form>
</body>
</html>
这是我的invoice.php
<html>
<style>
body{
background-image: url('URL HERE');
font-family: "Helvetica";
font-size:15px;
}
h1{
color:black;
text-align:center;
}
p{
font-size:15px;
}
</style>
<h1>
Invoice
</h1>
</html>
<?php
//Include products info.inc (Which holds all our product arrays and info)
//Credit: Tracy & Mark (Thank you!)
include 'products_info.inc';
//Display the invoice & 'WELCOME USER. THANK YOU FOR USING THIS DAMN THING msg'
/*The following code centers my invoice table on the page, makes the table background white,
makes the table 50% of the browser window, gives it a border of 1 px,
gives a padding of 2 px between the cell border and content, and gives 1 px of spacing between cells.
*/
echo "<table align=center bgcolor='FFFFFF' width=50% border=1 cellpadding=1cellspacing=2>";
echo "<tr>";
echo "<td align=center><b>Product</b></td>";
echo "<td align=center><b>Quantity</b></td>";
echo "<td align=center><b>Price</></td>";
echo "<td align=center><b>Extended Price</b></td>";
echo "</tr>";
for($i=0; $i<count($allfood); $i++)
{
//Credit: Tracy & Mark (Thank you!)
$qty= @$_POST['Quantity']['$i'];
// This calculates the price if the user orders more than 1 item.
$extendedprice = $qty*$allfood[$i]['Price'];
echo "<tr>";
echo "<td align=center>{$allfood[$i]['Product']}</td>";
echo "<td align=center>$extendedprice</td>";
echo "<td align=center>{$allfood[$i]['Price']}</td>";
echo "</tr>";
}
// The goal here was to make it so that if the user selected a certain quantity from index.php, it would carry over and display on the invoice.php
if ($qty = 0)
{
echo "please choose 1";
}
elseif ($qty > 0)
{
echo $qty;
}
/*echo "<tr>";
echo "<td align=center>Subtotal</b></td>";
echo "<td align=center></td>";
echo "<td align=center></td>";
echo "<tr>";
echo "<td align=center>Tax at 5.75%</td>";
echo "<td align=center></td>";
echo "<td align=center></td>";
echo "<tr>";
echo "<td align=center><b>Grand total</b></td>";
echo "<td align=center></td>";
echo "<td align=center></td>";
*/
echo "</table>";
?>
<br>
<center>
<form action="index.php" method="post">
<input type="submit" name="home" value="Back to homepage">
</form>
</center>
答案 0 :(得分:0)
在index.php里面,你已经创建了表格。没有文本框,隐藏字段等表单元素。表格不会发布表格值,因此您没有在invoice.php中获得任何发布值。
答案 1 :(得分:0)
在index.php中,您的表单操作是“login.php”,而不是invoice.php,因此它不会向后者传递任何内容。
另外,在index.php中,没有名为“quantity”的文本框,因此$ _POST ['quantity]将什么都没有。
答案 2 :(得分:0)
表单就像处理数据传输的容器。 action属性告诉您数据的发送位置。
你来了
<form action="login.php" method="post">
这意味着表单数据将被发送到login.php页面。不是我想要的。
然后,在目标页面(由action属性定义)中,您可以在$_GET
或$_POST
数组中获取参数值,具体取决于表单的method属性。
我在你给我们的代码中没有看到任何文本框。如果您添加类似
的内容<input type="text" name="my_textbox"/>
您可以使用
获取目标网页中文本框的值$_POST['my_textbox']
希望这有帮助。
顺便说一句,我注意到你的代码中出现了一些错误:
index.php:
<head>...</head>
标记<h1>
<body>...</body>
那样拥有html输出
<th>
)应位于<tr>
<td>
内。invoice.php:
$qty= @$_POST['Quantity']['$i']
(@删除错误),测试您的密钥是否存在(if isset($_POST['Quantity']) && isset($_POST['Quantity'][$i]) $qty = $_POST['Quantity'][$i];
if ($qty = 0)
应该是if ($qty == 0)
:=
是影响操作符,==
是比较运算符<body>...</body>
标记,而样式应该是html标题(<head>...</head>
)