如何正确地将用户输入从索引转移到发票?

时间:2013-11-08 09:36:22

标签: php forms post

我得到了一个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>

3 个答案:

答案 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:

  1. 样式应为<head>...</head>标记
  2. 您不应该像<h1>
  3. 之外的<body>...</body>那样拥有html输出
  4. 表格标题(<th>)应位于<tr> <td>内。
  5. invoice.php:

    1. $ allfood未宣布
    2. 优于$qty= @$_POST['Quantity']['$i'](@删除错误),测试您的密钥是否存在(if isset($_POST['Quantity']) && isset($_POST['Quantity'][$i]) $qty = $_POST['Quantity'][$i];
    3. if ($qty = 0)应该是if ($qty == 0)=是影响操作符,==是比较运算符
    4. 对于html来说,你的所有输出都应该是<body>...</body>标记,而样式应该是html标题(<head>...</head>