⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udatalink.php

📁 dhtmlxGrid是DHTMLX公司的一个非常不错的JAVASCRIPT的网格组件
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php
/*
Copyright Scand LLC http://www.scbr.com
This version of Software is free for using in non-commercial applications.
For commercial use please contact info@scbr.com to obtain license
*/
error_reporting(E_ALL ^ E_NOTICE);
include_once('JSON.php');

//error_reporting(E_ALL);


class uDataLink{
        function uDataLink($config){
                 $json = new Services_JSON();
                 $data = file_get_contents($config);
                 $this->c = $json->decode($data);
        }

        function save($data){
                 $this->printXMLHeader();
                 if (!isset($data[(string)$this->c->action])) $data[(string)$this->c->action]=""; //echo (string)$this->c["type"];
                 if (((string)$this->c->type)=="tree"){
                         switch($data[(string)$this->c->action]){
                                 case 'deleted':
                                         $this->deleteTree($data);
                                         break;
                                 case 'inserted':
                                         $this->insertTree($data);
                                         break;
                                 default:
                                         $this->updateTree($data);
                                         break;
                         }
                 } else {
                         switch($data[(string)$this->c->action]){
                                 case 'deleted':
                                         $this->delete($data);
                                         break;
                                 case 'inserted':
                                         $this->insert($data);
                                         break;
                                 default:
                                         $this->update($data);
                                         break;
                         }

                 }
                 $this->printXMLFooter();
        }

        function insertTree($data){
                    $table= (string)$this->c->table->name;
                    $id=    (string)$this->c->table->key->name;
                    $pid=   (string)$this->c->table->pkey->name;
                    $order= (string)$this->c->table->order->name;
                    $name=  (string)$this->c->table->text->name;

                    $a_id=    (string)$this->c->table->key->value;
                    $a_pid=   (string)$this->c->table->pkey->value;
                    $a_order= (string)$this->c->table->order->value;
                    $a_name=  (string)$this->c->table->text->value;

                    $sql="UPDATE ".$table." SET ".$order."=".$order."+1 WHERE ".$pid."=".$data[$a_pid]." AND ".$order." > ".($data[$a_order]-1);
                    $nid=mysql_query($sql);

                    $sql="INSERT INTO ".$table."(".$pid.",".$order.",".$name.") VALUES(".$data[$a_pid].",".$data[$a_order].",\"".mysql_real_escape_string($data[$a_name])."\")";
                    $res=mysql_query($sql);

                    $this->printAction("insert",$data[$a_id],mysql_insert_id());
        }

        function deleteTree($data){
                    $table= (string)$this->c->table->name;
                    $id=    (string)$this->c->table->key->name;
                    $pid=   (string)$this->c->table->pkey->name;
                    $order= (string)$this->c->table->order->name;
                    $name=  (string)$this->c->table->text->name;

                    $a_id=   (string)$this->c->table->key->value;

                    $sql="SELECT * FROM ".$table." WHERE ".$id."=".$data[$a_id];
                    $res=mysql_query($sql);
                    $sdata=mysql_fetch_assoc($res);

                    $this->delete_rec($table,$id,$data[$a_id],$pid);

                    $sql="UPDATE ".$table." SET ".$order."=".$order."-1 WHERE ".$pid."=".$sdata[$pid]." AND ".$order." > ".$sdata[$order];
                    $nid=mysql_query($sql);
                    $this->printAction("delete",$data[$a_id],$data[$a_id]);
        }
        function delete_rec($table,$id,$idv,$pid){
                    $sql="SELECT * FROM ".$table." WHERE ".$pid."=".$idv;
                    $res=mysql_query($sql);
                    while ($sdata=mysql_fetch_assoc($res)){
                        $this->delete_rec($table,$id,$sdata[$id],$pid);
                    }

                    $sql="DELETE FROM ".$table." WHERE ".$id."=".$idv;
                    $res=mysql_query($sql) or DIE("1");
        }
        function updateTree($data){

                    $table= (string)$this->c->table->name;
                    $id=    (string)$this->c->table->key->name;
                    $pid=   (string)$this->c->table->pkey->name;
                    $order= (string)$this->c->table->order->name;
                    $name=  (string)$this->c->table->text->name;

                    $a_id=    (string)$this->c->table->key->value;
                    $a_pid=   (string)$this->c->table->pkey->value;
                    $a_order= (string)$this->c->table->order->value;
                    $a_name=  (string)$this->c->table->text->value;

                    $sql="SELECT * FROM ".$table." WHERE ".$id."=".$data[$a_id];
                    $res=mysql_query($sql);
                    $sdata=mysql_fetch_assoc($res);

                    if (($sdata[$pid]!=$data[$pid])||($sdata[$order]!=$data[$a_order])) {
                         $sql="UPDATE ".$table." SET ".$order."=".$order."-1 WHERE ".$pid."=".$sdata[$pid]." AND ".$order." > ".$sdata[$order];
                         $nid=mysql_query($sql);
                         $sql="UPDATE ".$table." SET ".$order."=".$order."+1 WHERE ".$pid."=".$data[$a_pid]." AND ".$order." > ".($data[$a_order]-1);
                         $nid=mysql_query($sql);
                    }

                    $sql="UPDATE ".$table." SET ".$pid."=".$data[$a_pid].", ".$order."=".$data[$a_order].", ".$name."=\"".mysql_real_escape_string($data[$a_name])."\"";
                    $sql.=" WHERE ".$id."=".$data[$a_id];
                    $nid=mysql_query($sql);
                    //echo $sql;
                    $this->printAction("update",$data[$a_id],$data[$a_id]);
         }

         function update($data){
                 // sample of ADDRESS LINE LINK
                 // test/4/dhtmlxDataProcessor/server_code/PHP/update.php?gr_id=9&c0=d0&c1=d1&c2=d2&c3=d3&c4=d4&c5=d5&c6=d6&c7=d7

                 $C_STR = "#"; // value of UNIQUE CONNECT FIELD for current ROW
                 $u = $this->c->table[0]->connect_field; // $this->c->connect_field FROM table[0] ACCORDING TO pKey
                 $t = $this->c->table[0]->name;
                 $k_name = $this->c->table[0]->key->name;
                 $k_value = $data["gr_id"]; // row to modify by KEY
                 // DETECT SYMBS
                 $r = mysql_query("SELECT `$u` FROM `$t` WHERE `$k_name`='$k_value' LIMIT 1 ");
                 $out = mysql_fetch_object($r);
                 if (!empty($out->$u)) { $C_STR = $out->$u; }
                 mysql_free_result($r);
                 // update all tables
                 for ($q=0; $q<count($this->c->table); $q++) {
                         // getting UNIQUE CONNECT FIELD for current table
                         $u = $this->c->table[$q]->connect_field;
                         // check if updated row present
                         $t_name = $this->c->table[$q]->name;
                         $r = mysql_query("SELECT * FROM `$t_name` WHERE `$u`='$C_STR' LIMIT 1 ");
                         $is_present = false;
                         while ($out = mysql_fetch_object($r)) { $is_present = true; }
                         if ($is_present) {
                                 // preparing data for update
                                 $sql = "UPDATE `$t_name` SET ";
                                 for ($w=0; $w<count($this->c->table[$q]->param); $w++) {
                                         $d = $this->c->table[$q]->param[$w]->name;
                                         $v = $data[$this->c->table[$q]->param[$w]->value];
                                         if ($w>0) { $p = ","; } else { $p = ""; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -