Bir veri tabanı girdileri benim web sayfasında görüntülenen şekilde işlemek için en iyi yolu nedir?

2 Cevap php

Ben küçük bir CMS inşa ediyorum bir müşterim var. Işlevlerinden biri de görüntüleri bir sayfada görüntülemek sırayı almak mümkün olmak istiyorum olmasıdır.

In my mySql Database I have a table called image_info with the fields:
index (auto incremented)
img_url
img_link

I was thinking of adding an additional field called img_order which would be an int that I would refer to to sort the data returned to my php script.

Ben iyi yolu ise emin değilim. Ben yeniden sadece listede yukarı veya aşağı bir görüntü taşımak için veritabanındaki her giriş numaralandırma gerekecek gibi hissediyorum.

Fonksiyonunun bu tür için standart bir prosedür var mı?

Thanks, -J

2 Cevap

Ben bir img_order sütun ekleyerek kolay yol olduğunu düşünüyorum, ve zor alanları yeniden numaralandırmak olmak olmayacaktır. Eğer img_order 15 konumundaki bir resim ekleyerek eğer Örneğin, sadece aşağıdaki sorguyu çalıştırın, bu değer ile takın:

update image_info set img_order = img_order + 1 where img_order >= 15;

Varolan bir görüntüyü kaldırma ediyorsanız, ondan sonra tüm görüntüler için img_order değerlerini düşürmek zorundayız:

update image_info set img_order = img_order - 1 where img_order >= 15;

Eğer başka bir yerden bir görüntü taşıyorsanız eğer, özgün ve yeni konumu arasındaki tüm görüntüler için img_order artırmak zorundayız:

update image_info set img_order = img_order + 1 where 
img_order between (least($old_img_order, $new_img_order), 
greatest($old_img_order, $new_img_order));

Her pozisyon değişikliği üzerinde yeniden numara gerekir. Ama algoritma iki sorgularda tüm yapabileceği çok karmaşık değildir.