2012-08-15 44 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 . '"); 

就是这样;-)

相关问题