2013-01-13 75 views
0

我有兩個表(郵局,類別)如何在選擇類別時將類別ID添加到其他表格?

CREATE TABLE post  
(pid INT(10) NOT NULL AUTO_INCREMENT,  
post_title VARCHAR(255), 
post_result VARCHAR(255), 
post_content VARCHAR(500), 
cid INT(10), 
PRIMARY KEY (pid), 
FOREIGN KEY (cid) REFERENCES category(cid)); 

CREATE TABLE category ( 
cid INT(10) NOT NULL AUTO_INCREMENT, 
cname VARCHAR(50), 
PRIMARY KEY (cid)); 

這是我的插入語句:

$id = isset($_POST['pid'])?$_POST['pid']:''; 
$title=$_POST['post_title']; 
$result=$_POST['post_result']; 
$content=$_POST['post_content']; 
$catid=$_POST['cid']; 
$cat=$_POST['cname']; 
$insertquery="INSERT INTO review (pid,post_title,post_result,post_content) 
VALUES('','$title','$result','$content')"; 

問題什麼即時通訊面對的是,在我的職位表中,類別ID(CID)的值每個記錄都爲NULL。
如何使它存儲所選類別的值。

這是我的形式:

<form id="create" action="insert.php" method="post"> 
<input type="text" name="post_title" placeholder="Title" /><br> 
<input type="text" name="post_result" placeholder="Final comment" /><br> 
<textarea name="post_content" placeholder="Review" ></textarea><br> 

    Category: 
    <select name=cname> 
    <option value="select"></option> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
    <option value="3">Option 3</option> 
    <option value="4">Option 4</option> 
    <option value="5">Option 5</option> 
     </select><br><br> 

<input class="submit" name="submit" type="submit" value="Submit"/> 

</form>  

確實有助於在獲取輸出。

回答

1

所有我希望你填充您的類別從數據庫中選擇並value屬性包含類別ID的第一位。話雖這麼說,這是更好地name屬性更改爲cid(因爲您在POST期待什麼):

<select name="cid"> 

然後var_dump($_POST)看起來就像這樣:

array(5) { 
    ["post_title"]=> 
    string(2) "aa" 
    ["post_result"]=> 
    string(2) "bb" 
    ["post_content"]=> 
    string(2) "cc" 
    ["cid"]=> 
    string(1) "2" 
    ["submit"]=> 
    string(6) "Submit" 
} 

其次你能夠擺脫以下PHP行:

$id = isset($_POST['pid'])?$_POST['pid']:''; 
$cat=$_POST['cname']; 

因爲你沒有發送這些值與th電子表格,不要使用它們。

第三您需要更正您的插入語句

$insertquery="INSERT INTO post (post_title,post_result,post_content,cid) 
       VALUES('$title','$result','$content','$catid')"; 

其他注意事項:

  • 您更好地保證對類的名稱已被選定的客戶端,否則你會得到錯誤試圖插入記錄在post
  • 作爲a1ex07提到你需要檢查和消毒所有的用戶輸入您的分貝放
  • 切換到準備好的發言
+0

非常感謝爵士之前。它正在工作。過去兩天一直在掙扎。 –

+0

如果這個答案對你有幫助,請考慮[接受](http://meta.stackexchange.com/a/5235/187716)。 –

0

假設類別名稱是獨一無二的,你可以做

$insertquery="INSERT INTO review (pid,post_title,post_result,post_content,cid) 
VALUES('','$title','$result','$content', 
(SELECT cid FROM category WHERE cname ='$cname'))" 

您還需要逃脫來自用戶的所有變量(最好的方法是使用PDO或mysqli的)。

0

在你INSERT查詢,你忘了添加的cname值:

$insertquery="INSERT INTO review (pid,post_title,post_result,post_content,cid) 
VALUES('','$title','$result','$content',$cname)"; 
相關問題