我如何在php中做无限字段?这是场景:
起初,只有 2 个字段,我们称之为:名字 1,姓氏 1
我想要做的是,当我单击“添加”按钮时,它将在新行中添加另外 2 个字段,字段标签/名称应该是名字 2,姓氏 2。当我再次单击时,它将有名字3,姓氏3,依此类推..
谁能给我一些php中的示例脚本?我是 PHP 新手。
表单应为 HTML。如果有人可以提供 Ajax 示例代码,那将是一大优势。
这取决于您所说的“字段”是什么意思。听起来好像您在谈论一个表单,它不是 PHP,而是 HTML。您可以将按钮 [添加] 回传到服务器,然后使用另一组表单输入刷新页面。您也可以通过 javascript 执行此操作,而无需刷新页面。
$(document).ready(function(){
$("input[value='Add']").click(function(event){
event.preventDefault();
$("p.field:last").clone().insertAfter("p.field:last");
});
});
<form method="post">
<p class="field">
<input type="text" name="firstname[]" value="" />
<input type="text" name="lastname[]" value="" />
</p>
<p>
<input type="submit" name="submit" value="Add" />
<input type="submit" name="submit" value="Done" />
</p>
</form>
我不鼓励你按原样使用它
<?php
$count = 1;
if ($_POST["submit"] == "Add") {
$count = ($_POST["firstname"]) ? (count($_POST["firstname"]) + 1) : 1;
} else
if ($_POST["submit"] == "Done") {
print "<pre>";
print_r($_POST["firstname"]);
print_r($_POST["lastname"]);
print "</pre>";
}
?>
<form method="post">
<?php for($i = 0; $i < $count; $i++) { ?>
<p class="field">
<input type="text" name="firstname[]" value="<?php print $_POST["firstname"][$i]; ?>" />
<input type="text" name="lastname[]" value="<?php print $_POST["lastname"][$i]; ?>" />
</p>
<?php } ?>
<p>
<input type="submit" name="submit" value="Add" />
<input type="submit" name="submit" value="Done" />
</p>
</form>
有两种方法可以做到这一点,要么单独使用 PHP,要么使用一些花哨的 JavaScript。我将解决仅限 PHP 的解决方案。JavaScript 解决方案的响应速度会更快,因为不会重复往返服务器,但它也仅适用于启用 JavaScript 的用户,而 PHP 解决方案适用于所有人。
解决方案的概要如下:
$count
为 1,生成一行。count
变量的相同 PHP 文件中。脚本从头开始重新启动,递增$count
并显示比上次多一行。这是一些示例代码。我很抱歉我没有在我正在写这个的机器上安装 PHP,所以这完全未经测试。希望没有太多可怕的语法错误!
<?php
$count = isset($_POST['count']) ? $_POST['count'] : 1;
if (isset($_POST['add']))
++$count;
else if (isset($_POST['submit']))
{
header('Content-Type: text/plain');
print_r($_POST);
exit;
}
?>
<html>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']) ?>" method="post">
<input type="hidden" name="count" value="<?php echo $count ?>" />
<?php for ($i = 1; $i <= $count; ++$i) { ?>
[<?php echo $i ?>]
First: <input type="text" name="firstName<?php echo $i ?>"
value="<?php echo htmlspecialchars($_POST["firstName$i"]) ?>" />
Last: <input type="text" name="lastName<?php echo $i ?>"
value="<?php echo htmlspecialchars($_POST["lastName$i"]) ?>" />
<br />
<?php } ?>
<input type="submit" name="add" value="Add" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
哦,你想要一个 JavaScript 解决方案,嗯?好吧,您已经得到了非常好的 jQuery 答案。那么,一个长得可笑的纯 JavaScript 解决方案怎么样?
<html>
<head>
<script type="text/javascript">
// <![CDATA[
var count = 0;
function addRow() {
var table = document.getElementById("table");
var row = document.createElement("tr");
var countCell = document.createElement("td");
var countText = document.createTextNode(++count);
var firstCell = document.createElement("td");
var firstInput = document.createElement("input");
var lastCell = document.createElement("td");
var lastInput = document.createElement("input");
firstInput.type = "text";
firstInput.name = "firstName" + count;
lastInput.type = "text";
lastInput.name = "lastName" + count;
table .appendChild(row);
row .appendChild(countCell);
countCell.appendChild(countText);
row .appendChild(firstCell);
firstCell.appendChild(firstInput);
row .appendChild(lastCell);
lastCell .appendChild(lastInput);
}
// ]]>
</script>
</head>
<body>
<form action="somewhere.php" method="post">
<table id="table">
<tr>
<th>Row</th>
<th>First</th>
<th>Last</th>
</tr>
</table>
<script type="text/javascript">
addRow();
</script>
<input type="button" value="Add" onclick="addRow()" />
<input type="submit" value="Submit" />
</form>
</body>
</html>