2011-02-18 68 views
1

我一直如此脱节使用内容管理系统以外的PHP,我忘记了一些基本的语法等。我试图建立一个简单的形式收集一些用户数据并将其发送到名为“creathive_applications”的数据库表。PHP:简单的形式张贴到数据库

这里是我的HTML表单:

   <form action="<?php bloginfo('home'); ?>" method="post"> 
        <fieldset id="membershipform">     
         <ul class="clearfix"> 
          <li id="li-status"> 
           <span>I am a:</span> 
           <menu> 
            <li><label for="student"><input disabled="disabled" type="radio" name="status" id="student" checked="checked" value="Graduate" /> Graduate</label></li> 
            <li><label for="student2"><input disabled="disabled" type="radio" name="status" id="student2" value="Undergraduate" /> Undergraduate</label></li> 
           </menu> 
          </li> 
          <li id="li-firstname"> 
           <label for="firstname">First Name</label> <input name="firstname" disabled="disabled" type="text" placeholder="First Name" id="firstname" title="First Name" /> 
          </li> 
          <li id="li-lastname"> 
           <label for="lastname">Last Name</label> <input name="lastname" disabled="disabled" type="text" placeholder="Last Name" id="lastname" title="Last Name" /> 
          </li> 
          <li id="li-email"> 
           <label for="email">Email address</label> <input name="email" disabled="disabled" type="text" placeholder="Email address" id="email" title="Email address" /> 
          </li> 
          <li id="li-url"> 
           <label for="url">URL</label> <input name="url" disabled="disabled" type="text" placeholder="URL of something you've made" id="url" title="URL of something you've made" /> 
          </li> 
          <li id="li-buttons"> 
           <input name="submit" type="submit" value="Send Application &#9658;" title="Send Application" onclick="alert('Invites available from March 2011');" /> 
          </li> 
         </ui> 
        </fieldset> 
       </form> 

这里是PHP爵士:

if(isset($_POST['submit'])) 

{ 

    $status = $_POST['status']; 
    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $email = $_POST['email']; 
    $url = $_POST['url']; 

    $host = '####'; 
    $username = '####'; 
    $pass = '####'; 

    mysql_connect($host,$username,$pass); 
    mysql_select_db($username); 

    $query = "INSERT INTO creathive_applications VALUES (NULL,'".$status."','".$firstname."','".$lastname."','".$email."','".$url."')"; 

    $result = mysql_query($query); 

} 

谁能帮我解决这个问题,因为我不记得如何运行我的SQL语句,将数据发送到数据库:/另外我已经添加了数据库用户名和密码以及主机,但数据库名称如何?那又去了哪里?

我知道这是一个相当不错的问题,但任何帮助将不胜感激。

非常感谢

+0

您是否收到任何特定错误或任何内容? – Brian 2011-02-18 15:56:42

+3

mysql_select_db('database name'); ;) – MatejB 2011-02-18 15:57:12

+0

@Brian不,我还没有尝试过,因为我甚至不知道我在做什么,因为它已经很长时间了,因为我手动做了这个。 – Cameron 2011-02-18 15:59:11

回答

2

良好,没有错误,这是不可能告诉给修复一下。
但是,有一些明显的事情要做。
查看评论:

<? 
//show all possible errors. should be ALWAYS set to that level 
error_reporting(E_ALL); 
echo "landed at form handler<br>"; 

// sometimes buttons not being sent or gets misspelled 
if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    echo "here goes POST processing<br>"; 
    $host = '####'; 
    $username = '####'; 
    $pass = '####'; 

    mysql_connect($host,$username,$pass); 
    mysql_select_db($username); 

    // all strings should be escaped 
    // and it should be done after connecting to DB 
    $status = mysql_real_escape_string($_POST['status']); 
    $firstname = mysql_real_escape_string($_POST['firstname']); 
    $lastname = mysql_real_escape_string($_POST['lastname']); 
    $email  = mysql_real_escape_string($_POST['email']); 
    $url  = mysql_real_escape_string($_POST['url']); 

    $query = "INSERT INTO creathive_applications 
       VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 

    echo $query; 
    // always run your queries this way to be notified in case of error 
    $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    var_dump($result); 
} 
你仍然可以看到没有错误的情况下

,临时加入这一行脚本

ini_set('display_errors',1); 

的顶部,并立即将其删除你解决了这个问题之后。编辑 添加了一些调试信息。
如果您看不到任何消息,则表明您的表单已发送到错误的URL。 如果您看到其中的一些,请将其张贴在这里

1

布赖恩指出,你应该张贴如果有错误发生。

我注意到的主要问题是您正在使用可能没有值的变量。单选按钮如果没有切换,则不会发送它们的值。

使用这样的覆盖你的基地:

if(isset($_POST['status'])) 
{ 
    $status = $_POST['status']; 
} 

不知道如果这是你的问题。考虑添加更多信息。 :)

1
if(count($_POST) > 0){ 
     $status = $_POST['status']; 
     $firstname = $_POST['firstname']; 
     $lastname = $_POST['lastname']; 
     $email = $_POST['email']; 
     $url = $_POST['url']; 

     $host = '####'; 
     $username = '####'; 
     $pass = '####'; 

     $mydb = mysql_connect($host,$username,$pass); 
     // mysql_select_db($username); 
     //are you using your username as db name? 
     mysql_select_db("yourdbname"); 
     $query = "INSERT INTO creathive_applications VALUES (NULL,'".mysql_real_escape_string($status)."','".mysql_real_escape_string($firstname)."','".mysql_real_escape_string($lastname)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($url)."')"; //use mysql_real_escape_string for security 

     $result = mysql_query($query); 
     //show error if query fails. 
     if (!$result) { 
      die('Invalid query: ' . mysql_error()); 
     } 
     mysql_close($mydb); //close the connection 
    } 

添加mysql_error();,看看它打印出错误