2014-03-27 235 views
0

我需要將所有表單詳細信息插入數據庫並將上傳的圖像保存在某個位置。我成功地將文件上傳到指定的位置。但表格細節沒有被插入到數據庫中。無法將表單數據插入到數據庫中

這是pages.php

<?php 
session_start(); 
if(!empty($_SESSION['uname']) && !empty($_SESSION['pswd'])) { 
    include 'classes/insert.php'; 
    $db_con->dbcon(); 
    $db_con->insert_data(); 
    $target_path = "uploads/"; 
    $target_path = $target_path . basename($_FILES['bg_img']['name']); 
    if(move_uploaded_file($_FILES['bg_img']['tmp_name'], $target_path)) { 
     echo "The file ". basename($_FILES['bg_img']['name']). 
     " has been uploaded"; 
    } else { 
     echo "There was an error uploading the file, please try again!"; 
    } 
?> 
<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>New Page</title> 
    </head> 
    <body> 
     <p>Add pages</p> 
     <a href="logout.php">logout</a> 
     <br /><br /> 
     <a href="dashboard.php">Dashboard</a> 
     <br /><br /> 
     <form method="post" action="" enctype="multipart/form-data"> 
      <label>Page name</label> 
      <input type="text" name="page_name" /> 
      <br /> 
      <br /> 
      <label>Page title</label> 
      <input type="text" name="page_title" /> 
      <br /> 
      <br /> 
      <label>Page bg img</label> 
      <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
      <input type="file" name="bg_img" /> 
      <br /> 
      <br /> 
      <label>Page content</label> 
      <textarea name="page_content"></textarea> 
      <br /> 
      <br /> 
      <input type="submit" value="Submit" name="submit" /> 
     </form> 
    </body> 
</html> 
<?php } else { 
    $home_loc = 'index.php'; 
    header ('Location:' .$home_loc);} 
?> 

代碼這是insert.php

class db_con { 
    public function dbcon() { 
     $hostname = 'localhost'; 
     $username = 'root'; 
     $pswd  = 'admin'; 
     $dbname = 'web'; 
     mysql_connect($hostname, $username, $pswd) or die('cudn\'t connect'); 
     mysql_select_db($dbname) or die('cudn\'t select db'); 
    } 

    function insert_data() { 
     $this->dbcon(); 
     if (isset($_POST['page_name']) && isset($_POST['page_title']) && isset($_POST['bg_img']) && isset($_POST['page_content'])) { 
      $pg_name  = mysql_real_escape_string($_POST['page_name']); 
      $pg_title  = mysql_real_escape_string($_POST['page_title']); 
      $pg_img  = mysql_real_escape_string($_POST['bg_img']); 
      $pg_content = mysql_real_escape_string($_POST['page_content']); 
      $insert_query = mysql_query("INSERT INTO pages (page_name, page_title, page_bg_img, page_content) VALUES ('" . $pg_name . "', '" . $pg_title . "', '" . $pg_img . "', '" . $pg_content . "')"); 
     } 
    } 
} 

$db_con = new db_con(); 
+0

不應該您對您的類instanciation括號? '$ insert = new insert();' – Fluffeh

+0

產生的錯誤是什麼? – 2014-03-27 08:10:41

+0

我給實例添加了括號,但它沒有做任何改變。沒有錯誤顯示。但是,如果我刪除'enctype =「multipart/form-data」'數據正在插入。 – Joker

回答

0

好吧,有很多事情要考慮。

  • 您正在使用PHP與PHP混合。

    改變這種

    var $hostname = 'myhostname'; 
    

 $hostname = 'myhostname'; 

同樣與他人。

  • 你不應該在你的情況下做很多類。

使用本:

class db_con{ 
     public function dbcon(){ 
      ......... 
     } 
     function insert_data() { 
      ........... 
     } 
    } 
  • 你是不是調用insert_data()功能

調用它像:

$insert = new insert; 
    $insert->insert_data(); 
  • 你應該逃脫你的變量,像:

    $pg_title = mysql_real_escape_string($_POST['page_title']); 
    
  • 你應該切換到PDOMYSQLI

編輯:

試試這個

session_start(); 
    if(!empty($_SESSION['uname']) && !empty($_SESSION['pswd'])){ 
    include 'classes/insert.php'; 
    $db_con = new db_con(); 
    $db_con->dbcon(); 
    $db_con->insert_data(); 

EDIT2:

要獲取上傳的文件使用$_FILES代替$_POST

$pg_img  = $_FILES['bg_img']; 

改變這也

and $_FILES['bg_img']['name'] != '' 

代替

&& isset($_POST['bg_img']) 
+0

我改變了你的說法。但沒有改變。我已經更新了上面的代碼。請檢查它。 – Joker

+0

你在哪裏調用這個'insert_data()'? –

+0

我在「include」語句下面的「pages.php」中調用「insert_data()」和「dbcon()」函數。 – Joker

0

嘗試代碼來檢查是否已成功連接到數據庫,如果沒有,$db_con = new db_con;改變你的初始化到$db_con = new db_con();

編輯: 我想你應該ld也需要改變你的流程。分開表單,插入過程和數據庫連接。我建議你創建3個單獨的文件: 1.表單頁面(HTML) 2.進程頁面(您將鏈接您的表單的PHP文件或進程將在哪裏發生) 3.數據庫連接文件(PHP文件。把你的數據庫連接放在這裏和其他數據庫相關的功能)。

這裏是我的例子:

窗體頁:

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>New Page</title> 
    </head> 
    <body> 
     <p>Add pages</p> 
     <a href="logout.php">logout</a> 
     <br /><br /> 
     <a href="dashboard.php">Dashboard</a> 
     <br /><br /> 
     <form method="post" action="process.php" enctype="multipart/form-data"> 
      <label>Page name</label> 
      <input type="text" name="page_name" /> 
      <br /> 
      <br /> 
      <label>Page title</label> 
      <input type="text" name="page_title" /> 
      <br /> 
      <br /> 
      <label>Page bg img</label> 
      <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
      <input type="file" name="bg_img" /> 
      <br /> 
      <br /> 
      <label>Page content</label> 
      <textarea name="page_content"></textarea> 
      <br /> 
      <br /> 
      <input type="submit" value="Submit" name="submit" /> 
     </form> 
    </body> 
</html> 

你可以SEEE,我指着表單的動作process.php。

這裏是我的樣品process.php:

<?php 
include 'classes/db.php'; 

if(isset($_POST['submit'])){ 
    // get your post data here 
    $post_data = array('your post data'); 
    // instantiate db 
    $db = new Db(); 
    // create db connection 
    $db_connect = $db->connect(); 
    // check if successfully connected to db 
    // then call the insertion process 
    $db->insert_data('table_name', $post_data); 
} 

然後在db.php中的文件:

<?php 
class Db { 

    function connect(){ 
     $hostname = 'localhost'; 
     $username = 'root'; 
     $pwd  = 'admin'; 
     $dbname = 'yourdbname'; 
     mysql_connect($hostname, $username, $pswd) or die('couldn\'t connect'); 
     mysql_select_db($dbname) or die('couldn\'t select db'); 
    } 

    function insert_data($table_name, $data) { 
     mysql_query("INSERT INTO ".$table_name." (page_name, page_title, page_bg_img, page_content) VALUES ($data); 
    } 

} 
?> 

只是不按照我的插入過程中怎麼我只是做簡短。它只是我想展示的流程。

希望這會有所幫助!

+0

我已經編輯,因爲你說。我可以連接到數據庫。 – Joker

+0

我認爲你應該也需要改變你的流程。分開表單,插入過程和數據庫連接。我建議你創建3個單獨的文件: 1.表單頁面(HTML) 2.進程頁面(您將鏈接您的表單的PHP文件或進程將在哪裏發生) 3.數據庫連接文件(PHP文件。把你的數據庫連接放在這裏和其他數據庫相關的功能)。 –

相關問題