Merhaba arkadaşlar , http://jsfiddle.net/trevordowdle/6CDSB/1/ buradaki örneği buldum ve kullanmayı düşündüm yalnızca anlamadığım , yapamadığım bir konu var daha önce ajax ile sortable update yapmıştım ama nested girince sıkıştım kaldım.

Hem listemi listelettiğim divde döngüyle nasıl listeletebilirim , parent ve child kısımlarını hiyerarşik olarak denedim ama başaramadım , aynı zamanda ajax ile update yapmak istiyorum

yardımlarınız için şimdiden teşekkürler

Sorunumu çözdüm arkadaşlar bir yerde bulduğum çözüm ile

ÇÖZÜM

Öncelikle sıkıntım nested listeletmekti bir yerde bulduğum çözüm ile düzenleyince o kısmı halletim o da şu şekilde sayfamın üst kısmında function.js içinde bulundurduğum ve ajax ile post ettirdiğim kısım şu şekilde ;

function lagXHRobjekt() {
    var XHRobjekt = null;

    try {
        ajaxRequest = new XMLHttpRequest(); // Firefox, Opera, ...
    } catch(err1) {
        try {
            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); // Noen IE v.
        } catch(err2) {
            try {
                    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); // Noen IE v.
            } catch(err3) {
                ajaxRequest = false;
            }
        }
    }
    return ajaxRequest;
}

function menu_updatesort(jsonstring) {
    mittXHRobjekt = lagXHRobjekt();

    if (mittXHRobjekt) {
        mittXHRobjekt.onreadystatechange = function() { 
            if(ajaxRequest.readyState == 4){
                var ajaxDisplay = document.getElementById('sortDBfeedback');
                ajaxDisplay.innerHTML = ajaxRequest.responseText;
            } else {
                // Uncomment this an refer it to a image if you want the loading gif
                //document.getElementById('sortDBfeedback').innerHTML = "<img style='height:11px;' src='images/ajax-loader.gif' alt='ajax-loader' />";
            }
        }

        ajaxRequest.open("GET", "inc/ajax/option_update.php?jsonstring=" + jsonstring + "&rand=" + Math.random()*9999, true);
        ajaxRequest.send(null); 
    }
}

HTML tarafındaki kısımda nested listemi şu şekilde oluşturdum ;

                        <div class="dd" id="nestable">
                            <ol class="dd-list">

                                <?php

                                $request = $db->select("options")
                                    ->join('option_val' , '%s.option_id = %s.id' , 'inner')
                                    ->orderby('options.orders' , 'asc')
                                    ->run();
                                foreach ($request as $row)
                                {
                                    $kategoriler[] = $row;
                                }

                                function sayfa_nested($sayfalar , $ebeveyn = 0 , $kademe_pixel = 5 , $i = 0 , $menuler = null , $nested = false)
                                {

                                    // Sayfalar Boşşa boş döndür.
                                    if (empty($sayfalar))
                                        return;

                                    // Eğer fonksiyon içinden çağırılmıyorsa
                                    if (!$nested)
                                    {
                                        // Sayfaları ebeveyn idsi ile yeni dizi oluştur
                                        foreach ($sayfalar as $row):
                                            $items[ $row['parent_id'] ][] = $row;
                                        endforeach;
                                    } else
                                    {
                                        // Nested ise gelen sayfaları al
                                        $items = $sayfalar;
                                    }

                                    // Gelen sayfaları aç
                                    foreach ($items[ $ebeveyn ] as $sayfa)
                                    {
                                        if ($sayfa['is_locked'] == 1)
                                        {
                                            $class = ' <i style="color:red;" class="fa fa-lock"></i>';
                                        }else{
                                            $class = "";
                                        }
                                        if ($sayfa['visible'] == 0)
                                        {
                                            $class2 = ' <i class="fa fa-eye-slash"></i>';
                                        }else{
                                            $class2 = "";
                                        }
                                        // Boşluk hesapla
                                        $bosluk = str_repeat('&nbsp;' , ($i * $kademe_pixel));

                                        // Menuleri değişkene aktar
                                        $menuler .= '<li data-id="' . $sayfa['option_id'] . '" class="dd-item"><a onclick="return confirm(\\'Seçeneği silmek istediğinizden emin misiniz?                Not:Kilitli olan seçenekleri silmek tasarıma zarar verebilir\\');" style="" href="index.php?s=secenek_sil&id=' . $sayfa['option_id'] . '"><i style="float:right;font-size:20px;margin-top:9px;color:#F3565D;" class="fa fa-times"></i></a><a style="" href="index.php?s=secenek_duzenle&id=' . $sayfa['option_id'] . '"><i style="float:right;font-size:20px;margin-top:10px;" class="fa fa-pencil-square-o"></i></a><div class="dd-handle">' . $sayfa['option_txt'] . $class . $class2 . '</div>' . PHP_EOL;

                                        // Açılan menude bir alt sayfa var ise nested çağır
                                        if (isset($items[ $sayfa['option_id'] ]))
                                        {
                                            $menuler .= '<ol class="dd-list">' . PHP_EOL;
                                            $menuler = sayfa_nested($items , $sayfa['option_id'] , $kademe_pixel , ($i + 1) , $menuler , true);
                                            $menuler .= '</ol>' . PHP_EOL;
                                        }

                                        $menuler .= '</li>' . PHP_EOL;
                                    }

                                    // Oluşan menüleri return et
                                    return $menuler;
                                }

                                echo sayfa_nested($kategoriler);

                                ?>
                            </ol>
                        </div>

                    </div>

Çıktısı tam olarak istediğim nested listesini vermiş oldu,

Nested jquery kısmı için ise bu kodların altında

<script>

    $(document).ready(function () {

        var updateOutput = function (e) {
            var list = e.length ? e : $(e.target),
                output = list.data('output');
            menu_updatesort(window.JSON.stringify(list.nestable('serialize')));

            if (window.JSON) {
                output.val(window.JSON.stringify(list.nestable('serialize')));//, null, 2));
            } else {
                output.val('JSON browser support required for this demo.');
            }
        };

        // activate Nestable for list 1
        $('#nestable').nestable({
            group: 1,
            maxDepth: 2
        })
            .on('change', updateOutput);

        // output initial serialised data
        updateOutput($('#nestable').data('output', $('#nestable-output')));

    });
</script>

ve son olarak ajaxımı post ettiğim php sayfam

$jsonstring = stripslashes($_GET['jsonstring']);

$jsonDecoded = json_decode($jsonstring, true, 64);

function parseJsonArray($jsonArray, $parentID = 0)
{
    $return = array();
    foreach ($jsonArray as $subArray) {
        $returnSubSubArray = array();
        if (isset($subArray['children'])) {
            $returnSubSubArray = parseJsonArray($subArray['children'], $subArray['id']);
        }
        $return[] = array('id' => $subArray['id'], 'parentID' => $parentID);
        $return = array_merge($return, $returnSubSubArray);
    }

    return $return;
}

//var_dump(parseJsonArray($jsonDecoded));

$readbleArray = parseJsonArray($jsonDecoded);

var_dump($readbleArray);

foreach ($readbleArray as $key => $value) {
    global $db;

    if (is_array($value)) {

        $query = $db->prepare("UPDATE options SET
                                    orders = :orders,
                                    parent_id=:parent_id
                                    WHERE id = :id");
        $result = $query->execute(array(
            "orders" => $key,
            "parent_id" => $value['parentID'],
            "id" => $value['id']
        ));
        if ( $result ){
            print "güncelleme başarılı!";
        }

    }

soruldu: 12 Ağu '15, 09:50

birkanesen's gravatar image

birkanesen
20556
cevap kabul oranı: 0%

değiştirildi: 14 Ağu '15, 11:26

3

Çözümü paylaşmanız daha faydalı olur diye düşünüyorum. İleri de aynı sorun ile karşılaştığımızda yaptığınız çözüm ile sorunu çözebiliriz.

(13 Ağu '15, 17:15) kurtomerfaruk kurtomerfaruk's gravatar image

haklısınız paylaştım

(14 Ağu '15, 11:26) birkanesen birkanesen's gravatar image
Bu soruya ilk cevap veren sen ol!
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×92
×41
×1
×1

Soruldu: 12 Ağu '15, 09:50

Görüntüleme: 720 kez

Son güncelleme: 14 Ağu '15, 11:26

powered by BitNami OSQA