Bir Önceki bağlantı ile ilgili sorunlar

2 Cevap php

Şu anda ben bir önceki sayfa veya sonraki sayfada (ya da herhangi bir sayfa numarası) taşımak için bazı bağlantılar var.

ex. <--prev | 0 | 1 | 2 | 3 | next-->

Benim sorunları Ben sadece bir "status = 'A'" ile sayfadaki öğelerin listesini veriyorum olmasıdır. (Aktif için bir ... bazı öğeleri bu sayfada listelenen olmak artık ve Sil veya 'S' Tükendi için bir 'D' olurdu).

SQL ben ... WHERE status='A' LIMIT $start_item, 20 var

Benim konular Önceki bağlantı ile. Nasıl bunun için $ START_ITEM hesaplamak gerekir? Şu anda ben mevcut kimliğini kullanarak (sayfadaki ilk kimliği şu anda görüntülenen) ve (sayfa başına öğe sayısı) ondan 20 çıkarılarak duyuyorum. Geçerli kimlik ve ID-20 arasında Active olmayan herhangi bir öğe varsa Ama sonra Önceki tıklandığında görüntülenmekte olan 20 ürün mevcut kimliği içine çalışacaktır.

2 Cevap

Sizin örnekte dayanarak, sıfır sayfa numaralandırma başlangıç ​​görmek biraz garip. Eğer aşağıdaki kullanıyorsanız:

start_item = (page_number - 1) * num_items_per_page

... Eğer 1'den başlayan sayfaları görüntüleyebilirsiniz.

Benim konular Önceki bağlantı ile. Nasıl bunun için $ START_ITEM hesaplamak gerekir?

Şeylerin sesler, sizin istek START_ITEM geçiyoruz. Ben sadece sayfa numarasını kullanmak, ve istek üzerine hesaplamak istiyorum. Sonra Prev ve Next düğmeleri için gereken tüm current_page_number - 1 ve current_page_number + 1 olduğunu. Kullanıcıların sayfa başına kaç öğeleri seçmek için izin vermeye karar varsa o da daha uzlaşmacı.

SINIR iki parametresi vardır aklınızda tutun:

  • başlangıç ​​satır
  • dengelemek

... Böylece limiti bu psuedocode benzeyecektir:

LIMIT [(page_number - 1) * num_items_per_page], 20


geçerli kimlik ve ID-20 arasında Active olmayan herhangi bir ürün varsa o zaman Önceki tıklandığında görüntülenmekte olan 20 ürün mevcut kimliği içine çalışacaktır.

  1. Eğer WHERE status = 'A', nonactive ürün (ki statüsü 'A' değil öğeler) çünkü never sorgudan iade edilecektir. O dedi ...
  2. Ürün durumu değişecek - Dediğiniz gibi silinmiş veya satılabilir, veri kayması neden olur. Bu geçerli öğe sayfanın eşiğinde olduğunu her zaman mümkündür ve durumu değiştirmediği başka bir ürün mevcut öğe şimdi önceki sayfada olması neden olabilir.

Eğer her ürün 'kimlikleri bilmeniz gerekmez. NEREDE filtreleme uygulandıktan sonra SINIRI sonuçları üzerinde de çalışır, bu yüzden bilmeniz gereken tüm - sayfa başına (bu durumda 20) kaç öğe. Sonra 0 SINIR, 20 size öğelerin ilk sayfasını vereceğim; LİMİT 20, 20 - ikinci sayfa, vb LİMİTİ ilk sayı bir kimliği değil, ama sonuçta sette öğe sayısı.