我有一个正在运行的php页面,但我对用户可以添加的行设置了限制,因为编写每行的代码是疯狂的。 我阅读,测试过,但无法想到如何在我的代码中使用数组。
用户必须可以随意在表中添加任意数量的行,并将所有行打印在csv文件中。
请参阅此JSFIDDLE,因为它会更好地澄清所有内容。
我的问题是,我如何"转换"以下代码,在数组就绪代码中?
php部分在下面,"你得到了重点"意味着,对于每一行,我必须复制并粘贴该块N次。 content .=
的内容相同:
$name = addslashes(strip_tags($_POST["name"]));
$surname = addslashes(strip_tags($_POST["surname"]));
$email = addslashes(strip_tags($_POST["email"]));
$telephone = addslashes(strip_tags($_POST["telephone"]));
$books0 = addslashes(strip_tags(@$_POST['books0'])) ?: '';
$tv-series0 = addslashes(strip_tags(@$_POST['tv-series0'])) ?: '';
$movies0 = addslashes(strip_tags(@$_POST['movies0'])) ?: '';
$hobbies0 = addslashes(strip_tags(@$_POST['hobbies0'])) ?: '';
$skills0 = addslashes(strip_tags(@$_POST['skills0'])) ?: '';
$books1 = addslashes(strip_tags(@$_POST['books1'])) ?: '';
$tv-series1 = addslashes(strip_tags(@$_POST['tv-series1'])) ?: '';
$movies1 = addslashes(strip_tags(@$_POST['movies1'])) ?: '';
$hobbies1 = addslashes(strip_tags(@$_POST['hobbies1'])) ?: '';
$skills1 = addslashes(strip_tags(@$_POST['skills1'])) ?: '';
/* [ You got the point ...] */
$content = "Name;$name\n";
$content .= "Surname;$surname\n";
$content .= "Email;$email\n";
$content .= "Telephone;$telephone\n\n";
//set the data of the CSV
$content .= "Books;Tv-series;Movies;Hobbies;Skills\n";
$content .= "$books0;$tv-series0;$movies0;$hobbies0;$skills0\n";
$content .= "$books1;$tv-series1;$movies1;$hobbies1;$skills1\n";
$content .= "$books2;$tv-series2;$movies2;$hobbies2;$skills2\n";
$content .= "$books3;$tv-series3;$movies3;$hobbies3;$skills3\n";
$content .= "$books4;$tv-series4;$movies4;$hobbies4;$skills4\n";
$content .= "$books5;$tv-series5;$movies5;$hobbies5;$skills5\n";
# Create the file and redirect to index page
$date = date("Ymd");
$target_dir = "C:/$name_".$date.".csv";
file_put_contents($target_dir, $content);
header("Location:index.php");
exit();
}
?>
更新:我被要求澄清我的问题。 此代码从表单中获取值并将其写入csv。 如果我添加(来自jsfiddle)许多行怎么办?我应该为每一行分配许多值。 我希望使用数组获得更好的结果,并且可能使用更少的代码。
使用数组,我不需要限制用户可以添加的行。相反,我被迫知道。
再说一次,如果有人能够编写一个与我的情况相符的数组,这对我有很大的帮助。 如果我不了解阵列或一般开发
,我很抱歉答案 0 :(得分:1)
使用以下名称创建表单字段:
<input name="prefs[0][book]">
<input name="prefs[0][tv]">
<input name="prefs[0][movie]">
...
<input name="prefs[1][book]">
<input name="prefs[1][tv]">
<input name="prefs[1][movie]">
...
这将为您提供所需的数组格式,而无需任何额外的工作。然后将其转储为CSV:
$csv = fopen("C:/{$name}_{$date}.csv", 'w');
foreach ($_POST['prefs'] as $pref) {
fputcsv($csv, $pref);
}
这就是你需要做的全部事情。不要剥离标签或添加斜杠,fputcsv
将负责正确的转义。当然你可能想要做一些数据验证等等,但我会把它留给你。