2016-05-13 135 views
0

我試圖創建一個網站,管理員可以在該網站上查看有關在商店購物的顧客的詳細信息。主頁上列出了所有客戶的名稱,點擊後,每個名稱都被引導到一個名爲CustomerDetails.php的頁面,該頁面提供了有關該特定客戶的更多詳細信息。我試圖編寫一些代碼,允許管理員向特定客戶添加備註。這兩個表如下:使用HTML表單將數據插入數據庫時​​出錯

CREATE TABLE PHPNotes(
NoteID INT, 
NoteContent VARCHAR(100) NOT NULL, 
CustomerID INT, 
FOREIGN KEY (CustomerID) REFERENCES CustomerEnrolment(CustomerID), 
PRIMARY KEY(NoteID))ENGINE=InnoDB; 

CREATE TABLE CustomerEnrolment(
CustomerID INT, 
Name VARCHAR(30), 
Email VARCHAR(30), 
PhotoURL VARCHAR(30), 
PRIMARY KEY(CustomerID)) ENGINE=InnoDB; 

我試圖從窗體中獲取數據(如下所示)並將此特定數據插入到數據庫中。不過,我被告知,我寫的代碼存在錯誤。

<?php 

$Name = $_GET['Name']; 
$CustomerID = $_GET['CustomerID']; 
$sql1 ="SELECT * FROM CustomerEnrolment WHERE CustomerID='$CustomerID'"; 
$sql2 ="SELECT c.*, e.CustomerID FROM CustomerNotes c, CustomerEnrolment e WHERE e.CustomerID=n.CustomerID AND Name='$Name'" ; 


if(! get_magic_quotes_gpc()) { 
    $NoteContent = addslashes ($_POST['NoteContent']); 
} 

else { 
    $NoteContent = $_POST['NoteContent']; 
} 

$NoteID = $_POST['NoteID'];   
$sql = "INSERT INTO CustomerNotes ". "(NoteID,NoteContent,CustomerID) ". "VALUES('$NoteID','$NoteContent','$CustomerID')"; 
$result = mysql_query($sql); 

if(! $result) { 
    die('Could not enter data: ' . mysql_error()); 
} 

echo "Entered data successfully\n"; 

?> 

<p> Add New Customer Record </p> 

<form method = "post" action = "<?php $_PHP_SELF ?>"> 
<table id="Add Record"> 
<tr> <td> Note ID </td> 
<td> <input name = "NoteID" type="text" id="NoteID"></td> 
<td> <input name = "NoteContent" type="text" id="NoteContent"></td> </tr> 
<tr> <td> <input type="hidden" name="CustomerID" value="$CustomerID"></td> </tr> 
<tr> <td> <input name = "Add Customer Note" type = "submit" id = "Add Customer Note" value = "Add Customer Note"> </td> </tr> 
</table> 
</form> 

的錯誤是:

Notice: Undefined index: CustomerID 
Notice: Undefined index: NoteContent 
Notice: Undefined index: NoteID 
Could not enter data: Duplicate entry '0' for key 'PRIMARY' 

一些意見,以我要去的地方的將是巨大的!

+0

表單用作「post」方法 – selvan

回答

3

一兩件事 - 你的查詢有問題 - 它應該是:

$sql = "INSERT INTO CustomerNotes (NoteID,NoteContent,CustomerID) VALUES('".$NoteID."','".$NoteContent."','".$CustomerID."')"; 

和同樣可以爲你的第一個2級的查詢可以說爲好。

而且你混合PHP和HTML而不是一個好辦法:))

<tr> 
    <td> 
     <input type="hidden" name="CustomerID" value="$CustomerID"> 
    </td> 
</tr> 

應該是:

<tr> 
    <td> 
     <input type="hidden" name="CustomerID" value="<?php echo $CustomerID; ?>"> 
    </td> 
</tr> 

而且你不關閉你的輸入 - 他們應該是怎樣的?

<input name = "NoteID" type="text" id="NoteID" /> 

而且 - 鑑於noteID是你的主鍵 - 你應該考慮這種自動遞增,因此,您就不需要有一個名爲「noteID」任何輸入 - 無autoincrementation,因爲你需要一個驗證機制,以檢查那個ID裏面還沒有一張紙條。

0

使用POST功能,

$Name = $_POST['Name']; 

您的形式使用POST方法。

0

另一個問題你可能有:

<tr> <td> <input type="hidden" name="CustomerID" value="$CustomerID"></td> </tr> 

如果你想顯示VAR $CostumerID你應該使用PHP標籤<?php $CostumerID ?><?= $CostumerID ?>

0

1)變化

$sql = "INSERT INTO CustomerNotes ". "(NoteID,NoteContent,CustomerID) ". "VALUES('$NoteID','$NoteContent','$CustomerID')"; 

$sql = "INSERT INTO CustomerNotes(NoteID,NoteContent,CustomerID) VALUES('$NoteID','$NoteContent','$CustomerID')"; 

2)變化

<input type="hidden" name="CustomerID" value="$CustomerID"> 

<input type="hidden" name="CustomerID" value="<?php echo $CustomerID;?>"> 
相關問題