Bunu yapmanın iki yolu, sadece PHP kullanarak veya bazı fantezi JavaScript tarafından da vardır. Ben PHP-tek çözüm mücadele edecek. Orada sunucuya tur gezileri tekrarlanan olmaz ama bir PHP çözüm herkes için çalışır oysa o da sadece, JavaScript etkin kullanıcılar için çalışır gibi bir JavaScript çözümü çok daha duyarlı olacaktır.
Çözeltinin bir genel hatları şudur:
- Başlangıçta
$count
1 ve bir satır oluşturulur.
- Kullanıcı tıkladığında ekleme, form dahil bir gizli
count
değişkeni ile geri aynı PHP dosyası yayınlanmıştır. Komut başından itibaren yeniden başlar, artışlarla $count
, ve son bir kez daha görüntüler bir daha satır.
- Kullanıcı tıkladığında Gönder varsa, girilmiş isimler işlenir.
İşte bazı örnek kod. Ben bu yüzden tamamen denenmemiş PHP Ben bunu yazıyorum makinede yüklü yok özür dileriz. Umarım çok korkunç sözdizimi hataları yok!
<?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>
Oh ve eh, bir JavaScript çözüm istiyor? Eh zaten gerçekten güzel jQuery cevap var. Nasıl gülünç uzun düz JavaScript çözümü konusunda, o zaman?
<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>