在我的第一段代码中,您可以看到我如何使用echo输出构建表。一切正常。
echo "<form method=\"post\" action=''>";
echo "<table border=\"1\">";
foreach($pdo -> query($sqlSpielerNamen) as $row){
echo "<tr>";
echo "<td style=\"font-size: 10;\">".$row['Player_ID']."</td>";
echo "<td style=\"font-size: 10;\">".$row['SpielerName']."</td>";
echo "<td syle=\"font-size: 10 ;\"><input name='note' type='text' class='textfield' id='note_id' value='$spielID' />";
echo "<td syle=\"font-size: 10 ;\"><input name='tore' type='text' class='textfield' id='tore_id' value='$spielID' />";
echo "</tr>";
}
echo "</table>";
echo "<br><br><input type=\"submit\" name=\"submit_eingabemaske\" value=\"Abschicken\">\n";
echo "</form>";
但是现在,在点击提交按钮后,我需要从该表中获得一个新输出。 我需要第一个字段'Player_ID'和最后两个字段'note'和'tore'。
目前我的输出看起来像这样。但我知道这不是正确的解决方案。
if (isset($_POST['submit_eingabemaske'])){
$Po = $_POST["tore"];
foreach ($row as $item){
echo $Po;
}}
我在第二段代码中要做的是,我的结果是正确的。我怎样才能做到这一点?我的另一个问题是,如何调用第一个字段'Player_ID'?字段“撕裂”和“名称”我可以使用$ POST [“tore”] ...
答案 0 :(得分:1)
这里有很多初学者的错误。
首先 - 你不应该使用带双引号的复杂字符串。
还有更简单的方法:
// see, I wrap string in single quotes,
// and all quotes inside the string are double ones
echo '<form method="post" action="">';
更简单的是关闭?>
:
<?php
// code here
?>
<form method="post" action="">
下一步,当您使用相同的name
创建大量字段时,您只会收到具有此名称的字段的最后一个值。所以,
<input name='note' type='text' class='textfield' id='note_id' value='11' />
<input name='note' type='text' class='textfield' id='note_id' value='22' />
<input name='note' type='text' class='textfield' id='note_id' value='33' />
只会在服务器端为您提供33
。这就是您需要对[]
使用name
表示法的原因:
<input name='note' type='text' class='textfield' id='note_id[]' value='11' />
<input name='note' type='text' class='textfield' id='note_id[]' value='22' />
<input name='note' type='text' class='textfield' id='note_id[]' value='33' />
在这种情况下,您的$_POST['note_id']
将保留表单中的所有值。
与name='tore'
相同。
第三次,如果您想将一些隐藏值传递给服务器,可以使用input
类型为hidden
,但在页面上看不到,但仍然存在,传递给服务器:
<!-- Again, use [] for getting several values -->
<input type="hidden" name="player_id[]" id="" value="<?=$Player_ID?>" />
因此,您可以将代码重写为:
<?php
// Some code here
// close previous opened php-tag
?>
<form method="post" action=''>
<table border="1">
<?php
foreach($pdo -> query($sqlSpielerNamen) as $row){?>
<tr>
<td style="font-size: 10;"><?php echo $row['Player_ID']?><input type="hidden" name="player_id[]" value="<?=$row['Player_ID']?>" /></td>
<td style="font-size: 10;"><?=$row['SpielerName']?></td>
<td style="font-size: 10 ;"><input name='note[]' type='text' class='textfield' value='<?=$spielID?>' />";
<td style="font-size: 10 ;"><input name='tore[]' type='text' class='textfield' value='<?=$spielID?>' />";
</tr>
<?php
}?>
</table>
<br><br><input type="submit" name="submit_eingabemaske" value="Abschicken">
</form>
此处<?=
是<?php echo
的简短语法。
在服务器上,您可以:
if (isset($_POST['submit_eingabemaske'])){
print_r($_POST); // see what you have in post
foreach ($_POST['player_id'] as $id){
// do something
}
}
最后一个警告是使用id
的{{1}}属性。
input
属性必须在页面上是唯一的。您可以使用相同的ID,但使用这些ID的所有 javascript代码仅适用于具有此ID的第一个元素。这就是我从输出中删除id
的原因。如果您需要所有输入的共同点 - 使用类。
更新:从我的角度来看,如果你想用id
生成文件,你可以:
foreach