2013-04-11 161 views
0

如何將客戶端表單中的數據添加到數據庫中的不同表中?我的情況是這樣的,我有三種形式的客戶端,第一種是用於書籍物品(精裝本,雜誌等),第二種用於音樂項目(CD,卡帶等),第三種用於電影項目(dvd ,VHS等)。將數據添加到數據庫中的不同表中

用戶應該能夠輸入任何形式的細節,然後數據應該填充在數據庫中的正確表格中。

任何想法傢伙或腳本隨時可用?我需要它是可擴展的,所以它應該能夠處理多個請求而不會減速或導致很多錯誤(我不介意調試一些:))。我也必須考慮誰發佈了什麼使系統可擴展。

哦,我是一個前端設計師,而不是exp exp核心軟件應用程序的web程序員工程師編碼員。

設置: PHP MySQL的 JS HTML

所有幫助歡迎。

我很抱歉傢伙!目前的代碼是書如下,其同樣爲音樂和電影:

<?php 
//Start session 
session_start(); 

//Include database connection details 
require_once('../config.php'); 

//Array to store validation errors 
$errmsg_arr = array(); 

//Validation error flag 
$errflag = false; 

//Connect to mysql server 
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
if(!$link) { 
    die('Failed to connect to server: ' . mysql_error()); 
} 

//Select database 
$db = mysql_select_db(DB_DATABASE); 
if(!$db) { 
    die("Unable to select database"); 
} 

//Function to sanitize values received from the form. Prevents SQL injection 
function clean($str) { 
    $str = @trim($str); 
    if(get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    return mysql_real_escape_string($str); 
} 

//Sanitize the POST values 
$isbn = clean($_POST['isbn']); 
$bookTitle = clean($_POST['bookTitle']); 
    $author = clean($_POST['author']); 
$genre = clean($_POST['genre']); 
$year= clean($_POST['year']); 


//Input Validations 
if($isbn == '') { 
    $errmsg_arr[] = 'ISBN missing'; 
    $errflag = true; 
} 
if($bookTitle == '') { 
    $errmsg_arr[] = 'Book Title missing'; 
    $errflag = true; 
} 
if($author == '') { 
    $errmsg_arr[] = 'author missing'; 
    $errflag = true; 
} 
if($genre == '') { 
    $errmsg_arr[] = 'Genre missing'; 
    $errflag = true; 
} 
if($year == '') { 
    $errmsg_arr[] = 'Year missing'; 
    $errflag = true; 
} 


//Check for duplicate login ID 
if($isbn != '') { 
    $qry = "SELECT * FROM books WHERE isbn='$isbn'"; 
    $result = mysql_query($qry); 
    if($result) { 
     if(mysql_num_rows($result) > 0) { 
      $errmsg_arr[] = 'Book and ISBN ID already in system'; 
      $errflag = true; 
     } 
     @mysql_free_result($result); 
    } 
    else { 
     die('Query Failed: ' . mysql_error()); 
    } 
} 

//If there are input validations, redirect back to the registration form 
if($errflag) { 
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
    session_write_close(); 
    die('Query Failed: ' . mysql_error()); 
    header("location: addMedia.php"); 
    exit(); 
} 

//Create INSERT query 
$qry = "INSERT INTO books(isbn, title, author, genre, year) VALUES('$isbn','$bookTitle','$author','$genre','$year')"; 
$result = @mysql_query($qry); 

//Check whether the query was successful or not 
if($result) { 
    header("location: bookAdded.php"); 
    exit(); 
}else { 
    die('Query Failed: ' . mysql_error()); 
} ?> 
+0

你可以得到它的形式提交了它的名字(HTML表單的name屬性),即'如果($ _ POST ['booksForm ']){/ * insert into books table * /} elseif($ _ POST ['musicForm']){/ * insert into music table * /} elseif($ _ POST ['moviesForm']){/ * insert into movies table * /}'。你有什麼要展示的嗎? – enenen 2013-04-11 12:02:11

+1

嘿,歡迎來到SO。此網站通常用於在您嘗試了幾件事情但未能解決問題後遇到的具體問題。如果您告訴我們您已經嘗試了什麼,這也很好。在這種情況下,我建議您閱讀一般的Web開發,或者聘請編碼人員,如果它是一個商業項目。 – KillerX 2013-04-11 12:02:44

+0

它確實有效,但是問題應該是:我不知道哪個用戶添加了什麼,當爲了當前登錄的用戶而將結果顯示回客戶端時,這也會令人困惑。 – ParttimeCoder 2013-04-11 12:20:00

回答

0

您將需要一個服務器端腳本,將處理您的前端形式。

的foreach形式,你會使用來自PHP PDO擴展不同的表中插入,read more about it here.

+0

它確實有效,但是問題應該是:我不知道哪個用戶添加了什麼,當爲了當前登錄的用戶而將結果顯示回客戶端時,這也會造成混淆。 – ParttimeCoder 2013-04-11 12:20:41

+0

您應該在每個表中都有一個inserted_by字段。然後,您將只顯示用戶插入的書籍(通過使用$ _SESSION ['user_id'])。 – 2013-04-11 13:10:38

+0

我認爲如果用戶已經登錄但是沒有書,這將不起作用。例如,現在我已經用這個代碼嘗試了這個方法,'if($ sql.bookID ==($ _SESSION ['SESS_MEMBER_ID'])); $結果= mysql_query($ SQL); 其他 ( 回聲「您沒有書尚未加入!」; )' – ParttimeCoder 2013-04-13 00:15:50