Bir sayfada farklı sorgulardan sonuçları göster, ya da değil, aynı zamanda

2 Cevap php

Ben yapmaya çalışıyorum ne ifade için en iyi yolu oldu emin değilim. Buraya:

Kullanıcıların sonuçları üç farklı tablolar, tek bir seferde dayanarak benim DB oluşturmak göstermeye muktedir istiyorum.

Ben sorguları hazır, ancak yalnızca kullanıcı tıkladığında ne dayalı bir anda sayfada bir sonuç göstermek istiyorum. Sorgular 3 farklı masalarda dayanmaktadır. Bir Bugün tablo, Bu Hafta tablo ve Bu Ay tablo var.

Kullanıcıların Bugün tıkladığında Yani, ben Bugün tablodan sonuçlarını göstermek istiyorum. Onlar Bu Hafta tıkladığınızda, ben sonuçlar Bu Hafta tablosundan gelir geçmek istiyorum. Ben bu PHP basit bir eğer-o mantıkla yapılabilir varsayarak yaşıyorum.

İşte Bugün tablosundan arıyorum nasıl:

<?php

global $wpdb;
$result = $wpdb->get_results('SELECT name, count FROM wp_celebcount_today');
foreach($result as $row) {
echo '<a href="http://www.celebrything.com/?s=' .
    urlencode($row->name) . '&search=Search">' . $row->name .
    '</a> - ' . $row->count . ' Posts<br/>';}


?>

Ben şöyle Bu Hafta tablodan çağırır:

<?php

global $wpdb;
$result = $wpdb->get_results('SELECT name, count FROM wp_celebcount_thisweek');
foreach($result as $row) {
echo '<a href="http://www.celebrything.com/?s=' .
    urlencode($row->name) . '&search=Search">' . $row->name .
    '</a> - ' . $row->count . ' Posts<br/>';}


?>

Bu sorgu, şu anda sayfa yükten çalışıyor. Nasıl "Bu Hafta", ya da "Bu Ay", bu "Bugün" konulu bir tıklama çalıştırmak yapmak için mantığı eklemek istiyorsun?


Tamam - bugüne kadar yardım için teşekkürler! Ben bu var:

<div id="sidebar">

<div class="post">
<h2>

<font color="#333333">Most Popular Celebrities</font><br>
<font color="#333333">in last 24 hours</font>
<br>
<br>

<a href="page.php?table=today">Today</a>
<a href="page.php?table=week">Week</a>
<a href="page.php?table=month">Month</a>

<?php
if (!in_array($table, array('today', 'week', 'month')) {
  return false;
}

global $wpdb;
$result = $wpdb->get_results('SELECT name, count FROM wp_celebcount_' . $table);
foreach($result as $row) {
echo '<a href="http://www.celebrything.com/?s=' .
    urlencode($row->name) . '&search=Search">' . $row->name .
    '</a> - ' . $row->count . ' Posts<br/>';
}
}



showTable($_GET['table']);
?>

</h2>
</div>

</div>

<div class="clear"></div>

Ben bu hatayı alıyorum:

Ayrıştırma hatası: hat 16 üzerinde sözdizimi hatası, beklenmedik '{' in / home / content / c / e / l / celebrything / html / wp-content / themes / celebrything / sidebar.php

2 Cevap

Sen bir işlevi içine kodu yapmak, ve bir istek param yoluyla tablo seçebilirsiniz. Böylece aşağıdaki gibidir. I in_array tablo herhangi bir tablo değil emin olmak için kontrol eklendi unutmayın.

<a href="page.php?table=today">Today</a>
<a href="page.php?table=week">Week</a>

PHP

function showTable ($table) {

if (!in_array($table, array('today', 'week', 'month')) {
  return false;
}

global $wpdb;
$result = $wpdb->get_results('SELECT name, count FROM wp_celebcount_' . $table);
foreach($result as $row) {
echo '<a href="http://www.celebrything.com/?s=' .
    urlencode($row->name) . '&search=Search">' . $row->name .
    '</a> - ' . $row->count . ' Posts<br/>';
}
}

Sizin de işlevini çağırın page.php:

if (empty($_GET['table'])) {
    showTable($_GET['table']);
} else {
    showTable('today');
}

Sen URL parametrelere dayalı yapabilirsiniz.

Bağlantı bu gibi bir şey olacaktır: site.php?type=today.

Sonra, PHP komut, örneğin yapabilirsiniz:

if (isset($_GET['type']))
{
    switch ($_GET['type'])
    {
        case 'today':
            // Query and list for today
            break;
        case 'thisweek':
            // Query and list for this week
            break;
        case 'thismonth':
        default:
            // Query and list for this month
            break;
    }
}
else
    // Error handling here

EDIT: Ben örnek daha somut olarak yapılan ve kullanılan bir daha kolay varsayılan durum ile karışıklık sağlar çünkü switch, inşa.

Bu artık bir türü geçersiz verildiğinde, bu ay için liste görüntülenir üstleniyor. O ne istediğini düşünüyorum ...

Neden tam olarak hatta bu üç tablo var: Bana olsa, sana sorayım? Eğer bir tarih sütunu ile, öyleyse, sadece tek bir tabloda bunu yapmalıyız ... böylece bu hafta sütuna ve bugün tablodan öğeleri taşımak için cron benzeri komut çeşit kullanarak değiliz söyle lütfen.

EDIT 2: Eğer örnek kodunuzu düzeltmek için olsa da, $_GET['table'] için $table adlı değişken adını değiştirmek gerekir. Ayrıca değişken (isset($_GET['table']) ile kontrol ederek) hiç var olup olmadığını kontrol etmelisiniz.