2013-05-03 37 views
1

單客戶多詢我新的PHP和MySQL,我試圖建立一個基本的聯繫表單跟蹤數據庫。請原諒我的術語。軌道上的MySQL數據庫和PHP

我知道如何連接,插入變量,但我試圖找出如何處理插入一個複選框提交到數據庫中,並將它涉及到提交它的客戶。

一個基本的例子:

HTML表單: 名稱 電子郵件 領域的興趣

複選框的利息部分的面積有5個選項。我需要他們能夠檢查多個複選框的,然後有插入並在數據庫中跟蹤的數據。

我需要多個表?如果是這樣,我如何將這兩者聯繫起來以便將來對這些信息進行報告?

我希望這是有道理的。我很難過。


很好的例子...謝謝。我在我自己發現了很多拼寫錯誤,並且糾正了它們,並且我添加了一些字段並重新命名以符合我的需要,但仍遇到相同的問題。 調用成員函數fetch_assoc()非對象錯誤

請看看

<?php 
$mysqli=new mysqli("localhost","flyoasis_admin","oasis225826","flyoasis_main"); 

if($db->connect_errno > 0){ 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

$first_name=$_POST['first_name']; 
$last_name=$_POST['last_name']; 
$email_address=$_POST['email_address']; 
$phone=$_POST['phone']; 
$refer=$_POST['refer']; 

$first_name=$mysqli->real_escape_string($first_name); 
$last_name=$mysqli->real_escape_string($last_name); 
$email_address=$mysqli->real_escape_string($email_address); 
$phone=$mysqli->real_escape_string($phone); 
$refer=$mysqli->real_escape_string($refer); 
$interest=array(); 

$mysqli->query("INSERT INTO 'contacts2'('first_name', 'last_name', 'email_address', 'phone', 'refer') VALUES('".$first_name."','".$last_name."','".$email_address."','".$phone."','".$refer."')"); 
$result=$mysqli->query("SELECT 'id' FROM 'contacts2' WHERE 'email_address'='".$email_address."'"); 
$result=$result->fetch_assoc(); 
$customer_id=$result['id']; 

$sql=""; 
foreach ($_POST['interest'] as $interest) { 
$interest=$mysqli->real_escape_string($interest); 
$sql.="('".$customer_id."','".$interest."'),"; 
} 
$sql=substr($sql,0,-1); 

$mysqli->query("INSERT INTO 'interest_areas'('customer_id','interest') VALUES".$sql); 

$mysqli->close(); 

?> 

我真的很感謝你的幫助迄今。

回答

0

你需要一個客戶表。相關的複選框,你可以做兩件事之一; 要麼有客戶5列所關心的區域或有abother表稱爲customerInterests。如果你有另一張桌子,你會有2列(customerId,area)。對於顧客的每一個興趣,你都會有一排。對於如何讀取複選框值的PHP教程是足夠的,例如:http://www.html-form-guide.com/php-form/php-form-checkbox.html

2

我想有這樣的SQL表設置:

id,name,email 
-------------- 
1,user224,[email protected] 
2,dave,[email protected] 

創建表將是:

CREATE TABLE `customers` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(32), 
    `email` varchar(32), 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `uc_email` (`email`) 
); 

然後在另一張桌子,我會保留所有客戶的利益:

id,customer_id,interest 
----------------------- 
1,1,Golf 
2,1,Badminton 
3,1,Soccer 
4,2,Badminton 

正如你所看到的,user2 44的興趣是高爾夫,羽毛球和足球,而戴夫的興趣是羽毛球。 您可以創建此表格:

CREATE TABLE `customer_areas` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `customer_id` int(11), 
    `interest` varchar(32), 
    PRIMARY KEY (`id`), 
    KEY `customer_id` (`customer_id`), 
    CONSTRAINT `customer_areas_customer_id_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE 
); 

現在,到有趣的部分。我們需要一個HTML表單,可以處理多個複選框:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Gathering Info</title> 
    </head> 
    <body> 
     <form method="post" action="index.php"> 
      Name: <input type="text" name="name"><br> 
      Email: <input type="text" name="email"><br> 
      <input type="checkbox" name="interests[]" value="golf"> Golf<br> 
      <input type="checkbox" name="interests[]" value="soccer"> Soccer<br> 
      <input type="checkbox" name="interests[]" value="badminton"> Badminton<br> 
      <input type="submit" value="Submit"> 
     </form> 
    </body> 
</html> 

在給後端:

<?php 
//assuming you checked $_POST content already 

$mysqli=new Mysqli("127.0.0.1","root","password","database"); 

$name=$_POST['name']; 
$email=$_POST['email'] 

$name=$mysqli->real_escape_string($name); 
$email=$mysqli->real_escape_string($email); 
$interests=array(); 

$mysqli->query("INSERT INTO `customers`(`name`,`email`) VALUES('".$name."','".$email."')"); 
$result=$mysqli->query("SELECT `id` FROM `customers` WHERE `email`='".$email."'"); 
$result=$result->fetch_assoc(); 
$customer_id=$result['id']; 

$sql=""; 
foreach ($_POST['interest'] as $interest) { 
    $interest=$mysqli->real_escape_string($interest); 
    $sql.="(".$customer_id.",'".$interest."'),"; 
} 
$sql=substr($sql,0,-1); 

$mysqli->query("INSERT INTO `customer_areas`(`customer_id`,`interest`) VALUES".$sql); 
?> 
+0

我覺得ID在你感興趣的表應該是1,2,3,4不是1,1 ,1,1對嗎? – Andrew 2013-05-03 23:07:04

+0

哦,我的錯誤,主鍵是唯一的。 – 2013-05-03 23:16:53

+0

您應該首先添加客戶,獲取他們的ID,然後將他們的興趣與customer_id一起添加(從添加它時獲取ID)。你想要一個例子嗎?如果你願意,我會做出一個。 – 2013-05-04 16:45:16