此处为学生。我在php中学习一个类,我必须使用php,而不是jQuery或javascript来完成所有工作(不要抱怨,只是我学习的这个类的情况如何——它非常酷,我非常喜欢它)。
我正在开发学生php应用程序,当我完成后,该应用程序将使用数据抓取来访问本周新发布的漫画书,并将它们存储在一个关联数组中,然后循环该数组以创建一系列输入(数字),允许用户指定他们想要订购的每本漫画的数量。然后我会做一些数学运算,向用户显示小计、税款和总额,并要求他们确认或修改订单。这是一个学生项目,我是一名学生。这不是一个真实世界的用例,而是一堂培训课。
我发现的问题是,在提交时,我无法填充输入值,这样人们就可以看到他们订购了什么/他们的订单值是什么,如果他们想"修改"它,并在确认之前重新提交订单。
var_dumps显示我有这个值,只是在进行post-back提交后,我无法在其相应的输入字段中重新填充/显示这个值。在我看来,问题似乎出在".$_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 />';
}
问题:
我发现的问题是,在提交时,我无法填充输入值,这样人们就可以在看到总数后看到他们想要更改的顺序。
解决方案:
在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()
函数
在输入字段名称中不能使用点或空格。来自文件:
变量名中的点和空格将转换为下划线。例如,变为$_REQUEST["a_b"]。
因此,您必须使用str_replace()
函数将所有空格替换为下划线,以便$_POST
能够检测到用户提交的值。如果要查看$_POST
超全局的内容,请执行var_dump($_POST);
。