Topic: Klausimas del vietu keitimo irasais

Gal kas zinote koki tutoriala kuris pavaizduoja irasu keitima vietomis. Aš turiu pasidaręs savo bet maniškis scriptas gremėzdiškas. Galvoju, kad yra kaškokia tai jau apmastyta sistema. Papraščiausiai dabar randu drob drag man reikia ne drop and drag reikalinga paparasta su buttonais.

Re: Klausimas del vietu keitimo irasais

Nelabai patį klausimą supratau, bet manau šis padės: http://goo.gl/9CcHw

3 (edited by skuelas 2013-03-03 15:04:40)

Re: Klausimas del vietu keitimo irasais

As daryciau taip: kiekvienam irasui isvestam isvesciau kartu butona. Iraso formoje butu suteikti 2 parametrai id ir eiles numeris. Nuspaudus buttona i virsu arba i apacia atitinakamai sakykim kokioje nors funcijoje butu apdorojamas posto id ir eiles numeris +1 arba -1

var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)

Re: Klausimas del vietu keitimo irasais

Sukeitimas vietomis, kai įrašai yra iš principo rikiuojami tik pagal įrašymo eiliškumą, susiveda į papildomo stulpelio, kuriame yra saugomi unikalūs skaičiai kiekvienam įrašui reikšmių sukeitimui. Tas apildomas stulpelis dažniausiai vadinamas proritetu (priority).

Tie tavo mygtukai (button) ar papraščiausios nuorodos (link) prie kiekvieno įrašo turi tiesiog vykdyti script'ą, kuris sukeičia vietomis dviejų prioritetų reikšmes.

+1 / -1 metodo nerekomenduočiau, nes čia yra šiek tiek apsiribojama, kad vietomis gali keisti tik šalias einančius įrašus, ir jeigu nori sukeisti pirmą su paskutiniu, turi daug kartų kažką spaudinėti.

Serverio pusėje viskas susiveda į porą UPDATE užklausų.

Re: Klausimas del vietu keitimo irasais

taip man sita su gretimais irasais problema ir buvo du ciklu issprendziau sita klausima. O is esmes geriausia tureti irasu atskira lentele. gal dar kas zint koki buda

Re: Klausimas del vietu keitimo irasais

Tai aš ir rašiau, kaip išvengti to ciklo arba bereikalingo spaudinėjimo.

Re: Klausimas del vietu keitimo irasais

Tai jis sake to drop dauno nenori, o tai patogiausias variantas butu. O kas del pirmos ir paskutines vietos tai galima tikrinti jei paskutine ir norima toliau mest, permeta i pirma ir atvirksciai.

var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)

Re: Klausimas del vietu keitimo irasais

skuelas wrote:

Tai jis sake to drop dauno nenori, o tai patogiausias variantas butu. O kas del pirmos ir paskutines vietos tai galima tikrinti jei paskutine ir norima toliau mest, permeta i pirma ir atvirksciai.

tai negi sunku padaryti ir vienaip ir kitaip - abu variantus ???

Kiek maigyklių sudėvėjai ?

Re: Klausimas del vietu keitimo irasais

skuelas wrote:

Tai jis sake to drop dauno nenori, o tai patogiausias variantas butu. O kas del pirmos ir paskutines vietos tai galima tikrinti jei paskutine ir norima toliau mest, permeta i pirma ir atvirksciai.

Galima ir be drop-down'o, aš asmeniškai niekur neminėjau konkrečiai drop-down'o. Manau šiais laikais galima sukonstruoti pakankamai labiau vartotojišką control'ą. (-;

Re: Klausimas del vietu keitimo irasais

As esu vienam padares visiskai paprasta varianta nuoroda-paveiksliukas, paspaudi ir keicia prioriteta +1 arba -1, jei galas ir nori i 1 vieta tai tikrini jei pirma vieta ir nori i gala tikrini

var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)

Re: Klausimas del vietu keitimo irasais

O jeigu yra 100 įrašų ir noriu pirmą įrašą nukelti į 50-ą vietą?

Re: Klausimas del vietu keitimo irasais

nu tai tada drop daunas

var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)

Re: Klausimas del vietu keitimo irasais

parodysiu as savo darba.


<?php

    echo "<a href='main.php?page='>&lt;-atgal</a>";
    
    echo "<h3>Meniu 1</h3>";
    
    echo "<a href='main.php?page=menu/add.menu1'>Pridėti mygtuką</a><br /><hr />";
    
    $tbl_name = "menu";
    
        $row_first_master_btn = $db->query_first("SELECT min(id) as minid FROM `$tbl_name` WHERE `lang`='{$_SESSION['lang']}' "); 
        $row_last_master_btn  = $db->query_first("SELECT max(id) as maxid FROM `$tbl_name` WHERE `lang`='{$_SESSION['lang']}' ");

    if (!empty($_POST['up'])){
    
     $up = $db->escape($_POST['up']);
     
     $row_current = $db->query_first("SELECT * FROM `menu` WHERE `id` = '$up'");
     
     $rows = $db->fetch_array("SELECT * FROM `menu`");
     $i = 0;
     foreach (array_reverse($rows) as $rec){
        if ($rec['id'] == $up){
         $i = 1;
        }
        if ($i == 2){
            $id = $rec['id'];
            ++$i;
        } else if ($i == 1){++$i;}
     }
     $row_next = $db->query_first("SELECT * FROM `menu` WHERE `id` = '$id'");

     $data = array();
     $data['name'] = $db->escape($row_current['name']);
     $data['lang'] = $db->escape($row_current['lang']);
     $data['listorder'] = $db->escape($row_current['listorder']);
     
     $db->update($tbl_name, $data, "`id`='{$row_next['id']}'");
     
     $data = array();
     $data['name'] = $db->escape($row_next['name']);
     $data['lang'] = $db->escape($row_next['lang']);
     $data['listorder'] = $db->escape($row_next['listorder']);
     
     $db->update($tbl_name, $data, "`id`='{$row_current['id']}'");

    }
    
    if (!empty($_POST['down'])){

     $down = $db->escape($_POST['down']);

     $row_current = $db->query_first("SELECT * FROM `menu` WHERE `id` = '$down'");
     $rows = $db->fetch_array("SELECT * FROM `menu`");
     $i = 0;
     foreach ($rows as $rec){
        if ($rec['id'] == $down){
         $i = 1;
        }
        if ($i == 2){
            $id = $rec['id'];
            ++$i;
        } else if ($i == 1){++$i;}
     }
     $row_next = $db->query_first("SELECT * FROM `menu` WHERE `id` = '$id'");
     
     $data = array();
     $data['name'] = $db->escape($row_current['name']);
     $data['lang'] = $db->escape($row_current['lang']);
     $data['listorder'] = $db->escape($row_current['listorder']);
     
     $db->update($tbl_name, $data, "`id`='{$row_next['id']}'");
     
     $data = array();
     $data['name'] = $db->escape($row_next['name']);
     $data['lang'] = $db->escape($row_next['lang']);
     $data['listorder'] = $db->escape($row_next['listorder']);
     
     $db->update($tbl_name, $data, "`id`='{$row_current['id']}'");
     
    }
    if (!empty($_POST['ups'])){

     list($listorder, $id) = explode("-",$_POST['ups']);

     $row_current = $db->query_first("SELECT * FROM `menus` WHERE `id` = '$id' AND `listorder`='$listorder'");
     
     $rows = $db->fetch_array("SELECT * FROM `menus` WHERE `listorder`='$listorder'");
     $i = 0;
     foreach (array_reverse($rows) as $rec){
        if ($rec['id'] == $id){
         $i = 1;
        }
        if ($i == 2){
            $id = $rec['id'];
            ++$i;
        } else if ($i == 1){++$i;}
     }
     $row_next = $db->query_first("SELECT * FROM `menus` WHERE `id` = '$id' AND `listorder`='$listorder'");
     
     $data = array();
     $data['name'] = $db->escape($row_current['name']);
     $data['lang'] = $db->escape($row_current['lang']);
     $data['listorder'] = $db->escape($row_current['listorder']);
     
     $db->update("menus", $data, "`id`='{$row_next['id']}'");
     
     $data = array();
     $data['name'] = $db->escape($row_next['name']);
     $data['lang'] = $db->escape($row_next['lang']);
     $data['listorder'] = $db->escape($row_next['listorder']);
     
     $db->update("menus", $data, "`id`='{$row_current['id']}'");
     
    }
    
    if (!empty($_POST['downs'])){

     list($listorder, $id) = explode("-",$_POST['downs']);

     $row_current = $db->query_first("SELECT * FROM `menus` WHERE `id` = '$id' AND `listorder`='$listorder'");
     $rows = $db->fetch_array("SELECT * FROM `menus` WHERE `listorder`='$listorder'");
     $i = 0;
     foreach ($rows as $rec){
        if ($rec['id'] == $id){
         $i = 1;
        }
        if ($i == 2){
            $id = $rec['id'];
            ++$i;
        } else if ($i == 1){++$i;}
     }
     $row_next = $db->query_first("SELECT * FROM `menus` WHERE `id` = '$id' AND `listorder`='$listorder'");
     
     $data = array();
     $data['name'] = $db->escape($row_current['name']);
     $data['lang'] = $db->escape($row_current['lang']);
     $data['listorder'] = $db->escape($row_current['listorder']);
     
     $db->update("menus", $data, "`id`='{$row_next['id']}'");
     
     $data = array();
     $data['name'] = $db->escape($row_next['name']);
     $data['lang'] = $db->escape($row_next['lang']);
     $data['listorder'] = $db->escape($row_next['listorder']);
     
     $db->update("menus", $data, "`id`='{$row_current['id']}'");
     
    }
    $rows = $db->fetch_array("SELECT * FROM `$tbl_name`");
    
    echo "<form action=\"main.php?page=menu/menu1\" method=\"POST\">";
    
    foreach ($rows as $rec){
        
        echo "<div style=\"padding: 3px; border: 1px solid #012D58;\">";
        echo "<div style=\"float: left; width: 150px; padding: 6px; border: 1px solid #888888;\">";
            echo $rec['name'];
        echo "</div>";
        
        if ($rec['id'] != $row_last_master_btn['maxid']){

        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "<button name=\"down\" value=\"{$rec['id']}\"><img src=\"tmp/menu/img/down.png\" alt=\"\" width=\"12\"/></button>";
        echo "</div>";

        }else{
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "no";
        echo "</div>";
        }        
        
        if ($rec['id'] != $row_first_master_btn['minid']){        
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "<button name=\"up\" value=\"{$rec['id']}\"><img src=\"tmp/menu/img/up.png\" alt=\"\" width=\"12\"/></button>";
        echo "</div>";
        }else{
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "no";
        echo "</div>";
        }
        
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style=\"float: left; width: 60px; padding: 6px; border: 1px solid #888888;\">";
            echo "<a href=\"main.php?page=menu/edit.menu&id={$rec['id']}\">redaguoti</a>";
        echo "</div>";

        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style=\"float: left; width: 20px; padding: 6px; border: 1px solid #888888;\">";
            echo "<a href=\"main.php?page=menu/add.menus1&id={$rec['listorder']}\">sub</a>";
        echo "</div>";
        
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style=\"float: left; width: 35px; padding: 6px; border: 1px solid #888888;\">";
            echo "<a href=\"main.php?page=menu/del.menu1&id={$rec['id']}\">trinti</a>";
        echo "</div>";
        echo "<div class=\"clear\"></div><br />";
        
        
      $row_first_master_btn_ = $db->query_first("SELECT min(id) as minid FROM `menus` WHERE `listorder`='{$rec['listorder']}' AND `lang`='{$_SESSION['lang']}'"); 
      $row_last_master_btn_  = $db->query_first("SELECT max(id) as maxid FROM `menus` WHERE `listorder`='{$rec['listorder']}' AND `lang`='{$_SESSION['lang']}'");


      $rows_ = $db->fetch_array("SELECT * FROM `menus` WHERE `listorder`='{$rec['listorder']}' AND `lang`='{$_SESSION['lang']}' ");

         
         foreach ($rows_ as $rec_){

              echo "<div style='float: left; margin-left: 30px; width: 150px; padding: 5px; border: 1px solid #888888;'>";
              echo $rec_['name'];
              echo "</div>";
              
        
        if ($rec_['id'] != $row_last_master_btn_['maxid']){

        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "<button name=\"downs\" value=\"{$rec_['listorder']}-{$rec_['id']}\"><img src=\"tmp/menu/img/down.png\" alt=\"\" width=\"12\"/></button>";
        echo "</div>";

        }else{
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "no";
        echo "</div>";
        }        
        
        if ($rec_['id'] != $row_first_master_btn_['minid']){        
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "<button name=\"ups\" value=\"{$rec_['listorder']}-{$rec_['id']}\"><img src=\"tmp/menu/img/up.png\" alt=\"\" width=\"12\"/></button>";
        echo "</div>";
        }else{
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style='float: left; width: 35px; padding: 3px; border: 1px solid #888888;'>";
        echo "no";
        echo "</div>";
        }
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style=\"float: left; width: 60px; padding: 6px; border: 1px solid #888888;\">";
            echo "<a href=\"main.php?page=menu/edit.menus&id={$rec_['id']}\">redaguoti</a>";
        echo "</div>";
        
        echo "<div style=\"float: left; padding: 3px;\"></div>";
        
        echo "<div style=\"float: left; width: 35px; padding: 6px; border: 1px solid #888888;\">";
            echo "<a href=\"main.php?page=menu/del.menus1&id={$rec_['id']}\">trinti</a>";
        echo "</div>";

        
        echo "<div class=\"clear\"></div><br />";
        
         }
        echo "</div><br />";
        
    }

    echo "</form>";