Filtre mysql sonuçları yardım

2 Cevap php

Im have a code that querys a mysql database against a certain criteria, and returns a result. The result then, is displayed in table rows inside a while loop, using the 'mysql_fetch_array' function:

    while($row = mysql_fetch_array($qry_result)){

By the way, this is a classifieds website... Here is my problem:

After the results are displayed, I want the user to be able to click a button or link and then filter the results in 3 ways ('ALL ADS', 'ONLY PRIVATE ADS' or 'ONLY COMPANY ADS'). Is there a smart way to do this without ten pages of code?

Ben zaten bir çözüm var, o, while döngüsü önce eğer deyimi eklemek için bir değişken 1, 2 veya 3 olup olmadığını kontrol etmek, ve sonra üç tane olduğunu while döngüleri:

      if ($ads_shown=='1'){ while loop and show "ALL ADS"}
      else if ($ads_shown=='2'){while loop and show "PRIVATE ADS"}
      else if ($ads_shown=='3'){while loop and show "COMPANY ADS"}

but this doesn't seem like the best way if I am seeking maximum speed in this case! So, any help?

2 Cevap

Bu sana tebliğ inanıyorum ne dayanmaktadır. Belki tamamen yanlış duyuyorum. Sonra benim mesajı dikkate almayın.

Bu öğleden kullanıcı etkileşimi sonra bütün set MySQL sonuçları filtrelemek için çalışıyoruz eğer AJAX kavramını anlamadı görünüyor.

Siz kullanıcı olmadan bir web sitesinde tıkladığı göre belirli reklamları seçmek istediğiniz yeniden web söyledi. Eğer ilk yüklendiğinde web sitesinde yanında tüm veri tablosunu göndermek olduğuna inanıyorum.

Ne gerçekten istiyorum sonra sitenize geri gönderilir veritabanından bir XML oluşturur ayrı komut dosyası için bir HTTP isteği gönderir bir Javascript olduğunu. Sizin hala non-yeniden yükleme sitesi daha sonra XML yeni içerik yaratan bir JavaScript tabanlı olay yürütür.

Kısa cevap: (: Bu bir PERL örnektir, ancak konsepti tam olarak aynı notu), AJAX kavramları öğrenmek için çalışın, bir işaretçi olarak this kullanın

Sen aslında sizin için sonuçları filtrelemek için MySQL sorgusu değiştirmek ve daha sonra normal şekilde döngü çalıştırın. Bu bir döngü anlamına gelir ve bunu 3 sürümlerini korumak zorunda değilsiniz.

  if ($ads_shown=='1'){ $extra_query = "";}
  else if ($ads_shown=='2'){$extra_query = "WHERE `type` = 'Private'";}
  else if ($ads_shown=='3'){$extra_query = "WHERE `type` = 'Company'";}
  $qry_result="SELECT * FROM `ads` ".$extra_query." LIMIT 10";

     while($row = mysql_fetch_array($qry_result))
    {
    }

Tabii ki sizin amaçlarınıza uygun kod uyum ihtiyacımız olacak, ama gidiyor bir kez çalışacaktır. Emin type Yapmak ve değerler type doğru MySQL tablo nedir ile bağlantılıdır.

Update:

Orada bu sorgudan önce olamaz hiçbir gerçek nedeni ancak burada bunun üzerinde ısrar ediyor:

     while($row = mysql_fetch_array($qry_result))
    {
        if ($row['type']==$ads_shown) //Where 'type' denotes the type of advert
        {
          //Do stuff
        }
    }

Tüm veri MySQL yakaladı ediliyor ve şeyler değil, sadece gerekir, çünkü bu daha az verimli. Ama sen karşılık $ ads_shown değerini belirledik varsayarak reklam türünü depolamak için kullanmak ve 'tip' denilen tablodaki bir alan olduğunu varsayarsak, iyi çalışması gerekir.