我正在开发一个非常简单的php页面。用户选择他们想要添加的数字,然后在新页面上输入数字,单击按钮,然后显示总和。
我无法弄清楚如何将数字加起来,因为我不能仅因为循环而为每个数字分配变量。我试过这个不使用循环,为每个循环分配变量,只是让按钮添加这些变量,但这需要多次输入代码,我希望这可以使用循环,以防我需要整合选择数百个数字或东西。如果php不是最好的,请告诉我什么会更好,但无论如何......如何将用户输入的数字加起来?
索引页:
<p>How many number would you like to add?</p>
<a href="calculator.php?inputs=2">2</a><br>
<a href="calculator.php?inputs=3">3</a><br>
<a href="calculator.php?inputs=4">4</a><br>
<a href="calculator.php?inputs=5">5</a><br>
计算器页面:
<?php
$inputs = $_GET['inputs'];
?>
<div>Enter the numbers<br>
<?php
for ($x=0; $x < $inputs; $x++) {
echo '<input type="number"><br>';
}
?>
</div>
<form action='' method='post'><input type='submit' value='Find value' name='findvalue'></form>
<?php
if (isset($_POST['findvalue'])) {
}
?>
答案 0 :(得分:0)
for ($x=0; $x < $inputs; $x++) {
echo '<input type="number"><br>';
}
您无法使用任何名称的输入。您可以使用动态名称,例如:
for ($x=0; $x < $inputs; $x++) {
echo '<input type="number" name="number_'.$x.'"><br>';
}
使用数组名称的更好方法:
for ($x=0; $x < $inputs; $x++) {
echo '<input type="number" name="number[]"><br>';
}
之后,var_dump你的$ _POST变量。
但是,创建动态字段的最佳方法是创建一个并使用javascript克隆它,当用户想要添加下一个值时。 jQuery示例:
<div class="myInputs"><input type="number" name="numbers[]"></div>
<a href="#" id="Add">Add input</a>
<script>
$('#Add').click(function(){
$('.myInputs input:first').clone().appendTo(".myInputs");
return false;
});
答案 1 :(得分:0)
您的网页上目前没有JavaScript。要与客户端进行交互,JavaScript是最佳选择,因为除非您需要在与用户交互之前保存数字,否则无需转到后端来创建输入字段
angular.module("Progress", [])
.controller("progress-controller", ['$scope', function($scope) {
$scope.lists = ["fruits" , "eggs" , "grocery"];
}])
.directive('progressbar', [function() {
return {
restrict: 'A',
scope: {
'progress': '=progressbar'
},
controller: function($scope, $element, $attrs) {
$element.progressbar({
lists: $scope.progress
})
$scope.$watch(function() {
$element.progressbar({lists: $scope.progress})
})
}
}
}])
&#13;
window.onload = function() {
document.getElementById("nums").onchange = function() {
var fields = document.getElementById("fields"),
numberOfField = parseInt(this.value, 10),
inputs = [];
for (var i = 0; i < numberOfField; i++) {
inputs.push('<input type="text" class="calcField" name="number' + i + '" />');
}
fields.innerHTML = inputs.length > 0 ? inputs.join("<br/>") : "";
}
document.getElementById("calc").onsubmit = function() {
var total = 0,
fields = document.querySelectorAll(".calcField");
for (var i = 0; i < fields.length; i++) {
var val = parseInt(fields[i].value, 10);
total += isNaN(val) ? 0 : val;
}
document.getElementById("total").value=total;
return false; // stop submission - remove to submit the form
}
}
&#13;
答案 2 :(得分:0)
试试这个:
<?php
$inputs = $_GET['inputs'];
?>
<form action='' method='post'>
<div>Enter the numbers<br>
<?php
for ($x=0; $x < $inputs; $x++) {
echo '<input name="numbers[]" type="number"><br>';
}
?>
</div>
<input type='submit' value='Find value' name='findvalue'>
</form>
<?php
if (isset($_POST['findvalue'])) {
print_r($_POST["numbers"]);
}
?>
答案 3 :(得分:0)
尝试为输入数量添加隐藏字段,然后使用它来循环
<?php
$inputs = $_GET['inputs'];
?>
<form action='' method='post'><input type='submit' value='Find value' name='findvalue'>
<div>Enter the numbers<br>
<input type="hidden" name="numberofinputs" value="<?php echo $inputs;?>"/>
<?php
for ($x=0; $x < $inputs; $x++) {
//Please note the $x
echo '<input type="number'.$x.'"><br>';
}
?>
</div>
</form>
<?php
if (isset($_POST['findvalue'])) {
$numberOfinputs = $_POST['numberofinputs'];
for($i=0; $i<numberOfinputs; $i++){
//You can access it here
echo $_POST['number'.$i];
}
}
?>