"Sayfaların sayısını" nasıl belirlenir

8 Cevap php

Ben bir kopyasını yazmıyorum umut, ama ben sorumu cevaplıyor şey bulamadı. (Oldukça yaygın bir sorun olarak görünüyor bana rağmen.)

Sorun neredeyse her web projesi oluşur: çok çok kayıtları ile bir tablo var ve onları tek sayfalarında görüntülenecek istiyorum.

Şimdi tablo satırlarının belli bir seti için gerekli sayfa sayısını hesaplamak için en iyi yolu nedir merak ediyorum.

İşte ben düşünüyordum bazı yaklaşımlar. Ben onlar ne kadar etkili bazı yanıt almak istiyorum. PHP-spesifik örnekler vereceğim, ama diğer dillerde de benzer teknikler vardır bahis.

  1. Muhtemelen en iyi yolu, yeni bir giriş eklenir her zaman statik sayfaların numarasını kaydetmek ve değerini değiştirmek için. (Nevertheless. .. ben dinamik bir çözüm :-) arıyorum)

  2. Ilgi satırlar üzerinde bir SELECT COUNT(*) yapmak ve sayfa numaralı sayfa görüntülendiğinde her zaman hesaplamak.

  3. Tüm satırlar için bir sonuç kümesi almak için sıradan bir seçme yapmak. Şimdi mysql_fetch_row ya da öylesine arayarak satırları yüklemek, ama mysql_num_rows ile satır sayısını alamadım. (Bu ben etkili olup olmadığını söyleyemem uygulanır nasıl hiçbir fikrim yok beri.? Bilen herkes) Sonra ben rahatça sonuç kümesi imleç hareket olabilir. (For mysqli Bu yüzden bu mysqli sadece bazı tamponlama davranış olduğunu varsayalım. Orada mysql_data_seek, ama yerli MySQL eklentisi benzer bir işlevi vardır)

Herkes en etkili satır sayısını (sayfa sayısı) saymak nasıl söyleyebilirim?

8 Cevap

Sayı 2 en yaygın desen

select count(*) from [Table] where [Expressions]

Sonra

select [Columns] from [Table] where [Expressions] limit [Pagesize] offset [Pagenum*Pagesize-Pagesize]

Bu size tüm sonuç kümesi, ancak geçerli sayfa için satır sadece veri için toplam satırları verir.

Birçok çerçeveler veya CMSes siz ya-olmayabilir size vb beklenen tablo boyutları, veri volatilite, bağlı yapmak isteyebilirsiniz oturumunda bu verilerin belirli bölümlerini önbelleğe alma için kuralları var

Gerçekten gerçekten WTF oranlarda bir şey istedim, her zaman ekleme / silme bir tetikleyici kullanarak bazı kayıt arttırılmasıyla vardı kaç satır takip olabilir.

Ama bu henüz daha fazla soru soran bir cevap ;) olduğunu düşünüyorum.

Eğer varsa sadece SELECT COUNT kullanın. Onun yavaş, bu veritabanı yanlış genellikle yerleşik demektir.

Ayrıca, ben burada sürünen erken optimizasyon var his var. Erken optimize etmeyin. Mantıklı, ve o anlamda daha iyi yapmak make. Mantıklı?

Eğer doğru anlamak, çoğu sistemlerde ben bir sayfa için satır yeni bir dizi kapma gibi ben aynı zamanda sayfaların sayısını gerekli ettik çalıştık. Bu bir "M sayfa N" ekranı veya başlık olarak böyle bir şey, ve kayıtların tam bir ekran sağlar.

Bu veritabanı bağımlı, ama genellikle o satır sonraki seti ve toplam sayfa numarasını almak için bir "sınırlı sorgu" (fetchsize, top, vb) yapmak, CURRENT_PAGE numarası (veya satır sayısı) geçmektedir. Satır sayısı altında değişiyor eğer çirkin alır Verilen, ama genellikle bu konuda endişelenmeyin.

Paul.

Ben sadece LIMIT anahtar kelimeyi değiştiren tek bir SQL sorgusu etrafında navigasyon kurmak istiyorum düşünüyorum. Örneğin SELECT * myTable limit 0,20 ilk 20 satır dönecektir. Sayfa 2 için PHP komut dosyası sonra SEÇ olmak için SQL sorgusu koyacaktır * myTable LİMİTİ 20,40 DAN dolayısıyla 20-40 satırları döndüren. Mı bu aradığınız ne?

Navigasyon sadece select COUNT (*) / RowsPerPage yapıyor ve satır sayısını karşılayacak kadar böylece kod döngü yapısını tarafından PHP ile inşa edilebilir. Uç Sorgu sonra lastLimit, TotalRowCount için SINIR olacaktır.

Edit: Eğer 1 sayfa olabilir kaç satır tanımlamak için ihtiyacınız olan tüm satırları hesaplamak gerekir kaç sayfa hesaplamak için. Siz istiyorsunuz o zaman do TotalRows / MaxPerPage = howManyPagesNeeded

Bu bağlamda dikkate 2 soru:

  • Eğer izlerken güncellenir / takılı alır verileri nasıl?
  • kaç eşzamanlı kullanıcı verileri tarama olacak ve uygulama dinamik veri sayfaları getirir zaman trafik yetişmek mümkün olacak?

Yanıtlara bağlı olarak, burada diğer bazı yanıtları veya geçerli olmayabilir.

Sen this soruyu kontrol etmek isteyebilirsiniz, bu ne soran çok benzer.

PHP ile bir web sayfası dolduruyorlar Aslında, eğer, sadece, MySQL tablo olsun bir diziye veri koymak ve kullanımı kolay bir for döngüsü böyle verilere düşünce gitmek

for($i=0;$i<count($arrayvar);$i++){}

Hatta basit bir şablon motoru ile, başka bir blok içinde bir blok beyan ve bir consequtive doğrultusunda tüm verileri ayrıştırmak.

O aradığınız cevap türü bulunuyor umuyoruz. Ben size soru ne demek gerçekten net değilim, ama ben bu olduğunu düşünüyorum.