通过echo读取表和输出

时间:2017-06-25 14:54:20

标签: php html-table echo

在我的第一段代码中,您可以看到我如何使用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”] ...

1 个答案:

答案 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