2011-07-03 2 views
0

自分のデータベースに1つのフィールドを作成しました。アルバム名が一意であると考えてください。私は、ユーザーがその名前の他のアルバムを追加しようとすると、そのレコードがすでに存在するというエラーメッセージが表示されるという制約をうまく加えました。したがって、ユーザーは同じ名前の他のレコードを追加することはできません。ロジックのヘルプ

しかし、今、私は彼がaの名前として記録bを更新することができますよりも、そうaでデータベースに2つのレコードを自分なり3つのレコードが自分のしている場合、名前a,b,c.とユーザーとのデータベースに存在していることを問題は、フィールドのいずれかを更新しています。 &私はそれをユニークにしたいと思っています。そのために私は..

if($name!="") { 
    $sql = "select a_name from t_a_list where a_name = '$name'"; 
    $result = mysql_query($sql); 

    if(mysql_num_rows($result) != 0) { 
    $msg = "<font color=red>Record Not Saved. Album already Exist!</font>"; 
    } 
} else { 
    $msg = "<font color=red>Enter Name of Album!</font>"; 
} 

if($msg=="") { 
//Update Query 
} 

をスクリプトを使用しています。しかし、私はupdationため、各pageloadと私はアルバムのために別の名前を選択する必要があるという問題があります。アルバムが存在することを示すメッセージが表示されるためです。時には、リリース年、トータルトラックのように、アルバムの名前以外の情報を変更したい場合もあります。しかし、このスクリプトではフィールドの最初を更新したい場合、最初にアルバム名を変更する必要があります。この問題を助けてください。だからアルバム名はDBで繰り返されないかもしれないし、名前以外の情報も更新できる。

+1

'font'タグが行われます!本当に? –

+0

aditii、フォントタグは長く非難されています... CSS IDとクラスでspanタグを使用してみてください。 –

答えて

1

あなたは変数にOLDNAMEを救うことができると:既存のテーブルのためにこれを行うには

一つの方法は、ALTER TABLEコマンドを使用しています。 この方法は、変更しない限り、あなたが名前を更新しませんし、他のフィールドの更新が

 
$oldname = THE NAME OF THE ALBUM BEING EDITED 
.... 
if($name!=$oldname) { 
if($name!="") { 
$sql = "select a_name from t_a_list where a_name = '$name'"; 
$result = mysql_query($sql); 
if(mysql_num_rows($result) != 0) { 
    $msg = "Record Not Saved. Album already Exist!"; 
} 
} else { 
$msg = "Enter Name of Album!"; 
} 
if($msg=="") { 
//Update Query 
} 
} 
if($description!="") { 
.... 
} 
if($location!="") { 
... 
} 
... 

1

データベースレベルで一意制約を強制する必要があります。このようにして、データベースは操作を拒否し、同じキーを持つレコードを作成します。

if($name!=$oldname) { ...
のための最初のチェックを更新する際に

ALTER TABLE myalbums ADD UNIQUE (albumname);