วันจันทร์ที่ 28 ธันวาคม พ.ศ. 2563

ยกเลิกVisit is_cancel =1กรณีทำพลาด

 UPDATE  opd_visits o  SET o.is_cancel = 1

WHERE  o.VISIT_ID in ('0002400936'

,0002400937,0002400938,

0002400939,

0002400940,

0002400941,

0002400942

)

**************************

หาVisit

SELECT  o.REG_DATETIME, o.VISIT_ID ,c.cid, c.hn, o.is_cancel, o.staff_id

 FROM opd_visits o

 INNER JOIN cid_hn c ON o.hn = c.hn

  WHERE o.REG_DATETIME >= CURDATE() 

 AND o.STAFF_ID = 0341

หาVisitล่าสุดเปรียบเทียบกัน

 SELECT o.hn, o.visit_id, o.reg_datetime, MAX(o.VISIT_ID)as max_visit, max(o.REG_DATETIME)as  maxdate, o.STAFF_ID

FROM opd_visits o 

INNER JOIN cid_hn c ON o.hn = c.hn

WHERE o.REG_DATETIME >= CURDATE()

AND c.cid in ( SELECT cid from lab_import_fail)

AND o.STAFF_ID = 0341

GROUP BY c.CID


วันพุธที่ 23 ธันวาคม พ.ศ. 2563

yii2 basic กรณีใช้ gii ไม่ได้ นอกเหนือ localhost


Yii2 Gii Forbidden code 403 You are not allowed to access this page

 เปิด config/web.php

    $config['bootstrap'][] = 'gii';

    $config['modules']['gii'] = [

        'class' => 'yii\gii\Module',

'allowedIPs' => ['127.0.0.1', '::1', '192.168.200.*'],

#########################################################################

Yii2 advanced

config/maim.php

อบรมข้าราชการ 23-25 ธค 63

 รุ่น 24 สค.63 ส่งงานถึงเดือน กพ64

23 ธค 63
- E-Learning ต้องผ่าน
- อายุราชการ 10ปี ได้บำนาญ


วันอังคารที่ 22 ธันวาคม พ.ศ. 2563

CKEditor ทำให้เป็นLink Yii2

Yii2 ::::CKEditor  

_form.php

 <?= $form->field($model, 'description')->widget(CKEditor::className(), [

                        'options' => ['rows' => 6],

                        'preset' => 'basic',

                        // 'clientOptions' => [

                        //   'filebrowserUploadUrl' => Url::to(['/site/upload']),

                        // ]

                    ]) ?>


index.php

Field ที่ต้องให้แสดงเป็นลิงค์  ให้เพิ่ม เช่น detail

            [

'attribute' =>'detail', ##=ชื่อฟิวด์

'format'=>'html',  ##แสดงเป็นลิงค์

  ],


วันพุธที่ 9 ธันวาคม พ.ศ. 2563

จูน my.cnf

 ปรับลดความหน่วง  
-------------------------------------------------------------------------------------------------
เพิ่ม RAM 32G
innodb_buffer_pool_size = 25.6G

https://hosxp.net/smf2/index.php?topic=21706.0

สำหรับRam8G

-------------------------------------------------------------------------------------------------
การโอน ผมจะ backup แล้ว dump ตรงๆ จะเร็วกว่า การ initail import    แต่ต้องปิดระบบทั้งหมด 

oracle linux 6.0+ext4 +text mode +percona 5.5.10

น่าจะลดคร่าวๆ แบบนี้
key_buffer = 512M
max_allowed_packet = 512M
query_cache_size= 512M
max_connections=200    >>>> ตามจำนวน client ที่ connect  และเผื่อไว้  บ้าง

ลองปรับ
max_connection = 300 หรือ  250
query_cache = 128M หรือ 256M
read_ = 2M
read_rnd = 16M
sort_ = 2M
join_ = 6M

-----------------------------------------------------------------------------------------------

key_buffer =384M #เป็นการจองบัฟเฟอร์หน่วยความจำเอาไว้ สำหรับจัดเก็บข้อมูล
max_allowed_packet =1M #เป็นการกำหนดขนาดของแพ็กเก็จในการรับขส่งข้อมูล
table_cache =512 #เป็นหน่วยความจำแคช ค่าดีฟอล์ท 64

sort_buffer_size =2M #เป็นบัฟเฟอร์หน่วยความจำ สำหรับจัดเรียงผลข้อมูล
read_buffer_size =2M #เป็นหน่วยความจำสำหรับการอ่านบัฟเฟอร์ข้อมูลของตาราง myisam
read_rnd_buffer_size =8M #เป็นหน่วยความจำในการอ่านบัฟเฟอร์ข้อมูลของแถวที่ถูกจัดเรียง

mysiam_sort_buffer_size =64M #เป็นบัฟเฟอร์หน่วยความจำ สำหรับจัดเรียงข้อมูลโครงสร้าง myisam
thead_cache_size =8 #เป็นขนาดของเทรดแคชในการทำงาน
query_cache_size =32M 
#Try number of CPU*2 for thread_concurrency thread_concurrency =8 #เป็นขนาดของเทรดที่ให้ทำงานไปพร้อมๆกัน ขึ้นอยู่กับจำนวน CPU ถ้า server มี CPU 2 ตัว ให้ใส่ค่า 4 ถ้า server มี CPU 4 ตัว ให้ใส่ค่า 8


วันอังคารที่ 8 ธันวาคม พ.ศ. 2563

ปรับ Mysql ให้ใช้ cache เพื่อเพิ่มความเร็ว ขนาดRam8-16GB

*** จูน Mysql ให้ทำงานเร็วขึ้น ***  cpu 4 core

เพื่อความรวดเร็วในการนำค่าไปใช้ ผมรวบรวมให้แล้วครับ ตามนี้

max_connections=1000

innodb_file_per_table
innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_flush_method=O_DIRECT
innodb_doublewrite=0
innodb_support_xa = 0
innodb_open_files = 2000
innodb_locks_unsafe_for_binlog=1
innodb_support_xa = 0
innodb_locks_unsafe_for_binlog = 1

อีก 2 ตัวที่ไม่ค่อยมีคนสนใจแต่ทำให้ MySQL ทำงานเร็วขึ้นครับ
ตัว1
innodb_flush_log_at_trx_commit=2

จะทำให้ MySQL เขียน Log ทุก 1 วินาที แทนที่จะทุก Transaction
ตัว2
max_heap_table_size = 128M

ช่วยให้บาง Query ทำงานได้เร็วขึ้นครับ

อีกตัวครับ
innodb_flush_method=O_DIRECT
จะปิดการทำงานของระบบ double buffering ของ MySQL ครับ (ทำให้ระบบโดยรวมเร็วขึ้น)

ตามด้วย

innodb_doublewrite=0

จะทำให้ innodb เขียนข้อมูลใน table space แค่ครั้งเดียว แทนที่จะเขียนสองครั้ง

***ถ้าเข้าจากเครื่องอื่นแล้วช้าอาจจะเกี่ยวกับการ resolve ชื่อและไอพี ให้ลองเพิ่ม skip-name-resolve ที่หัวข้อ[mysqld]
ปัญหามาซักพักกับการที่ MariaDB ดับไปเองบ้าง รีสตาร์ทบ่อยๆ บ้าง ปรับแก้ my.cnf ก็ไม่นิ่งซะทีจนไปเจอ Code แล้วเอามาปรับแก้ max_connections อีกทีจนนิ่งสนิท ตัวนี้จะเป็น

เมื่อใช้ไป1อาทิตย์ลองตรวจสอบ
**************************************************************************

วันพฤหัสบดีที่ 3 ธันวาคม พ.ศ. 2563

การทำRemote backup ผ่าน ssh โดยไม่ต้องใช้ Password

การทำ remote backup ผ่าน ssh โดยไม่ต้องใช้ Password กันนะครับ


ปกติในการใช้คำสั่ง ssh จาก host A ไป B  จะต้องใส่ password ทุกครั้ง ซึ่งหากเราต้องการตั้งเวลาให้ script ทำการสำรองข้อมูลอัตโนมัติ จะไม่สามารถทำได้ ครับ เพราะติดที่ password คราวนี้เราจะมาทำให้ ssh จาก Host A ไป B ไม่ต้องใส่ password ครับ

ขั้นตอนทั้งหมดทำที่ HOST A  (เป็น root)

1. ssh-keygen -t rsa   
 (ไม่ต้องใส่ passphrase  กด enter ผ่าน 2 ครั้ง)
2. ssh root@B mkdir -p .ssh
3. cat ~/.ssh/id_rsa.pub | ssh root@B 'cat >> .ssh/authorized_keys'

เสร็จ 3 คำสั่ง ครั้งต่อไป ก็สามารถใช้ ssh root@B ได้โดยไม่ต้องใส่ password ครับ

วันพุธที่ 25 พฤศจิกายน พ.ศ. 2563

Mysql Replication

 https://www.mindphp.com

2
https://www.youtube.com/watch?v=OTO062itPf4

####
 Connection to server is disabled, please enable $cfg['AllowArbitraryServer'] in phpMyAdmin configuration.
แก้ที่ /etc/phpmyadmin/config-inc.php
เพิ่มเข้าไปแถวเกือบบรรทัดสุท้าย    
 $cfg['AllowArbitraryServer'] = true;
http://www.freelancethai.net/forum/index.php?topic=79.0

วันพุธที่ 11 พฤศจิกายน พ.ศ. 2563

วิธีแก้ 404 Page not found เมื่อ deploy website ขึ้น web hosting

  สำหรับUbuntu  18.04  ปรับระบบจองห้องประชุม

แก้ไขไฟล์ Config   

  • เปิดไฟล์ Config เพื่อแก้ไข
nano /etc/apache2/sites-available/000-default.conf
  • เพิ่มคำสั่งด้านล่างใน <VirtualHost>
<Dir

วันศุกร์ที่ 6 พฤศจิกายน พ.ศ. 2563

yii2 เลื่อนขอบลงมาและใส่เมนู Export PDF EXCEL

 แทรกคำสั่งนี้เข้าไป

<div class="box-body">

ใส่เมนู Export PDF EXCEL

  <?= GridView::widget([

        'dataProvider' => $dataProvider,

      // 'filterModel' => $searchModel,

       'panel' =>[

        'before'=> ''

      ],

วันพุธที่ 4 พฤศจิกายน พ.ศ. 2563

Config php.ini Ubuntu For Ubuntu โปรแกรมพิ้นฐาน

 

Ubuntu 18.04  apache2.4  php7.2

###Smart-refer-web##### 

short_open_tag = On

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

display_errors = Off

; session.save_path = "/var/lib/php/sessions/temp" ###ต้องปิดการใช้งาน

 ###Yii2a-services#####ส่งซ่อมตอมพิวเตอร์ หน่วยซ่อมบำรุง  ยิมคืนเวชระเบียน 

session.save_path = "/var/lib/php/sessions" // Path 

session_name ( string );   //ใส่เข้าไปกรณีLogin ไม่ผ่าน

short_open_tag = On

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

display_errors = Off

; session.save_path = "/var/lib/php/sessions/temp" //ต้องเปิดการใช้งาน

วันเสาร์ที่ 31 ตุลาคม พ.ศ. 2563

Config Lubuntu18.04

 - JHCIS_Lubuntu-18.04.iso

https://drive.google.com/file/d/1OEusFnxCDUkzZ2PGYwagHeD-8xB_-Whf/view?usp=sharing
- JHCIS_Lubuntu-18.04.iso.md5
https://drive.google.com/file/d/13MrWIFnOxEHD3fDqZJaIZqqbIDFVBP54/view?usp=sharing

หรือ
- JHCIS_Lubuntu-18.04.iso
https://drive.google.com/file/d/1wmlwGJyhgBMBGWGHAp1ccqaMk1kfvYSp/view?usp=sharing
- -JHCIS_Lubuntu-18.04.iso.md5
https://drive.google.com/file/d/1ErH1n3AhFzxCvDbiPCFGCkb9hRSw1srt/view?usp=sharing
=================================
-ทำให้ openssh-server ทำงานปกติหลังติดตั้งเสร็จ
sudo dpkg-reconfigure  openssh-server   
systemctl restart ssh

- การตั้งค่า Fix IP address ให้ Ubuntu-18.04
https://linuxize.com/post/how-to-configure-static-ip-address-on-ubuntu-18-04/

- เปลี่ยน IP Address
sudo nano /etc/netplan/01-netcfg.yaml

- เปลี่ยนHostname 
sudo hostnamectl set-hostname pgans

####ตัวอย่างการใช้คำสั่ง รัน Crontab -e แบบง่าย#####

#crontab -e

0 22 * * * rsync -av --delete -e 'ssh -p 12345'  root@192.168.0.1:/Directory2/  /Directory1/ 


-การตั้งค่าคีย์บอร์ดสลับภาษาไทยบน Lubuntu-18.04 https://9mza.blogspot.com/2016/06/switch-language-key-lubuntu.html ================================== https://drive.google.com/file/d/1e7IySNcnGnZuSypy1AfzK8KSbRHpo--D/view?usp=sharing ==================================
https://sites.google.com/site/cmstungyai/kar-tid-tang-lamp-bn-xu-bun-tu

วันอังคารที่ 27 ตุลาคม พ.ศ. 2563

ศูนย์รวม Driver โน้คบุ๊ค พีซี อุปกรณ์ต่อพ่วง ทุกรุ่น ทุกประเภท ที่รองรับวินโดวส์ Xp ,Vista ,7

 

ศูนย์รวม Driver โน้คบุ๊ค พีซี อุปกรณ์ต่อพ่วง ทุกรุ่น ทุกประเภท ที่รองรับวินโดวส์ Xp ,Vista ,7

ESXi - การตั้งค่า Auto start virtual machine

 ที่มา ESXi Auto Start

  1. On the VMware ESXi web management page, go to “Manage“.
  2. Under the “System” tab, click on “Autostart“.
  3. Click “Edit Settings“.
  4. Tick “Yes” for the “Enabled” box, then “Save
  5. Below that, select the Virtual Machines you want to auto start and click “Enable” above them.
  6. (Optional) Configure the start/stop timer and stop action by going to “Configure
  7. You’re done, sit back and enjoy your coffee… or keep working.

วันพุธที่ 14 ตุลาคม พ.ศ. 2563

Myqsl Crontab Restore mBase

 ///คำสั่ง Copy Folder  จากServer1 to Server2

 rsync -av /home/dump  m30admin@192.168.200.11:/home/m30admin ///samba3

########คำสั่งRestore##################
mysql -u root -p12345678 mbase_data </home/m30admin/dump/mbase_data1.sql   ///samba11(mbase1)

wiseplay
http://thaiip.tv/free
 https://raw.githubusercontent.com/konhuafuu315/garlic/master/KNOWLEDGE
 http://196.53.248.52/list/dc.w3u
 https://www.dropbox.com/s/y68m7pdxhkyancn/iptv1.m3u8?dl=1
https://dl.dropbox.com/s/fnd3h13021yvcq5/test.w3u
https://raw.githubusercontent.com/konhuafuu315/garlic/master/KNOWLEDGE
https://raw.githubusercontent.com/konhuafuu315/IPTV/master/GALIC
 https://yamcode.com/raw/Iad4bH3mjN
 https://yamcode.com/raw/56Wwmo5adu

วันเสาร์ที่ 10 ตุลาคม พ.ศ. 2563

วันจันทร์ที่ 5 ตุลาคม พ.ศ. 2563

การแชร์ใช้งานโปรแกรม Express

 

หน้าแรก >เทคนิคการใช้งานโปรแกรม>เคล็ดไม่ลับ กับการใช้งานโปรแกรมเอ็กซ์เพรส>วิธีการแชร์ และเรียกใช้งานโปรแกรมบัญชี Express บนระบบ Network

วิธีการแชร์ และเรียกใช้งานโปรแกรมบัญชี Express บนระบบ Network

หลังจากติดตั้งโปรแกรม Express ไว้ที่ไดร์ฟ D:\ExpressI (หรือ D:\ExpressA) แล้ว ให้ทำดังนี้ :-

วิธีการแชร์(Share)โฟลเดอร์โปรแกรม Express

คลิกไอค่อน File Explorer ที่ด้านล่างของหน้าจอ Desktop (1.) คลิกเม้าส์ปุ่มขวาที่โฟลเดอร์ที่ต้องการแชร์ จากตัวอย่างในรูปคือโฟลเดอร์ ExpressI (2.) คลิกเลือกคำสั่ง Properties จากคอนเท็กซ์เมนูที่แสดงขึ้นมา (3.) ดังรูป

 

รูปที่ คลิกเม้าส์ปุ่มขวาที่โฟลเดอร์ ซึ่งต้องการแชร์เพื่อติดตั้งโปรแกรม Express

 

วันศุกร์ที่ 2 ตุลาคม พ.ศ. 2563

วิธี backup Lubuntu เป็นไฟล์ custom.iso ด้วย Remastersys

 วิธี backup Lubuntu เป็นไฟล์ custom.iso ด้วย Remastersys

  https://opensource.cc.psu.ac.th/

https://drive.google.com/file/d/1V-2W_6khjBOv-wjlLwIOCDrJZveIdFtA/view
ปรับปรุงล่าสุดเมื่อ 17-12-2558 สำหรับ ubuntu 14.04 หรือ ก่อนหน้านั้น

ปรับปรุงล่าสุดเมื่อ 1-2-2560 สำหรับ ubuntu 16.04 ให้อ่านเรื่องนี้ คำแนะนำการใช้ Pinguy Builder แทนโปรแกรมชื่อ Remastersys

ดูแลโดย WIBOON


หลังจากติดตั้ง Lubuntu และได้ทำการปรับแต่งตามความต้องการ ตัวอย่างเช่น
ปรับแต่ง Lubuntu เพื่อทำเป็น Kiosk PC สำหรับ Presentation (ดูวิธีทำ)
ปรับแต่ง Lubuntu เพื่อทำเป็น Linux Client เช่น PSU OPAC (ดูวิธีทำ)

ขั้นตอน
1. ทำขั้นตอนติดตั้งโปรแกรม remastersys
sudo add-apt-repository ppa:mutse-young/remastersys
sudo apt-get update
sudo apt-get install remastersys remastersys-gtk

2. ทำขั้นตอนปรับแต่ง config ของโปรแกรม remastersys
sudo nano /etc/remastersys.conf
แก้ไขตัวแปรเป็นค่าใหม่ดังนี้
LIVEUSER=lubuntu
LIVECDLABEL="Custom Lubuntu Live DVD"
CUSTOMISO="custom.iso"
BACKUPSHOWINSTALL="0"
LIVECDURL="https://launchpad.net/~mutse-young/+archive/ubuntu/remastersys"

3. เปลี่ยนรูปที่ไฟล์ /etc/remastersys/isolinux/splash.png ให้เป็นรูปภาพที่ต้องการ

4. แก้ไขแฟ้ม /etc/remastersys/isolinux/isolinux.cfg.vesamenu
ให้แก้ไขข้อความในบรรทัด menu label เป็นคำบรรยายตามต้องการ

5. ก่อนสร้างไฟล์ iso ลบสิ่งที่ไม่จำเป็นเพื่อประหยัดเนื้อที่
sudo apt-get clean
sudo apt-get autoremove
sudo rm /var/log/*gz
sudo rm /var/log/*/*gz
ถ้าต้องการลบคำสั่งที่เคยใช้
rm ~/.bash_history

แทรก อ่าน วิธีแก้ไขก่อนทำ remastersys เนื่องจากข้อผิดพลาดเรื่อง resolv.conf เมื่อใช้งาน Wireless ด้านล่าง

6. ทำขั้นตอน backup เพื่อสร้างไฟล์ iso
ล้าง iso ของครั้งที่แล้ว (ถ้ามี)
sudo remastersys clean

สร้างไฟล์ iso
sudo remastersys backup

ในขั้นตอน backup นี้ สามารถสั่งจากเมนู Start > System Tools > Remastersys

เมื่อเสร็จ จะได้ไฟล์ /home/remastersys/remastersys/custom.iso ที่สามารถนำไปเขียนเป็นแผ่นดีวีดี หรือ
เปิดใช้งานด้วย Oracle VM VirtualBox หรือ
นำ upload ไปเก็บไว้ใน tftpd server เพื่อใช้งานเป็น diskless client โดยตั้ง boot from network ที่ BIOS อย่างนี้ก็ได้

อ้างอิง
เว็บไซต์ที่เก็บโปรแกรม remastersys
https://launchpad.net/~mutse-young/+archive/ubuntu/remastersys


วิธีแก้ไขก่อนทำ remastersys เนื่องจากข้อผิดพลาดเรื่อง resolv.conf เมื่อใช้งาน Wireless

เมื่อนำ USB Flash Drive ที่ใส่ Live DVD ที่ทำจาก remastersys พบว่าสามารถ Connect Wireless ได้ แต่ใช้งานอินเทอร์เน็ตไม่ได้ (ขาดไฟล์ /etc/resolv.conf)

แก้ไขไฟล์ /etc/rc.local เพื่อใส่คำสั่งที่จะให้ทำงานเมื่อ boot/reboot เครื่องก่อน user login เข้าใช้งาน

sudo nano /etc/rc.local 

ที่ก่อนบรรทัดสุดท้าย exit 0 ให้ใส่

sudo dhclient -r ; sudo dhclient $(ifconfig | grep "Link encap:Ethernet" | awk '{print $1}' | awk '{print $1}')

แล้ว save ออกจากการแก้ไข


หากไม่แก้ไขตามนี้ เมื่อบูต USB Flash Drive ทุกครั้งต้องสั่งคำสั่งนี้

sudo dpkg-reconfigure resolvconf

กด OK
ตอบ YES คำถามแรก
กด OK
ตอบ NO คำถามที่สอง
และ กด OK


ที่มา:::https://opensource.cc.psu.ac.th/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5_backup_Lubuntu_%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99%E0%B9%84%E0%B8%9F%E0%B8%A5%E0%B9%8C_custom.iso_%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2_Remastersys

https://opensource.cc.psu.ac.th/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5_backup_Lubuntu_%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99%E0%B9%84%E0%B8%9F%E0%B8%A5%E0%B9%8C_custom.iso_%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2_Remastersys

วันพุธที่ 30 กันยายน พ.ศ. 2563

Serverใหม่ VMWare

 VMWare:::EXTi:::::  192.168.200.3   root::::p@ssw0rd

IP:192.168.200.11   m30admin:@858480######    root:@858480####1
Hostname:::mbase1

192.168.200.12  Windows Server2012###ทำตัวทดลอง Antivirus Sqlrite  
admin::::p@ssw0rd#11111

วันจันทร์ที่ 21 กันยายน พ.ศ. 2563

บรรจุ นว..คอมพิวเตอร์

 เปลี่ยนรหัส Gmail::::นายชาตรี

https://ocsc.chulaonline.net/main/index.asp   U:##OCSC858480##  P:###@@@858480@@xxxx##
NonHR:::Email:::mhosp.gan@gmail.com  P;@@@@ปปปปxxxxYoo021431xxx####

NonHR Email:::yoo.888@hotmail.com  P;@@@@ปปปปxxxxYoo021431xxx####

สปสช..ส่งเว็บหน้าเขียว  
Pgans::::6213033241622
Yoo: 
541303359577

yoo gmail::::yoo.pp88@gmail.com

วันพุธที่ 8 กรกฎาคม พ.ศ. 2563

yii2 dropdownlist

 Controller

public function actionIndex(){
        
        $data = Yii::$app->request->post();
        $hospcode = isset($data['hospcode']) ? $data['hospcode'] : 'null';
        $sex = isset($data['sex']) ? $data['sex'] : '1,2';
        $date1 =isset($data['date1'])  ? $data['date1'] : '';
        $date2 =isset($data['date2'])  ? $data['date2'] : '';
     
     
        $sql = "SELECT p.CID,p.`NAME`,p.LNAME,p.SEX,p.BIRTH
,TIMESTAMPDIFF(YEAR,p.BIRTH,CURDATE()) as AGE_Y
,TIMESTAMPDIFF(MONTH,p.BIRTH,CURDATE()) MOD 12 as AGE_M
,p.TYPEAREA,p.NATION,p.DISCHARGE from person p

WHERE p.DISCHARGE = 9 AND p.TYPEAREA in (1,3,5)
AND p.HOSPCODE = '$hospcode'
AND p.SEX in ($sex)";
        if(!empty($date1) && !empty($date2)){
            $sql.= " AND (p.BIRTH between '$date1' AND '$date2')";
        }
        $sql.= " ORDER BY p.BIRTH DESC,AGE_Y ASC,AGE_M ASC";
     
         $rawData = \Yii::$app->db->createCommand($sql)->queryAll();
        $person = new \yii\data\ArrayDataProvider([
            //'key' => 'hoscode',
            'allModels' => $rawData,
            'pagination' => FALSE,
        ]);


        return $this->render('index',[
            'hospcode'=>$hospcode,
            'person'=>$person,
            'sql'=>$sql,
            'sex'=>$sex,
            'date1'=>$date1,
            'date2'=>$date2,
         
        ]);
 
    }

วันอังคารที่ 30 มิถุนายน พ.ศ. 2563

Yii2 SORT ASC DESC IN Controllers

การใส่ตัวกรองในYii2 ใสใสตัวController เลยง่ายๆ

$dataProvider = new \yii\data\ArrayDataProvider([
            'allModels' => $rawData,
            'pagination' => FALSE,
            //'pagination' => ['pagesize' => 5],
        ]);
        $dataProvider->sort->attributes['DATE_SERV'] = [
            'asc' => ['DATE_SERV' => SORT_ASC],
            'desc'=>['DATE_SERV' => SORT_DESC],
            'label' => 'วันมารับบริการ'
        ];
        $dataProvider->sort->attributes['HOSPNAME'] = [
            'asc' => ['HOSPNAME' => SORT_ASC],
            'desc' => ['HOSPNAME' => SORT_DESC],
            'label' => 'สถานบริการ'
        ];
        $dataProvider->sort->attributes['HOSPCODE'] = [
            'asc' => ['HOSPCODE' => SORT_ASC],
            'desc' => ['HOSPCODE' => SORT_DESC],
            'label' => 'รหัส'
        ];
        return $this->render('thaimed_cup', [
            'searchModel' => $searchModel,
             'dataProvider' => $dataProvider,

        ]);
    }

วันพฤหัสบดีที่ 18 มิถุนายน พ.ศ. 2563

yii2-mpdf ให้รองรับการแสดงฟอนต์ TH Saraban New

ครที่ใช้ Yii2 และติดตั้ง Extension yii2-mpdf เมื่อพิมพ์ไฟล์ pdf จะพบว่าไม่มีฟอนต์ TH Saraban New มาให้เราต้องทำการ config เข้าไปเองโดยมีขั้นตอนดังนี้
1. ต้องดาวน์โหลดฟอนต์ th saraban ก่อน สามารถดาวน์โหลด คลิกที่นี่
2. นำฟอนต์ที่ได้ดาวน์โหลดไปแล้ว copy ไปวางไว้ในโฟลเดอร์ \vendor\mpdf\mpdf\ttfonts
3. เปิดไฟล์ FontVariables.php ซึ่งอยู่ในพาท \vendor\mpdf\mpdf\src\Config\FontVariables.php
4. หาคำว่า "fontdata" จากนั้นเพิ่มโค้ดเข้าไปดังนี้
5. หาคำว่า "sans_fonts" จากนั้นเพิ่มฟอนต์ th saraban โดยเพิ่มโค้ดดังนี้

8. บันทึกไฟล์ให้เรียบร้อย
9. ทดสอบการแสดงผล จะเห็นว่าไฟล์ pdf ของเราสามารถแสดงข้อมูลเป็นฟอนต์ TH Saraban New เรียบร้อยแล้ว


 "thsaraban" => array(
        'R' => "THSarabunNew.ttf",
        'B' => "THSarabunNew-Bold.ttf",
        'I'  => "THSarabunNew-Italic.ttf",
        'BI'   =>  "THSarabunNew-BoldItalic.ttf"
        ),

สร้างปุ่มพิมพ์ Print หน้าเว็บ Yii2

<input class="btn btn-primary" name="btnButton" type="button" value="Print" onClick="JavaScript:window.print();">

วันพุธที่ 27 พฤษภาคม พ.ศ. 2563

การใช้งาน IF ELSE Mysql

SELECT n.project_name,v.module_name,v.topic_id,i.project_ip,n.project_id,i.project_ip FROM (phpbb_m_latest_version v) LEFT JOIN phpbb_m_latest_name n ON (n.project_id = v.project_id) LEFT JOIN phpbb_m_latest_ip_server i ON (i.project_id = v.project_id) WHERE  n.project_name = 'aa'
AND IF (i.project_ip = '*',LIKE'% ::1 %', LIKE '%::1%') 
จะ IF ส่วนของ WHERE ถ้า ฟิลด์ i.project_ip มีค่า เท่ากับ * จะให้ WHERE i.project_ip LIKE % ::1 %
เเต่ถ้าฟิลด์นั้นไม่ใช้ ให้ WHERE ด้วยคำสั่ง WHERE i.project_ip LIKE ::1

IF(p.TELEPHONE !='', p.RL_PHONE, p.TELEPHONE) AS TELEPHONE,

วันจันทร์ที่ 25 พฤษภาคม พ.ศ. 2563

cid jhcis

//แปลง CID
siriluk?   00 3341100097106
artsuk         00 3341400049980
dr.no        00 3341501613059
dr.tum  00 3350100792598
pat           00 1341400012762
arre        00 3341400030384

วันศุกร์ที่ 8 พฤษภาคม พ.ศ. 2563

Last_visit

(select concat(' บริการครั้งก่อน',cast(o1.visit_id as char(20)),' ', o1.reg_datetime) 
from opd_visits as o1
inner join opd_diagnosis od1 ON od1.visit_id = o1.visit_id AND o1.is_cancel = 0 AND od1.is_cancel = 0
LEFT JOIN icd10new i1 ON i1.icd10 = od1.icd10 AND i1.icd10_tm BETWEEN 'A90' AND 'A999'
where  o1.REG_DATETIME BETWEEN "2020-05-01 00:00:00 " AND NOW()
AND a.hn=o1.hn and a.visit_id > o1.visit_id order by o1.visit_id desc limit 1) as last_visit

วันพุธที่ 29 เมษายน พ.ศ. 2563

รัน Ubonsystem ต้องการ2 ตารางนี้

การรัน Ubonsystem ต้องการ2 ตารางนี้ chospital กับ office  โปรแกรมถึงจะรันขี้น
SERVER_WEB_SERVICE=zone1.phoubon.in.th
DRIVER=com.mysql.jdbc.Driver
DATABASE=mbase_data
SERVER=192.168.200.2
PORT=3306
USERNAME=root
PASSWORD=1234
PCUCODE=10953
USER_SERVICE=u10953
PASS_SERVICE=p10953
TIME=10:05
DAY=1,2,3
DUMP=0
PATH_FILE=D://UbonSystem//export1//
PATH_FILE_OUT=D:\\UbonSystem\\export2\\

วันพุธที่ 22 เมษายน พ.ศ. 2563

yii2 ปรับสีFont

$gridColumns = [
                            ['class' => 'kartik\grid\SerialColumn'],
                            [
                            'attribute' => 'tdate',
                            'label' => 'วัน/เวลามารับบริการ',
                            'value' => function ($model, $key, $index, $widget) {
                                if ($model['tadmit'] === 'N') {
                                    return "<font  color='000000'>" . $model['tdate'] . "</font>";
                                } else {
                                    return "<font  color='ff0066'>" . $model['tdate'] . "</font>";

วันศุกร์ที่ 27 มีนาคม พ.ศ. 2563

showPageSummary Option In Yii2

showPageSummary Option In Yii2

showPageSummary : ชนิด boolean [ TRUE , FALSE ] จะแสดงผลรวมของฟิลด์ ใน grid view. ค่าเริ่มต้นจะกำหนดไว้เป็น FALSE.

echo GridView::widget([

                    'dataProvider' => $dataProvider,

                    'hover' => TRUE,

                    'resizableColumns'=>true,

                    'showPageSummary' => true,

                    'columns' => [];

กำหนดใน column ที่ต้องการ sum

'pageSummary' => true
[

'headerOptions' => ['class' => 'text-center'],

'contentOptions' => ['class' => 'text-right'],

//'options' => ['style' => 'width:30px;'],

'attribute' => 'total_value',

'header' => 'มูลค่ารวม (บาท)',

'format'=>['decimal', 0],

'value' => function($data) {

 return empty($data['total_value']) ? '0' : $data['total_value'];

},

'pageSummary' => true,


], 



วันศุกร์ที่ 20 มีนาคม พ.ศ. 2563

php search mysql

<?php ini_set('display_errors', 1); error_reporting(~0); $strKeyword = null; if(isset($_POST["txtKeyword"])) { $strKeyword = $_POST["txtKeyword"]; } ?> <form name="frmSearch" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>"> <table width="599" border="1"> <tr> <th>Keyword <input name="txtKeyword" type="text" id="txtKeyword" value="<?php echo $strKeyword;?>"> <input type="submit" value="Search"></th> </tr> </table> </form> <?php $serverName = "localhost"; $userName = "root"; $userPassword = "1234"; $dbName = "testdb"; $conn = mysqli_connect($serverName,$userName,$userPassword,$dbName); mysqli_set_charset($conn, "utf8"); $sql = "SELECT * FROM provider WHERE (NAME LIKE '%".$strKeyword."%' OR LNAME LIKE '%".$strKeyword."%' ) "; $query = mysqli_query($conn,$sql); ?> <table width="600" border="1"> <tr> <th width="91"> <div align="center">CID </div></th> <th width="98"> <div align="center">NAME </div></th> <th width="198"> <div align="center">LNAME </div></th> <th width="198"> <div align="center">BIRTH </div></th> </tr> <?php while($result=mysqli_fetch_array($query,MYSQLI_ASSOC)) { ?> <tr> <td><div align="center"><?php echo $result["CID"];?></div></td> <td><?php echo $result["NAME"];?></td> <td><?php echo $result["LNAME"];?></td> <td><?php echo $result["BIRTH"];?></td> </tr> <?php } ?> </table> <?php mysqli_close($conn); ?>

วันจันทร์ที่ 16 มีนาคม พ.ศ. 2563

admitt+referน้อยกว่า 4 ชั่วโมง

SELECT  k.ICD10_TM , k.NICKNAME, COUNT(k.ICD10_TM) as AMOUNT
FROM (

SELECT i.VISIT_ID ,i.ADM_DT, r.RF_DT ,
((to_days(r.RF_DT)*24)- (to_days(i.ADM_DT)*24))/24 AS DAYS, abs((time_to_sec(r.RF_DT)/3600) - (time_to_sec(i.ADM_DT)/3600)) as Times
,ic.ICD10_TM , ic.NICKNAME
FROM ipd_reg i
INNER JOIN refers r on i.VISIT_ID = r.VISIT_ID AND i.IS_CANCEL = 0 AND r.IS_CANCEL = 0 AND r.rf_type = 2
INNER JOIN opd_diagnosis o ON i.VISIT_ID = o.VISIT_ID AND o.IS_CANCEL = 0 AND o.DXT_ID = 1
INNER JOIN icd10new ic ON o.ICD10 = ic.ICD10
WHERE r.RF_DT BETWEEN '2018-10-01 00:00' AND '2019-09-30 23:59'
AND ((to_days(r.RF_DT)*24)- (to_days(i.ADM_DT)*24))/24 = '0'
AND abs((time_to_sec(r.RF_DT)/3600) - (time_to_sec(i.ADM_DT)/3600)) <= '4.0') as k
GROUP BY k.ICD10_TM  ORDER BY AMOUNT DESC

****List แยก ตามAN***

SELECT i.VISIT_ID ,op.HN,i.ADM_ID as AN ,op.REG_DATETIME as REGDATE,i.ADM_DT, r.RF_DT ,
((to_days(r.RF_DT)*24)- (to_days(i.ADM_DT)*24))/24 AS DAYS, abs((time_to_sec(r.RF_DT)/3600) - (time_to_sec(i.ADM_DT)/3600)) as Times
,ic.ICD10_TM , ic.NICKNAME
FROM ipd_reg i
LEFT JOIN opd_visits op ON op.visit_id = i.visit_id AND op.is_cancel = 0
INNER JOIN refers r on i.VISIT_ID = r.VISIT_ID AND i.IS_CANCEL = 0 AND r.IS_CANCEL = 0 AND r.rf_type = 2
INNER JOIN opd_diagnosis o ON i.VISIT_ID = o.VISIT_ID AND o.IS_CANCEL = 0 AND o.DXT_ID = 1
INNER JOIN icd10new ic ON o.ICD10 = ic.ICD10
WHERE r.RF_DT BETWEEN '2020-01-01 00:00' AND '2021-09-30 23:59'
AND ((to_days(r.RF_DT)*24)- (to_days(i.ADM_DT)*24))/24 = '0'
AND abs((time_to_sec(r.RF_DT)/3600) - (time_to_sec(i.ADM_DT)/3600)) <= '2.0' 
#GROUP BY k.ICD10_TM  ORDER BY AMOUNT DESC