2012-10-04 81 views
3

我必須通過張貼「形式後」的值,並將其插入到表中,這是我在這兩個文件中的代碼:如何通過表單發送一個變量值在PHP中?

<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; ?> 

通過發送無值帖子。

我在哪裏錯了?

問候:

+0

在ad_posting_4.php中,添加行「print_r($ _ POST);」在session_start()之後; – Chris

+0

通常,您在上傳文件時會使用'enctype =「multipart/form-data」'。它看起來像從你的輸入字段中傳遞字符串。這可能會導致問題。 – rwhite35

回答

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> 
9

您需要使用name屬性:

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

「類別」輸入是「隱藏」而不是「文本」 –

+0

「名稱」屬性缺失。謝謝。 – Muhammad

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> 

然後成立了一個名爲「狀態」和一個名爲「城市」列中的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,只需手動插入特定變量可能會更容易。