将选定的表行存储为简单数组

时间:2017-07-02 18:30:24

标签: php html arrays forms submit

在我的源代码中,我创建了下表...

echo "<form id=\"center\" Name=\"Form2\" Method=\"Post\" Action=\"\">";
    echo "<table border=\"1\">";
        foreach($pdo -> query($sqlSpielerNamen) as $row){
            echo "<tr>";
                echo "<td style=\"font-size: 10;\">".$row['SpielerName']."</td>";
                echo "<td style=\"font-size: 10;\">".$row['Note']."</td>";
                echo "<td style=\"font-size: 10;\">".$row['Tore']."</td>";
                echo "<td><input type=\"submit\" id=".$row['Player_ID']." class=\"btn\" name=\"Add\" value=".$row['Player_ID']."></td><tr>";
            echo "</tr>";
        }
    echo "</table>";
echo "</form>";

现在,我想通过提交按钮选择一行。目前我得到Player_ID这样......

if(isset($_POST["Add"])){
    $P = $_POST["Add"];
}

但我需要整行 - Player_IDNoteTore。 我认为一个很好的解决方案是将行写入一个简单的数组。类似于array = ['Note', 'Tore', 'Player_ID']

1 个答案:

答案 0 :(得分:0)

您必须在每行中包含一个隐藏的输入字段,其中包含播放器的所有详细信息(作为序列化字符串)。稍后,在处理表单时,只需将字符串反序列化并将播放器的详细信息作为数组。因此,您需要按以下方式更改foreach循环,

// your code
foreach($pdo->query($sqlSpielerNamen) as $row){
    ?>
        <tr>
            <td style="font-size: 10;"><?php echo $row['SpielerName']; ?></td>
            <td style="font-size: 10;"><?php echo $row['Note']; ?></td>
            <td style="font-size: 10;"><?php echo $row['Tore']; ?></td>
            <td>
                <input type="hidden" name="player_details[<?php echo $row['Player_ID']; ?>]" value="<?php echo htmlspecialchars(serialize(array($row['SpielerName'],$row['Note'], $row['Tore']))); ?>">
                <input type="submit" id="<?php echo $row['Player_ID']; ?>" class="btn" name="Add" value="<?php echo $row['Player_ID']; ?>">
            </td>
        </tr>
    <?php
}
// your code

随后,按照以下方式提交表格后,

if(isset($_POST["Add"])){
    $P = $_POST["Add"];
    list($SpielerName, $Note, $Tore) = unserialize($_POST['player_details'][$P]);
    // Now access $SpielerName, $Note and $Tore variables in your subsequent code
    ...
}

以下是相关参考资料: