2012-08-15 88 views
1

我想構建一個簡單的表單來更新我的mySql數據庫。 我可以成功,如果我只有一個表單元素(輸入)在頁面上,但我不知道如何有多個表單元素(輸入)每個pgae。更新多個表單元素到不同列的PHP表單

當我添加多個輸入時,數據庫不會添加任何內容。

我知道我的代碼非常接近,但是我完全不知所措,因此無法完成這個任務。

P.S. - 我還是新來這和我學習......

這裏是我有什麼

<?php 

$host = 'hostName'; 
$user = 'userName'; 
$password = 'password'; 

$link = mysql_connect($host, $user, $password); 

$selected = mysql_select_db('dbName', $link); 

if(!isset($_POST['text-input'])) 
{ 


echo '<html> 
     <body> 
       <form action="post.php" method="post"> 
         <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" /> 
         <input type="submit" value="Submit" /> 
       </form> 
     </body> 
</html>'; } 


else { 
$form_input = $_POST['text-input'] ; 


mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '");'); 

echo ' 
<html> 
     <body> 
       <script type="text/javascript"> 
         alert(\'Database now contains: <?php echo $form_input ?>. Redirecting...\'); 
         window.location = \'http://url.com\'; 
       </script> 

     </body> 
</html>'; 
} 
?> 

我想弄清楚如何發佈到衆多列相同分貝/表內。

好了,從回答下面我已經修改了代碼,如下所示:

<?php 

       $host = 'dbHost'; 
       $user = 'dbUser'; 
       $password = 'dbPassword'; 

       $link = mysql_connect($host, $user, $password); 

       $selected = mysql_select_db('dbName', $link); 

       if(!isset($_POST['text-input'])) 
       { 


       echo ' 
        <form action="index.php" method="post"> 
         <input type="text" name="text-input" id="text-input" value="Update itemName" style="width:300px;" /> 
         <input type="text" name="text-input2" id="text-input2" value="Update itemDescription" style="width:300px;" /> 
         <input type="text" name="text-input3" id="text-input3" value="Update productID" style="width:300px;" /> 
         <input type="text" name="text-input4" id="text-input4" value="Update itemPrice" style="width:300px;" />  
         <input type="submit" value="Submit" /> 
        </form>' 
        ; } 


       else { 
       $form_input = $_POST['text-input'] ; 
       $form_input2 = $_POST['text-input2'] ; 
       $form_input3 = $_POST['text-input3'] ; 
       $form_input4 = $_POST['text-input4'] ; 


       mysql_query('INSERT INTO `items` (itemName, itemDescription, productID, itemPrice) 
       VALUES ("' . $form_input . '", "' . $form_input2 . '", "' . $form_input3 . '", "' . $form_input4 . '"); 

       echo ' 
       <html> 
         <body> 
           <script type="text/javascript"> 
             alert(\'Database has been updated. Redirecting to previous url.\'); 
             window.location = \'http://url.com\'; 
           </script> 

         </body> 
       </html>'; 
       } 
       ?> 

會發生什麼,此代碼是我得到一個 語法錯誤,意外「>」

+0

你真的應該看看PDO:我們終於可以作爲表中的一行添加這兩個值。 'mysql_ *'已棄用。另外,不需要做所有的迴應。只需在HTML之前結束你的PHP標籤,然後用'<?php'重新啓動php。 – 2012-08-15 16:46:31

回答

1

你只必須修改您的查詢以設置多個列。

HTML:

<form action="post.php" method="post"> 
    <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" /> 
    <input type="text" name="text-input2" id="text-input2" value="Update MyDataColumn2" style="width:300px;" /> 
    <input type="text" name="text-input3" id="text-input3" value="Update MyDataColumn3" style="width:300px;" />  
    <input type="submit" value="Submit" /> 
</form> 

PHP:

$form_input = $_POST['text-input'] ; 
$form_input2 = $_POST['text-input2'] ; 
$form_input3 = $_POST['text-input3'] ; 


mysql_query('INSERT INTO `tableName` (columnName, columnName2, columnName3) VALUES ("' . $form_input . '","' . $form_input2 . '","' . $form_input3 . '");'); 
+0

'ID's也應該是唯一的,因爲可以訪問你需要'

+0

確實如此,快速複製和粘貼作業很快。編輯。 – Jeremy1026 2012-08-15 17:04:46

0

在你的HTML輸出,你需要添加一個字段像這樣的(已經在你的代碼):

<input type="text" name="text-input" id="text-input" 
value="Update MyDataColumn" style="width:300px;" /> 

BUT ,它必須有一個不同的「名稱」(!);

<input type="text" name="text-input2" id="text-input2" 
value="Another Input" style="width:300px;" /> 

現在我們獲取新的變量(「文本輸入2」)從$ _POST陣列像這樣的:

$form_input = $_POST['text-input']; // Your code... 
$form_input2 = $_POST['text-input2']; // for the new input field 

而且我們需要的SQL命令改成這樣:

mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '"); 
mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input2 . '"); 

上面的SQL命令會將兩個表單輸入添加爲表中的一個單獨的行,但它們沒有連接到彼此。 要讓它們在同一行中,您需要先更改表格並向其中添加另一列。對此的SQL命令是:

ALTER TABLE tableName ADD columnName2 VARCHAR(255); 

這將在表中添加另一個名爲'columName2'的列。

mysql_query('INSERT INTO `tableName` (columnName, columName2) 
VALUES ("' . $form_input . '", "' . $form_input2 . '"); 

就是這樣;-)