HTML表单和PHP函数将表单数据保存到同一文件/页面中的mysql

时间:2013-11-26 23:40:50

标签: php html mysql forms post

我不会声称确切知道我在做什么,因为我不这样做,这可能是非常明显的。我试图保持表单和函数在同一文件中更新数据库。我做错了什么?

以下是重点:

HTML:

<form id="billing" action="?updatebilling" method="post">

PHP:

<!-- Function to update billing -->
<?php 
function updatebilling() {
    // Connecting to the MySQL server
    $host="localhost";
    $user_name="root";
    $pwd="bluebox";
    $database_name="rewired";
    $db=mysql_connect($host, $user_name, $pwd) or die(mysql_error());
    if (mysql_error() > "") print mysql_error() . "<br>";
    mysql_select_db($database_name, $db);
    if (mysql_error() > "") print mysql_error() . "<br>";

    // Static info - account number
    $account_id=users::getAttr('Account', 'account_id');

    // Storing form values into PHP variables
    $zip = mysql_real_escape_string($_POST['billingzip']);
    $name = mysql_real_escape_string($_POST['name']);


    // Inserting variables into database
    $sql = "INSERT INTO `web_signup`
      SET `account_id` = '{$account_id}',
     `zip` = '{$billingzip}',
     `cardholder_name` = '{$name}',
     `updated_at` = NOW()";

    $result = mysql_query($sql) or die(mysql_error().$sql);

    mysql_close($db);

}   ?>

2 个答案:

答案 0 :(得分:0)

您的<form>标记很奇怪。

<form id="billing" action="?updatebilling" method="post">

这将重新加载同一页面,但?updatebilling操作毫无意义。您需要检查页面顶部提交的内容并采取相应措施。许多人检查submit按钮,如果找到它,则转移到处理代码。

if (!isset($_POST['submit'])) {
   // echo form here
} else {
   // process submitted data here.
}

您的action可以留空或设置为指向包含action='<?php echo $_SERVER['PHP_SELF']; ?>'的页面文件名

答案 1 :(得分:0)

我认为这里的答案可能有点明显。你在提交后调用了这个函数吗?从我在代码中看到的你定义了一个HTML表单,你的代码定义了一个函数来保存数据到数据库,但你实际上是在执行这个函数吗?例如:

<?php
// function to save billing info
function updatebilling() { ... }

if (isset($_POST)) { // only call function when a post request is being processed
  updatebilling(); // execute function to save the billing info
}
?>
<form action="?updatebilling" method="post">
  <!-- your inputs here -->
  <input type="submit"/>
</form>