2017-03-28 13 views
0

こんにちは私は誰も手を貸すことができますこの問題に少しこだわっています。私は並べ替えの位置と列を持っているテーブルがあり、私がしようとしているのは、削除ボタンがクリックされたときに削除されたものよりも高い位置の値を持つ行が減少する。一般に、このphp pdo削除された値よりも大きい値を減らす

// 1 
// 2 //now we delete this 
// 3 
// 4 
// and this get's updated with this 
// 1 
// 2 
// 3 

<?php 
require_once('connect.php'); 
$name = get_option('selectedSlide'); 
$position = get_option('selectedSlideId'); 
    try{ 
     global $db; 
     if(!get_option('selectedSlide')){ 
     $error.="No slide selected."; 
     echo $error; die; 
     } 
     else{ 
     $inserts = $db->prepare("DELETE FROM slider_images WHERE slider_image_name = :names"); 
     $inserts->bindParam(':names', $name); 
     $inserts->execute(); 
     $incrementAllBehindDeleted = $db->prepare("SELECT slider_image_position FROM slider_images WHERE slider_image_position>:position"); 
     $incrementAllBehindDeleted->bindParam(':position', $position); 
     $incrementAllBehindDeleted->execute(); 
     die; 
     } 
    } 
    catch(Exception $e){ 
     echo $e->getMessage(); 
     exit; 
    } 
?> 
+2

これが必要な場合は、検討してください。あなたの値がソート順にのみ使用されている場合、ギャップがあるかどうかは関係ありません。実際には、新しい値(10,20,30 ...を挿入でき、10から20の間に挿入したい場合は値15で追加することができるので、ギャップが良いことになります)。あなたの番号に隙間があるという理由だけであなたのシステムが壊れた場合、それはあなたがそのフィールドを過負荷にしており、それを単純化するべきであるというサインです。 –

+0

ギャップはありません。他の機能では、選択された値をインクリメントして行く場所を減らし、ギャップがあればそれが破損するため、これらの値が切り替わるからです。 –

+0

これはうまく動作しません。 –

答えて

0

のように、私はNietにあなたがいる限り数字の順番は結構ですと、ギャップを心配する必要はありませんダークアブソルさんのコメントに同意するものとします。あなたがして、あなたが複数の画像スライダーを持っている場合は、しかし、

UPDATE slider_images SET slider_image_position=slider_image_position-1 WHERE slider_image_position>:position 

:あなたはそれを主張する場合

しかし、その後、私は、その後の画像の位置を下げるために選択せずに更新を単純だろう画像のスライダの識別子を更新のwhere句に含めなければなりません。

+0

ありがとうございましたこれは問題を解決しました。 –

関連する問題