2016-05-13 7 views
0

管理者が店舗で購入する顧客の詳細を表示できるWebサイトを作成しようとしています。ホームページにはすべての顧客の名前が表示されます。クリックすると、各顧客の詳細情報を提供するCustomerDetails.phpというページが表示されます。私は、管理者が特定の顧客にメモを追加できるようにするためのコードを書こうとしています。この2つの表は、次のとおりです。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" /> 

とも - ノートIDは、あなたの主キーであることを考える - あなたはこのオートインクリメントを検討する必要があり、したがって、あなたは、「ノートID」と呼ばれる任意の入力を持ってする必要はありません - autoincrementationのないcosをあなたが確認するための検証メカニズムを必要としますそこにはすでにそのイドが入っているというメモはありません。

0

使用POST機能、

$Name = $_POST['Name']; 

あなたのフォームは、POSTメソッドを使用しています。

0

もう一つの問題は、あなたが持っている可能性があります

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

あなたがPHPタグ<?php $CostumerID ?>または<?= $CostumerID ?>を使用する必要があります$CostumerID VARを表示したい場合。

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;?>"> 
関連する問題