如果名称是变量,我如何使用$ _POST?

时间:2014-12-25 04:17:46

标签: php

我有一个按钮,在循环中生成每个表行后生成,每个连续按钮的名称由$ a ++变量生成。如何在edit_contact.php页面上使用$ _POST方法,以便我可以使用$ _POST数组中的变量?

变量存储在$ _POST数组中,我已经用Print_r($ _ POST)检查过;例如,当我点击表格的第三行编辑按钮时,它将显示为:

Array ( [3] => edit ) 

以下是list_contact.php页面上的循环代码:

$a = "0";

// print whether success or not

if ($rst)
{
    if (mysql_num_rows($rst)>0) // chech there are records
    {
        echo "<form name=addcontact method=post action=edit_contact.php>";
        echo "<table border=\"1\" cellspacing=\"0\">";

        /*** print out feild names ***/

        while ($row = mysql_fetch_array($rst)) // fetch each row
        {
            echo "<tr>";

            for ($i=0; $i<mysql_num_fields($rst); $i++) //for ech row print out field values
            {
                echo "<td>" . $row[$i] . "</td>";
            }

            echo "<td>" . "<input id=button type=submit name=" . $a++ . " value=Edit" . "</td>";

            echo "</tr>";

        }

    echo "</table>";
    echo "</form>";
    }

  else
    {
     echo "There are no records in the database";
    }
}

以下是我在edit_contact.php上遇到问题的代码:

$qry = "SELECT * FROM contacts WHERE ContactID = " . $_POST;

我如何才能获得该帖子以反映我的变量?即3

3 个答案:

答案 0 :(得分:1)

您可以使用隐藏的输入字段,而不是:

echo "<td>" . "<input id=button type=submit name=" . $a++ . " value=Edit" . "</td>";

你可以这样做:

echo '<td><form method="post"><input type="hidden" name="ContactID" value="'.($a++).'"><input id="button" type="submit" value="Edit"></form></td>';

然后检索隐藏的输入字段,如:

$ContactID = $_POST['ContactID'];

注意:在将数据用于SQL查询之前,您仍需要正确转义POST数据,但希望这会指向正确的方向。

答案 1 :(得分:1)

你可以做一次。您不需要任何其他字段。只需使用foreach即可访问其key

foreach($_POST as $key => $value){
     if(strtolower(trim($value)) == "edit"){ // Validate if editing being sent
         // Display it if true
         echo $key; // and this is the variable you want
     }
}

答案 2 :(得分:0)

重构代码,使name实际上是一个常量,value是动态的。

echo "<td><input id=button type=submit name=\"edit\" value=\"" . $a++ . "\"></td>";

这样您就可以通过以下方式访问它:

$_POST['edit'];

对于单击的按钮,它将产生:value=\"" . $a++ . "\"的值。

会根据您的需要返回3之类的内容。