"Düzeni" nasıl işleneceğini

3 Cevap php

Benim istemci backend öğeleri sipariş edebilmek istiyorum. Ben bunu yapmak için en kolay yolu, bir değer alır "düzen" denilen bir alan var bir öğe için veritabanı tablo var olduğunu düşündüm. Bu istemci Sonra ben sadece "düzen" alanına göre sipariş SQL sorguları çalıştırabilirsiniz içeri koyar bir değerdir.

Şu anda ben .. hiçbir mantığı yoktur .. çok basit bu yüzden kullanıcı sırayla vereceğini = 100 bir öğe ve sipariş için = başka 200 .. ve düşük bir değer ile bir ilk yer almak istiyorum. Bunu yapmanın daha zarif bir yolu var mı? Ben "yukarı taşımak" ve "aşağı hareket" gibi bir şey düşünüyorum. vs idare ürün daha rahat yapmak için çalışıyorum.

Herhangi bir fikir büyük takdir!

3 Cevap

Bildiğim kadarıyla veritabanı gider gibi, bir sipariş alanını kullanarak çözüm doğrudur. Muhtemelen olsa kullanıcıya bu sergilemek istediğiniz ve metin giriş atlatılabilir yukarı ve aşağı okları bir çift kullanarak yok. Bir kullanıcı ok 'up' tıkladığında, temelde yukarıdaki kayıtla belirli bir kaydı açın. Meta-dil:

// $myId holds id of record, $myOrder holds the order of the record

SELECT id, order FROM t WHERE order < $myOrder LIMIT 1
// Store id in $nextId, order in $nextOrder

UPDATE t SET order = $nextOrder WHERE id = $myId
UPDATE t SET order = $myOrder WHERE id = $nextId

Bu sadece çok kaba bir taslak olduğunu unutmayın, size uygun kaçışa eklemek zorunda olacak. Eğer sıkı bir sipariş sağlamak için bir UNIQUE dizini istiyorsanız, Ayrıca, son iki ifadeleri değiştirmek gerekir.

Sizin yaklaşım yapmaya çalıştığınız şey için sadece iyi. Şeylerin istemci arayüzü tarafında ben jQuery UI Sortable kütüphanesi kullanarak öneririm. Ne sıralanabilir arabirimi hakkında güzel o aşağıdaki gibi AJAX ile depolama koduna kolayca bağlantılı olmasıdır: http://harm.glucose-ontwerp.nl/dev/sortlist.php. AJAX üzerinden gönderilen veriler kimliklerinin bir listesini ve onlar içeri olmalıdır sipariş

UI fonksiyonlarını (yani düğmeler ve destekleme kodu) uygulamak "yukarı taşımak" ve "aşağı hareket", ama veritabanına, kullanıcının sırasını devam etmek için, zaten ayırt gibi bir sıralama anahtarı saklamak zorunda sağlayabilir. Bunu yapmak için başka hiçbir yolu yok. Eğer farklı kullanıcıların farklı aynı satırları sipariş edebilmek istiyorsanız o SortKey böyle bir şema ile ayrı bir "kullanıcı sıralama" tablosunun bir parçası olmak zorunda olacak:

itemKey     The primary key of the item table   
userKey     The primary key of the userID table (or maybe just the userID)
sortOrder   The sort key for this combination of user and product

Sonra belirli bir kullanıcının sıralama sırasını belirlemek için size userSort masaya öğe tablo katılmak istiyorum where userKey=[the user you're interested in]