我正在尝试获取HTML元素的索引并将其传递给PHP变量以最终上传到数据库。
<form method="post" action="insert.php" enctype="multipart/form-data">
....
<div><textarea name="paragraph[]"></textarea></div> //index 0
<div><textarea name="paragraph[]"></textarea></div> //index 1
<div><textarea name="paragraph[]"></textarea></div> //index 2
....
</form>
if(isset($_POST['paragraph'])) {
foreach ( $_POST['paragraph'] as $paragraph){
//get index of container div for this paragraph and store it in a variable
}
}
看着this Stack Overflow answer,我猜我应该做点什么:
$divs = $dom->getElementsByTagName('div');
然而,有没有什么方法可以从<div>
循环中获取当前<div>
元素并存储它,而不是获取所有foreach
元素并将它们存储在数组中变量中的索引?
一些澄清:表格是动态的。所以它看起来也像这样:
<form>
<div><textarea name="paragraph[]"></textarea></div> //index 0
<div><textarea name="something_else"></textarea></div> index 1
<div><textarea name="paragraph[]"></textarea></div> //index 2
<div><textarea name="paragraph[]"></textarea></div> //index 3
</form>
答案 0 :(得分:2)
发送给PHP的参数只是输入,没有关于包含输入的HTML的信息。所以你不能得到DIV索引,因为它们不是输入的一部分。
您可以更改HTML,以便输入名称包含DIV索引。
<form>
<div><textarea name="paragraph[0]"></textarea></div> //index 0
<div><textarea name="something_else"></textarea></div> index 1
<div><textarea name="paragraph[2]"></textarea></div> //index 2
<div><textarea name="paragraph[3]"></textarea></div> //index 3
</form>
由于您是动态生成HTML,因此创建它的循环应该能够将DIV索引插入到文本区域的名称中。
然后您的PHP可以通过添加到foreach
来获取索引。
foreach ($_POST['paragraph'] AS $divindex => $paragraph)
答案 1 :(得分:1)
您可以使用基本数组来保存所有项目,例如以下HTML:
var NBSref = textBox3.Text;
var Lenght = textBox1.Text;
var Width = textBox2.Text;
var separator = ",";
string csvpath = "FILE LOCATION";
StringBuilder csvcontentNew = new StringBuilder();
csvcontentNew.Append(NBSref + separator + Lenght + separator + Width); // Try it like this
//String that will define CSV Location
File.AppendAllText(csvpath, csvcontentNew.ToString());
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
然后,当您访问<div><textarea name="items[][paragraph]"></textarea></div> //index 0
<div><textarea name="items[][something_else]"></textarea></div> index 1
<div><textarea name="items[][paragraph]"></textarea></div> //index 2
<div><textarea name="items[][paragraph]"></textarea></div> //index 3
时,您将列出其索引:
$_POST['items']
您可以使用以下循环轻松获取此阵列中保存的所有信息:
array (size=1)
'items' =>
array (size=4)
0 =>
array (size=1)
'paragraph' => string 'test' (length=4)
1 =>
array (size=1)
'something_else' => string 'test 2' (length=6)
2 =>
array (size=1)
'paragraph' => string 'test 3' (length=6)
3 =>
array (size=1)
'paragraph' => string 'test 4' (length=6)
将打印:
foreach($_POST['items'] as $index => $item) {
echo "Index is: " . $index;
echo "Key is: " . key($item);
echo "Value is: " . $item[key($item)];
}
如果您希望轻松获取Index is: 0
Key is: paragraph
Value is: test
Index is: 1
Key is: something_else
Value is: test 2
etc.
的所有值,可以使用array_column来访问这些值,例如:
paragraph
将打印:
array_column($_POST['items'], 'paragraph');