kura2yamato

select2 cat-prod

Apr 30th, 2022
1,367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.04 KB | None | 0 0
  1. <?php
  2.  
  3. $dbsetup = [
  4.   'host' => 'localhost', //plz change
  5.   'user' => 'gunawan', //plz change
  6.   'pass' => 'ya4i8ib2', //plz change
  7.   'name' => 'gun_learning' //plz change
  8. ];
  9.  
  10. $conn =new PDO("mysql:host=" . $dbsetup['host'] . ";dbname=" . $dbsetup['name'] . "", $dbsetup['user'], $dbsetup['pass']);
  11. $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  12. //--------------------
  13. if($act=='data')
  14. {
  15.     $result=[];
  16.     $result[]=[
  17.         'id'=>-1,
  18.         'text'=>'Silahkan memilih dari pilihan dibawah'
  19.     ];
  20.     $type = $_GET['type']??'none';
  21.     $search = $_GET['search']??NULL;
  22.     if($type=='prod')
  23.     {
  24.        
  25.         $cat = $_GET['category']??NULL;
  26.         if($cat==NULL || (int)$cat == 0)
  27.         {
  28.             $result=[];
  29.             $result[]=[
  30.                 'id'=>-1,
  31.                 'text'=>'Silahkan memilih Category'
  32.             ];
  33.            
  34.         }
  35.         else
  36.         {
  37.             $sql="select nama from tb_category where id=?";
  38.             $que = $conn->prepare($sql);
  39.             $que->bindValue(1, $cat);
  40.             $que->execute();
  41.             $cat_name = $que->fetchColumn();
  42.             $raw[ ]=$sql;
  43.              
  44.             if(strlen($search)<3)
  45.             {
  46.                 $sql="select id, nama from tb_prod where cat_id=? limit 5";
  47.                 $que = $conn->prepare($sql);
  48.                 $que->bindValue(1, $cat);
  49.             }
  50.             else
  51.             {
  52.                 $sql="select id, nama from tb_prod where  cat_id=? and nama like ? limit 5";
  53.                 $que = $conn->prepare($sql);
  54.                 $que->bindValue(1, $cat);
  55.                 $que->bindValue(2, "%$search%");
  56.             }
  57.             $raw[ ]=$sql;
  58.             $que->execute();
  59.             $data=[];$children=[];
  60.             while($row = $que->fetch())
  61.             {
  62.                 $result0[]=[
  63.                     'id'=>$row['id'],
  64.                     'text'=>$row['nama']
  65.                 ];
  66.                 $children[]=[
  67.                     'id'=>$row['id'],
  68.                     'text'=>$row['nama']
  69.                 ];
  70.                 $data[]=$row;
  71.             }
  72.             $result[]=[
  73.                 'text'=>$cat_name,
  74.                 'children'=>$children
  75.             ];
  76.             $raw['data']=$data;
  77.         }
  78.  
  79.     }
  80.     if($type=='category')
  81.     {
  82.         if(strlen($search)<3)
  83.         {
  84.             $sql="select id, nama from tb_category";
  85.             $que = $conn->prepare($sql);
  86.         }
  87.         else
  88.         {
  89.             $sql="select id, nama from tb_category where nama like ?";
  90.             $que = $conn->prepare($sql);
  91.             $que->bindValue(1, "%$search%");
  92.         }
  93.        
  94.         $que->execute();
  95.         $data=[];
  96.         while($row = $que->fetch())
  97.         {
  98.             $result[]=[
  99.                 'id'=>$row['id'],
  100.                 'text'=>$row['nama']
  101.             ];
  102.             $data[]=$row;
  103.         }
  104.         $raw['data']=$data;
  105.     }
  106.    
  107.     $return=[
  108.         'results'=>$result,
  109.         'params'=>$_GET,
  110.         'raws'=>@$raw
  111.     ];
  112.     echo json_encode($return);
  113.     die;
  114. }
  115. ?>
  116. <html lang="en">
  117. <head>
  118.     <title>jquery select2 ajax php category - Prod</title>
  119.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha256-aAr2Zpq8MZ+YA/D6JtRD3xtrwpEz2IqOS+pWD/7XKIw=" crossorigin="anonymous" />
  120.     <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha256-OFRAJNoaD8L3Br5lglV7VyLRf0itmoBzWUoM+Sji4/8=" crossorigin="anonymous"></script>
  121.     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
  122.  
  123. <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
  124. <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
  125. <style>
  126.     .select-js{
  127.         width:200px;
  128.     }
  129.     body{
  130.         padding:10px 20px;
  131.     }
  132. </style>
  133. </head>
  134. <body>
  135. <form>
  136. <!--br/>Test  <select class='select-js js-data-example-ajax'><option>Pilih Repo</option></select-->
  137. <br/>Kategori  <select class='select-js select-cat'><option>Pilih kategori tersedia</option></select>
  138. <br/>Barang  <select class='select-js select-prod'><option>Pilih kategori terlebih dahulu</option></select>
  139. </form>
  140.  
  141. <script>
  142. $(document).ready(function() {
  143.     $('.js-data-example-ajax, .select-cat').select2({
  144.       ajax: {
  145.         url: 'index.php?act=data',
  146.         dataType: 'json',
  147.         // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
  148.         data: function(params)
  149.         {
  150.             var query={ search:params.term, type:'category'};
  151.             return query;
  152.         },
  153.         processResults: function (data) {
  154.             return {
  155.               results: data.results
  156.             };
  157.         },
  158.       }
  159.     });
  160.     $('.select-cat').on("select2:select", function(e) {
  161.         $(".select-prod").empty();
  162.         //console.log('see');// what you would like to happen
  163.     });
  164.    
  165.     $('.select-prod').select2({
  166.       ajax: {
  167.         url: 'index.php?act=data',
  168.         dataType: 'json',
  169.         // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
  170.         data: function(params)
  171.         {
  172.             var query={ search:params.term, type:'prod', category:$(".select-cat").val()};
  173.             return query;
  174.         },
  175.         processResults: function (data) {
  176.             return {
  177.               results: data.results
  178.             };
  179.         },
  180.       }
  181.     });
  182.  
  183. });
  184.  
  185. </script>
  186.  
  187. </body>
  188. </html>
  189. <?php
  190. /*****
  191. -----DB CONTOH
  192. -- phpMyAdmin SQL Dump
  193.  
  194. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  195. START TRANSACTION;
  196. SET time_zone = "+00:00";
  197.  
  198. --
  199. -- Database: `your_db_name`
  200. --
  201.  
  202. -- --------------------------------------------------------
  203.  
  204. --
  205. -- Table structure for table `tb_category`
  206. --
  207.  
  208. CREATE TABLE `tb_category` (
  209.   `id` int(11) NOT NULL,
  210.   `nama` varchar(50) NOT NULL,
  211.   `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  212.   `modified_at` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
  213. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  214.  
  215. --
  216. -- Dumping data for table `tb_category`
  217. --
  218.  
  219. INSERT INTO `tb_category` (`id`, `nama`, `created_at`, `modified_at`) VALUES
  220. (1, 'Sofa', '2022-05-01 00:00:35', NULL),
  221. (2, 'Kursi', '2022-05-01 00:00:35', NULL),
  222. (3, 'Meja', '2022-05-01 00:00:35', NULL),
  223. (4, 'Tekstil', '2022-05-01 00:00:35', NULL);
  224.  
  225. -- --------------------------------------------------------
  226.  
  227. --
  228. -- Table structure for table `tb_prod`
  229. --
  230.  
  231. CREATE TABLE `tb_prod` (
  232.   `id` int(11) NOT NULL,
  233.   `nama` varchar(50) NOT NULL,
  234.   `cat_id` int(11) NOT NULL,
  235.   `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  236.   `modified_at` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()
  237. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  238.  
  239. --
  240. -- Dumping data for table `tb_prod`
  241. --
  242.  
  243. INSERT INTO `tb_prod` (`id`, `nama`, `cat_id`, `created_at`, `modified_at`) VALUES
  244. (1, 'Kivik', 1, '2022-05-01 00:29:36', NULL),
  245. (2, 'Sofa 2 dudukan', 1, '2022-05-01 00:29:36', '2022-04-30 17:43:52'),
  246. (3, 'Kursi Berlengan', 2, '2022-05-01 00:29:36', '2022-04-30 17:30:59'),
  247. (4, 'Meja Tamu', 3, '2022-05-01 00:29:36', '2022-04-30 17:31:09'),
  248. (5, 'Meja Makan', 3, '2022-05-01 00:29:36', '2022-04-30 17:31:15'),
  249. (6, 'Gorden', 4, '2022-05-01 00:31:49', NULL),
  250. (7, 'Sarung Bantal', 4, '2022-05-01 00:31:49', NULL);
  251.  
  252. --
  253. -- Indexes for dumped tables
  254. --
  255.  
  256. --
  257. -- Indexes for table `tb_category`
  258. --
  259. ALTER TABLE `tb_category`
  260.   ADD PRIMARY KEY (`id`),
  261.   ADD KEY `nama` (`nama`);
  262.  
  263. --
  264. -- Indexes for table `tb_prod`
  265. --
  266. ALTER TABLE `tb_prod`
  267.   ADD PRIMARY KEY (`id`),
  268.   ADD KEY `nama` (`nama`);
  269.  
  270. --
  271. -- AUTO_INCREMENT for dumped tables
  272. --
  273.  
  274. --
  275. -- AUTO_INCREMENT for table `tb_category`
  276. --
  277. ALTER TABLE `tb_category`
  278.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
  279.  
  280. --
  281. -- AUTO_INCREMENT for table `tb_prod`
  282. --
  283. ALTER TABLE `tb_prod`
  284.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
  285. COMMIT;
  286.  
  287. *****/
Advertisement
Add Comment
Please, Sign In to add comment