简单来说,我有一个有三个相同输入字段的表单。名字不同;但是,当发布时,它们具有相同的结构,只是不同的名称前缀(即三个系统具有不同的名称前缀:它们将是windowstitle,mactitle,linuxtitle等)。
目前我有一个只能使用一个同名的流程,即windowstitle(当然,如果填写了表格)
代码看起来像这样:
<?php
$title = $_POST['windowstitle'];
//validate info or redirect
if ($title != "" ) {
$title = mysql_real_escape_string($title);
$sql = "insert into newwindows (title) values ('$title');
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
?>
表单块看起来像这样
<form action="newuserprocess.php" method="post" enctype="multipart/form-data">
<div class="form">
<h3>Windows</h3>
<!-- title of system name -->
<p><label for="windowstitle"> edition of system </lable></p>
<input type="text" name="windowstitle" size=20 /><br />
</div>
<div class="form">
<h3>Mac</h3>
<!-- title of system name -->
<p><label for="mactitle"> edition of system </lable></p>
<input type="text" name="mactitle" size=20 /><br />
</div>
<p><input type="submit" id="submit" class="bigbutton" value="Upload" /></p>
</form>
然而,这留下了其他形式,唯一的区别是我想输入的数据库和post值前缀不同。
所以我提出了我认为是一个聪明的解决方案:
<?php
$arr = array('windows', 'mac', 'linux');
foreach ($arr as &$value) {
$title = $_POST['$valuetitle'];
//validate info
if ($title != "" ) {
$title = mysql_real_escape_string($title);
$sql = "insert into new$value (title) values ('$title');
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
}
?>
然而,这不起作用。我知道部分原因;因为''
使变量显示为原样,因此我的$_Post
将始终返回$ value。另一个原因与我的新$ value数据库名称相同。这个的正确格式是什么?我如何使这项工作?
答案 0 :(得分:2)
$title = $_POST[$value . 'title'];
和
$sql = "insert into new$value (title) values ('$title')";
答案 1 :(得分:1)
Another reason is the same with my new$value database name. My question is what is the proper format for this?
为了清楚起见,我将$value
括在{$value}
括号中$arr
。您的格式有效但可能更清晰。查看一些测试:http://ideone.com/A2kWU
此外,如果您不更改数组foreach ($arr as $value) { //...
中的值,则应使用
{{1}}
防止意外更改。在这种情况下,它不会是一个大问题,因为你只是使用一次数组。
答案 2 :(得分:0)
编辑您的代码,如:
<?php
$arr = array('windows', 'mac', 'linux');
foreach ($arr as $value) {