如何通过php中的表单发送变量值?

时间:2012-10-04 14:17:33

标签: php html

我必须通过“表单帖子”发布一个值并将其插入表中,这是我在两个文件中的代码:

<html>
<body>
<table>
<form  enctype="multipart/form-data" action="<?php $_SERVER["DOCUMENT_ROOT"] ?>  /contents/ad_posting_process_4.php" method="post">
<?php $cat_no = "101010"; ?>
<input type=hidden id="category" value=" <?php echo $cat_no; ?> ">  
<tr> <td>Sub Category: </td><td>    <input type=text id="sub_category" > </td>
<tr><td></td> <td><input type="submit" name="action" value="Post"></td></tr></tr>
</form>
</body></html>

这里是ad_posting_4.php

<?php session_start();
include($_SERVER["DOCUMENT_ROOT"]."/includes/conn.php");
$category = mysql_real_escape_string($_POST['category']);
$sub_category = mysql_real_escape_string($_POST['sub_category']);
echo "category=". $category; 
echo "sub_category=". $sub_category; ?>

没有通过邮寄的价值。

我哪里错了?

问候:

3 个答案:

答案 0 :(得分:9)

您需要使用name属性:

<input type="text" name="category" />
<input type="text" name="sub_category" />

答案 1 :(得分:6)

输入type需要用引号'括起来,并且还有name属性,而不是id

<input type='hidden' name="category" value=" <?php echo $cat_no; ?> " />  
<tr> <td>Sub Category: </td>
<td><input type='text' name="sub_category" > </td>

答案 2 :(得分:0)

我最近做了一些与我自己的网站非常相似的事情并得到了这个社区的帮助。在HTML方面,我创建了一个标准表单,并为每个输入提供了“名称”。例如,假设您正在尝试捕获城市和州:

<html>
<body>
<form>
<tr>
<td>State: </td><td> <input type="text" style="border:1px solid #000000" name="state" /></td>
<td>City</td><td><input type="text" style="border:1px solid #000000" name="city" /></td>
</tr>
</form>
</body>
</html>

然后使用名为“state”的列和名为“city”的列设置mySQL数据库。接下来,使用PHP将表单中的数据插入到数据库中。我是PHP的新手,但据我所知,使用PDO比使用旧的mysql命令更安全。

$dbtype     = "mysql";
$dbhost         = "localhost";
$dbname     = "name";
$dbuser     = "user";
$dbpass     = "pass";

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$sql = "SELECT column_name FROM information_schema.columns WHERE table_name = '[Insert Name of your table here]'";
$q = $conn->prepare($sql);
$q->execute();
$columns = $q->fetchAll(PDO::FETCH_COLUMN, 0);

$cols = array();
foreach ($_POST as $key=>$value)
{
    // if a field is passed in that doesn't exist in the table, remove it.  The name of the input that is removed will be echoed so you can debug.  Remove echo if you go to production.
    if (!in_array($key, $columns)) {
        unset($_POST[$key]);
echo $key;
    }
}
$cols = array_keys($_POST);
$sql = "INSERT INTO Facilities(". implode(", ", $cols) .") VALUES (:". implode(", :", $cols) .")";
$q = $conn->prepare($sql);
array_walk($_POST, "addColons");
$q->execute($_POST);

function addColons($value, &$key)
{
    $key = ":{$key}";
}

这对我来说非常好。请注意,它只能将HTML表单输入与完全相同名称的列匹配。在我的情况下,我想创建超过100个输入,所以这更容易。如果您正在处理5-10,则可能更容易手动插入特定变量。