从关联数组创建的输入中保留 submit/reload 上的输入值(否 Jquery/Javascript)
retain input value on submit/reload from input created from associative array (No Jquery/Javascript)
这里是学生。我在 php 中使用 class,我必须使用 php 做所有事情,而不是 jQuery 或 javascript(不是抱怨,就是这样我正在服用 class - 它非常酷,我非常喜欢它)。
我正在开发学生 php 应用程序,完成后我将使用数据抓取来访问本周新发布的漫画书并将它们存储在一个关联数组中,然后循环创建一个关联数组一系列输入(数字),以允许用户指定他们想要订购的每部漫画的数量。然后我会做一些数学运算来向用户显示小计、税金和总计,并要求他们确认或修改他们的订单。这是一个学生项目,我是一名学生。这不是真实世界的用例,而是培训课程。
我发现的问题是,在提交时,我无法填充输入值,以便其他人可以看到他们 ordered/what 他们的订单价值是他们想要的 'revise' 并在确认前重新提交订单。
var_dumps 表明我有值,但在执行 post 返回提交后,我无法在其各自的输入字段中获得 repopulate/display 的值。对我来说,问题似乎出在“. $_POST['valueName'] .”。由于每个输入都是从关联数组生成的,所以我不知道名称是什么,所以我不能简单地做“$_POST['valueName']”,而是我必须做类似“$_POST[' $var']",但这不起作用,因为它是通过串联完成的。希望有人知道我如何最好地解决这个问题。
再一次 - 我是一名学生,所以请假设我什么都不知道 - 谢谢大家的观看
干杯!
这是我的测试数组:
<?php
// My test array
$newRelease = [
'All-New Wolverine #7' => '3.99',
'Captain America Omnibus Volume 1 HC (New Printing)' => '125.00',
'Amazing Spider-Man #11' => '3.99',
'Daredevil #6 (David Lopez Story Thus Far Variant Cover)' => 'AR',
'Doctor Strange #7 (Chris Bachalo Regular Cover)' => '3.99',
];
/*
* Loop thru array, create inputs which populate
* when submitted based on post values
* PHP course - can't use javascript/jquery - must be PHP
foreach ($newRelease as $title => $price) {
echo $title . ' - ' . $price . ' (ea.) <input type="text" name="' . $title . '" value="' . $_POST[$title] . '" > <br /> -- ' . $check . ' -- <br/><br />';
}
问题:
The problem i'm finding is that on submit, i'm not able to populate the input values so people can see what ordered should they want to change them once they see the total.
解法:
在foreach
循环的每次迭代中,检查是否设置了$_POST['YOUR_FIELD_NAME']
。如果已设置,则显示用户提交的值,即 $_POST['YOUR_FIELD_NAME']
,否则显示预定义的数组值 price
.
<?php
$newRelease = [
'All-New Wolverine #7' => '3.99',
'Captain America Omnibus Volume 1 HC (New Printing)' => '125.00',
'Amazing Spider-Man #11' => '3.99',
'Daredevil #6 (David Lopez Story Thus Far Variant Cover)' => 'AR',
'Doctor Strange #7 (Chris Bachalo Regular Cover)' => '3.99',
];
?>
<form action="index.php" method="POST">
<?php
foreach ($newRelease as $title => $price){
$title = str_replace(' ', '_', $title);
?>
<input type="text" name="<?php echo $title; ?>" value="<?php if(isset($_POST[$title])){ echo $_POST[$title]; }else{ echo $price; } ?>" ><br />
<?php
}
?>
<input type="submit" name="submit" value="submit" />
</form>
<?php
?>
为什么我用了str_replace()
功能?
您不能在输入字段名称中使用点或 space。来自 the documentation:
Dots and spaces in variable names are converted to underscores. For example becomes $_REQUEST["a_b"].
所以你必须使用 str_replace()
函数将所有白色 space 替换为下划线,以便 $_POST
可以检测到用户提交的值。如果要查看 $_POST
superglobal 的内容,请执行 var_dump($_POST);
.
这里是学生。我在 php 中使用 class,我必须使用 php 做所有事情,而不是 jQuery 或 javascript(不是抱怨,就是这样我正在服用 class - 它非常酷,我非常喜欢它)。
我正在开发学生 php 应用程序,完成后我将使用数据抓取来访问本周新发布的漫画书并将它们存储在一个关联数组中,然后循环创建一个关联数组一系列输入(数字),以允许用户指定他们想要订购的每部漫画的数量。然后我会做一些数学运算来向用户显示小计、税金和总计,并要求他们确认或修改他们的订单。这是一个学生项目,我是一名学生。这不是真实世界的用例,而是培训课程。
我发现的问题是,在提交时,我无法填充输入值,以便其他人可以看到他们 ordered/what 他们的订单价值是他们想要的 'revise' 并在确认前重新提交订单。
var_dumps 表明我有值,但在执行 post 返回提交后,我无法在其各自的输入字段中获得 repopulate/display 的值。对我来说,问题似乎出在“. $_POST['valueName'] .”。由于每个输入都是从关联数组生成的,所以我不知道名称是什么,所以我不能简单地做“$_POST['valueName']”,而是我必须做类似“$_POST[' $var']",但这不起作用,因为它是通过串联完成的。希望有人知道我如何最好地解决这个问题。
再一次 - 我是一名学生,所以请假设我什么都不知道 - 谢谢大家的观看 干杯!
这是我的测试数组:
<?php
// My test array
$newRelease = [
'All-New Wolverine #7' => '3.99',
'Captain America Omnibus Volume 1 HC (New Printing)' => '125.00',
'Amazing Spider-Man #11' => '3.99',
'Daredevil #6 (David Lopez Story Thus Far Variant Cover)' => 'AR',
'Doctor Strange #7 (Chris Bachalo Regular Cover)' => '3.99',
];
/*
* Loop thru array, create inputs which populate
* when submitted based on post values
* PHP course - can't use javascript/jquery - must be PHP
foreach ($newRelease as $title => $price) {
echo $title . ' - ' . $price . ' (ea.) <input type="text" name="' . $title . '" value="' . $_POST[$title] . '" > <br /> -- ' . $check . ' -- <br/><br />';
}
问题:
The problem i'm finding is that on submit, i'm not able to populate the input values so people can see what ordered should they want to change them once they see the total.
解法:
在foreach
循环的每次迭代中,检查是否设置了$_POST['YOUR_FIELD_NAME']
。如果已设置,则显示用户提交的值,即 $_POST['YOUR_FIELD_NAME']
,否则显示预定义的数组值 price
.
<?php
$newRelease = [
'All-New Wolverine #7' => '3.99',
'Captain America Omnibus Volume 1 HC (New Printing)' => '125.00',
'Amazing Spider-Man #11' => '3.99',
'Daredevil #6 (David Lopez Story Thus Far Variant Cover)' => 'AR',
'Doctor Strange #7 (Chris Bachalo Regular Cover)' => '3.99',
];
?>
<form action="index.php" method="POST">
<?php
foreach ($newRelease as $title => $price){
$title = str_replace(' ', '_', $title);
?>
<input type="text" name="<?php echo $title; ?>" value="<?php if(isset($_POST[$title])){ echo $_POST[$title]; }else{ echo $price; } ?>" ><br />
<?php
}
?>
<input type="submit" name="submit" value="submit" />
</form>
<?php
?>
为什么我用了str_replace()
功能?
您不能在输入字段名称中使用点或 space。来自 the documentation:
Dots and spaces in variable names are converted to underscores. For example becomes $_REQUEST["a_b"].
所以你必须使用 str_replace()
函数将所有白色 space 替换为下划线,以便 $_POST
可以检测到用户提交的值。如果要查看 $_POST
superglobal 的内容,请执行 var_dump($_POST);
.