• 11-12-2014, 16:12:13
    #1
    Merhaba,

    Wordpress ile oluşturduğum bir sitede konu içinde o konuya en çok gönderi yapan kullanıcıyı göstermek istiyorum. gönderi normal yorum sistemiyle değil, sayfa içinde kendi oluşturduğum form ile gerçekleşmektedir. Bu veriler de yeni bir tabloda tutulmaktadır. Örnek olarak;

    field_name  field_value
    id          1
    entry       489
    Submitted   indirimdeki
    IP          212.156.66.142
    id          1
    entry       689
    Submitted   indirimdeki
    IP          212.156.66.142
    id          750
    entry       indirimdeki
    Submitted   212.156.66.142
    IP          1
    id          790
    entry       zamli
    Submitted   212.156.66.142
    IP          1
    böyle bir tablodan field_value içinde en fazla olan kullanıcıyı (field_name = Submitted filtresiyle) bulup yazdırmak istiyorum. Phpmyadmin içindeki çalıştırdığım dorgu ile istediğimi gerçekleştirdim. Ancak bunu sayfada yazdıramıyorum. Sorgu şu şekilde;

    $maks = $wpdb->get_results( 'SELECT MAX( field_value )
    FROM wp_cf7dbplugin_submits
    WHERE field_name = "Submitted"', OBJECT );
    Bu sorgu ile çıkan sonuç indirimdeki oluyor. Ancak echo $maks; yazdığım zaman sayfadaki çıktısı "ARRAY" oluyor. Bu konuda yardımlarınız bekliyorum.

    Şimdiden teşekkürler
  • 11-12-2014, 21:02:09
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Dönen değerler nesnel dizi şeklindedir.
    <?php 
    echo "<pre>";
    print_r($maks);
    echo "</pre>";
    ?>
    ile dizinin çıktısını görebilirsin. Yazdırmak için ise;
    <?php 
    echo $mak[0]->alan_adi;
    ?>
    Şeklinde yapabilirsin. "alan_adi" olarak belirttiğim kısım $maks değişkeninin çıktısını aldığında 0.elamanın içerisinde bulunan indis ismidir. Yada sorgunu şu şekilde değiştirebilirsin;
    $maks = $wpdb->get_results( 'SELECT MAX( field_value )
    FROM wp_cf7dbplugin_submits
    WHERE field_name = "Submitted"', ARRAY_N );
    Bu durumda yazdırmak için şöyle bir yöntem kullanabilirsin.
    <?php echo $maks[0][0];?>
    Birde ufak bir hatırlatma yapayım. Wpdb sınıfını kullanırken global $wpdb; tanımlamasını yapmayı unutma. Bazen sıkıntı doğurabilir.
    İyi Çalışmalar.
  • 11-12-2014, 21:54:42
    #3
    buraqgo adlı üyeden alıntı: mesajı görüntüle
    Dönen değerler nesnel dizi şeklindedir.
    <?php 
    echo "<pre>";
    print_r($maks);
    echo "</pre>";
    ?>
    ile dizinin çıktısını görebilirsin. Yazdırmak için ise;
    <?php 
    echo $mak[0]->alan_adi;
    ?>
    Şeklinde yapabilirsin. "alan_adi" olarak belirttiğim kısım $maks değişkeninin çıktısını aldığında 0.elamanın içerisinde bulunan indis ismidir. Yada sorgunu şu şekilde değiştirebilirsin;
    $maks = $wpdb->get_results( 'SELECT MAX( field_value )
    FROM wp_cf7dbplugin_submits
    WHERE field_name = "Submitted"', ARRAY_N );
    Bu durumda yazdırmak için şöyle bir yöntem kullanabilirsin.
    <?php echo $maks[0][0];?>
    Birde ufak bir hatırlatma yapayım. Wpdb sınıfını kullanırken global $wpdb; tanımlamasını yapmayı unutma. Bazen sıkıntı doğurabilir.
    İyi Çalışmalar.
    Öncelikle teşekkürler,
    global $wpdb; diğer sorgular için zaten yazmıştım ancak yukarıdaki önermeler cevap vermedi malesef.

    <?php 
    echo $mak[0]->alan_adi;
    ?>
    yazdığımda aşağıdaki şekilde yazı çıktı sadece.

    Array
    (
    [0] => stdClass Object
    (
    [MAX( field_value )] => indirimdeki
    )

    )
  • 12-12-2014, 17:20:06
    #4
    SQL, sorgun hatalı dostum.
    http://stackoverflow.com/questions/6...-column-in-sql
    http://www.w3schools.com/sql/sql_func_max.asp

    Bunları bir incele.
  • 13-12-2014, 09:57:21
    #5
    buraqgo adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Bu konuları buraya konu açmadan önce incelemiştim zaten, ancak çok anlamadım. Mesela stackoverflow da şu kod;

    SELECT tt.*
    FROM topten tt
    INNER JOIN
        (SELECT home, MAX(datetime) AS MaxDateTime
        FROM topten
        GROUP BY home) groupedtt 
    ON tt.home = groupedtt.home 
    AND tt.datetime = groupedtt.MaxDateTime
    tt nedir anlamadım. Bir de bunlarda sayılarla uğraşıyorlar yani değer olarak en büyük olnı getir diyor iki sitede de. Benim istediğim ise adetolarak en çok olanı getirmesi.

    Şu olabilir belki bilemiyorum ama onda da zorlandırm yapamadım. Her bir kullanıcının yanına kayıt numarasını da yazdırayım, her yeni kayıtta bu 1 artsın. Daha sonra da kayıt numarası en yüksek olan satırın kullanıcısını yazdırayım.

    Bu da bir yöntem ama şu an database içine bunu yazdırmayı da beceremedim.