2016-02-19 77 views
1

附加的是我的代码的图片。我试图通过名为'num'的按钮的index.php值(4或8)来点击选择Snacks.php并回显变量$ snacks。PHP表格只发布一系列输入中的最后一个值

问题是它只传递最后一个值为8的输入值(不管我是否点击4或8)。我颠倒了输入的顺序只是为了仔细检查,当我这样做时不管我点击了什么,我只能得到4的值。

输入上的index.php

<div class="pricing-button"> 
    <form method="POST" action="ChooseSnacks.php"> 
     <input class="btn btn-primary btn-md btn-square" onclick="change('19.99')" type="text" value = "4" name="num[]" readonly></a> 
     <input class="btn btn-primary btn-md btn-square" onclick="change('25.00')" type="text" value = "8" name="num[]" readonly></a>            
</div> 

提交关于index.php的按钮

<input class="btn btn-primary btn-lg btn-square" type="Submit" name="Submit" id="Submit" value='Submit'> 

会话开始chooseSnacks.php

<?php 
session_start(); 
$snacks = $_POST['num[]']; 
?> 

回声可变

<div class="categories"> 
    <h3>Your Carepackage</h3> 
    <p> <?php echo $snacks; ?> Snacks Every <?php echo $snacksNum; ?> </p> </div 

Index.php chooseSnacks.php

+3

您的输入具有相同的名称,因此最后一个覆盖其他名称。尝试使用数组'name =“num []”' – AbraCadaver

+0

我需要更改$ snacks = $ _POST ['num'];到$ snack = $ _POST ['num []'];?因为它在我尝试它们时设置'数组'或空白 – Nyhan

+1

您需要遍历$零食和回声。 – AbraCadaver

回答

1

改变它在问候你需要删除从那里[]$_POST['num[]'];,因为你已经将它们声明为name="num[]"中的一个数组。您需要使用foreach($_POST['num'] as $var)并检查它们是否不为空。

例如:

<div class="pricing-button"> 
    <form method="POST" action=""> 
     <input class="btn btn-primary btn-md btn-square" onclick="change('19.99')" type="text" value = "4" name="num[]" readonly></a> 
     <input class="btn btn-primary btn-md btn-square" onclick="change('25.00')" type="text" value = "8" name="num[]" readonly></a> 

<input type="submit" name="Submit" value="Submit"> 

</div> 


<?php 

$inputs = !empty($_POST['num']) ? $_POST['num'] : array(); 

foreach($inputs as $value) { 

    echo $value . "<br>"; 

} 

这将呼应:(如测试)

 
4 
8 

我不确定什么onclick="change('19.99')"等应该好像和需要作出反应适用于开始会话的会话。

1

嗯,你input typeTEXT所以它覆盖的最后一个值。 如果你希望用户选择一个选项,你应该改变类型RADIO,或设置值,并将其命名为空白,并用JavaScript

相关问题