Kullanıcı tercihlerine göre bir tablonun içinde öğeleri sipariş, doğru yolu nedir?

5 Cevap php

Öğeleri (makaleler, menü girişleri ve seviyor) siparişi okları olan Joomla tarzını gördükten sonra, ben bir tablo içinde öğeleri kaydırmak için en iyi uygulama olarak kabul edilir merak ediyordum.

Açıktır ki sayılar, harfler, ya da size bu düzeni değiştirmek zorunda, sonra bir düzeni tanımlamak için kullanmak isteyebilirsiniz şeyi tutun bir tablo içinde bir alanı olmalı, ben, bunu başarmak için herhangi bir zarif yolda olabilir düşünemiyorum Bana yardım eder misiniz?

Thank you very much

EDIT: Reading the answer I realize that i may not have been clear, I don't need to order items based on standard parameters (like I don't know, date, id, etc). I need to decide an order myself. Like this:

id - name - order
1    one    2
2    two    1
3    three  3

Ben bir ilk pozisyona girmek zorunda istiyorum gibi ben '2 iki sırası değerini değiştirmek gerekir öğelerin (sırasını değiştirmek için doğru yolu 've '1 birinin değerini' bilmek istiyorum .

Ben kendimi doğru açıkladı umut

5 Cevap

Sipariş için büyük sayılar kullanın:

id - name - order
1    one    200000
2    two    100000
3    three  300000

150000: Eğer 3 2 ve 1 arasıdır hareket etmek gerektiğinde sadece 100.000 ile 200.000 arasındaki ortasında onun sipariş değerini değiştirin.

Eventualy iki komşu sayı arasında öğe eklemek gerekir. Eğer bu gerçekleşirse, sadece tekrar 100000 adımı kullanarak, ilk olarak tüm satırlar için sipariş sütun yeniden. Eğer türü taşma değil edeceğiz, dikkatli adımı seçin, ve çok sık tüm tabloyu yeniden yazmak zorunda değil edeceğiz.

if you have little table you can do it in client side using jquery plug-in ,

link to demo : http://tablesorter.com/docs/

what you need is save for every user in another table the preference of field sort , like by name after by age ....

bundan sonra sadece yapmanız gereken bu alanını js bölümünde olduğu

$(document).ready(function()     {         $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} );     } );

Bu çözelti içinde değiştirmek gerekmez query

Kolay yolu tablo oluşturmak için kullanılan deyim yan tümcesinde bir "tarafindan" var ve bu Joomla ok gibi, her başlık hücrede bir bağlantı desene tarafından kontrol sahip olmaktır.

Birisi ok (veya ne olursa olsun kullanın) tıkladığında ... yani, sadece `http://mydomain.com/mypage.php?orderby=salestotal gibi bir" orderby "CGI değişkeni, 'ile, geri sayfaya bir köprü bulunuyor.

Sonra bu değişkeni kullanmak için sorguyu değiştirin:

$sql = 'select col1, col2, col3 from table where col2 = somevalue';
if ($_REQUEST['orderby']) $sql .= " order by ' . $_REQUEST['orderby'];

Bir dize değeri ise vb alıntı uğraşmanız gerekir, ve tablo ilk etapta CGI değişkenleri ile oluşturulan eğer, siz de bu devleti yönetmek için karşılamak gerekir.

Bu (zor anlamlı ama!) Daha iyi olurdu onun devletinin tüm sayfayı yeniden önlemek amacıyla, Ajax veya jquery falan (farklı bir cevap tarafından önerilen) kullanarak sayfa içinde tablonun yenilenmesini ele.

Eğer koyduk EDIT Looing, sana çalışıyoruz anlamak. Ben sütunu kullanarak ve Sipariş, size bahsettiğim gibi benzer bir şekilde bir çözüm hayata geçirdik. Ve sonra BY yan tümcesinde ORDER Sipariş sütunu kullanarak.

Bir iyi uygulama ucu, 1 yerine 10, 20, 30 vb gibi 2, 3 numaraları kullanmak olacaktır. Bu bana zaman içinde daha sonraki bir noktada gelip yeni bir şey için, 15 gibi, 10 ve 20, diyelim arasında yeni bir al değer bir satır eklemek için esneklik verdi.

Bir bağlantılı liste olarak size veri tutun:

id parent name
-- ------ -----

1  2      one
2  0      two
3  1      three

ve bu gibi sorgu:

SELECT  @r AS _parent,
        @r := (
        SELECT  id
        FROM    mytable
        WHERE   parent = _parent
        ) AS id
FROM    (
        SELECT  @r := 0
        ) vars,
        t_list

Bu size doğru sırayla listesini döndürür:

id parent name
-- ------ -----

2  0      two
1  2      one
3  1      three

Böyle bir tasarımda bir öğe veya öğeler bile blok hareket eden bir güncellemesini ama en çok üç satır alır.

Liste üzerinde öğeleri taşımak için bir saklı yordam için bloguma bu girdiyi bakın: