2016-12-15 7 views
0

タイトルをフォームから取り出してデータベースに書きたいとします。タイトルが既に存在する場合は、タイトルに1を追加します。私は自分でそれを修正することができますが、問題はどのようにして(1が追加された後)再びチェックし、タイトル+1が既に存在する場合はタイトル+2となる... ループはそれをしますか?タイトルをチェックし、既に存在する場合は番号を追加するループです

$title = $_POST["title"]; 
$sql = "SELECT * FROM [my_table] WHERE title='$title'"; 
$result = mysqli_query($con, $sql); 
if(mysqli_num_rows($result) > 0) { 
    $title = mysql_real_escape_string($_POST["title"]); 
    //$title + add 1 to the title 

} else { 
    $title = mysql_real_escape_string($_POST["title"]); 
} 
+0

データベース内のタイトルに一意のキーを使用し、重複したクエリを使用することができます – Maytyn

+0

タイトル+ nがあなたのタイトルになり、nがincremental always、limitからの最後のレコードをフェッチし、それに応じて更新する – rahulsm

答えて

0

1つの可能な解決策は、同じタイトルのレジスタの数を取得することです。

$sql = "SELECT COUNT(*) AS count FROM [my_table] WHERE title='$title'"; 
$result = mysqli_query($con,$sql); 
$row = mysqli_fetch_assoc($result); 
$count = $row['count']; 

その後:たとえば

if($count > 0) { 
    $title = mysql_real_escape_string($_POST["title"]); 
    $title .= $count; 

} else { 
    $title = mysql_real_escape_string($_POST["title"]); 
} 
+1

ありがとう、それは正常に動作します。カウントの前に '$'を入れてください。 –

+0

私の悪い!一定。ありがとう! – deChristo

0

は完全にPHPからこれを行うには、私は一度にDBから一致するすべてのタイトルのリストを取得し、その後1まで新しい番号をしようとし続けるだろう一致していません:

$title = $_POST["title"]; 

//Get everything from the database that starts with $title 
$sql = "SELECT title FROM [my_table] WHERE title like '$title%'"; 
$result = mysqli_query($con,$sql); 

//Create a list of existing titles 
$aTitles = array(); 
while($row = mysql_fetch_assoc($result)){ 
    $aTitles = $row['title']; 
} 

//Now see how many numbers we have 

$iNum = 0; 
$sTempTitle = $title; 

while (in_array($sTempTitle, $aTitles)){ 
    //This one exists. Try the next number 
    $iNum++; 
    $sTempTitle = sprintf('%s %d', $title, $iNum); 
} 

$title = $sTempTitle; 
0

タイトルの一部としてtitlenumber suffixを持つことは良い習慣ではありません。

countON DUPLICATE KEYを増やす場合は、titleの列にcountの列を設定することをお勧めします。 title列をUNIQUEに設定する必要があります。次に、SELECTにタイトルを作成するには、row['title'] . "-" . row['count']を連結します。

何らかの理由であなたは現在の構造を維持したい場合は

は、タイトルのいずれかである。すなわち:

  • <title>
  • または<title-count>

あなたがすることで、既存のタイトルに読まなければならないだろうtitle LIKE 'some_title%を使用してください。

  • 存在しない場合は追加します。存在する場合は新しい行を追加します。
  • が既に存在する場合、すなわち,によって分割され、最後の要素を取得し、あなたが最初のタイトルを解析しなければならないことに注意してください(数を増やすことで行を更新 - これがあなたの番号である

注:この

関連する問題