วันพุธที่ 17 กุมภาพันธ์ พ.ศ. 2564

php mysql excel สั้นมาก

 <?php

$DB_Server = "localhost"; //MySQL Server    

$DB_Username = "root"; //MySQL Username     

$DB_Password = "ปปแ";             //MySQL Password     

$DB_DBName = "jhcis43f";         //MySQL Database Name  

#$DB_TBLName = "cid_hn"; //MySQL Table Name   

$filename = "excelfilename";         //File Name

/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/   

mysql_query("SET NAMES UTF8"); 

//create MySQL connection   

//$sql = "SELECT p.cid, p.fname, p.lname FROM population p WHERE p.cid = '3341400051241'";

$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());

//mysql_query("SET NAMES UTF8");

//date_default_timezone_set('Asia/Bangkok');

//select database   

$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 

//mysql_query("set NAMES utf8 ");  

//execute query 

$sql = "SELECT a.cid, a.pid, a.prename,a.`name`,a.lname,a.sex,a.birth, a.typearea,b.date_diag,b.date_disch,b.chronic

FROM person a, chronic b 

WHERE a.pid = b.pid

GROUP BY a.cid ORDER BY chronic DESC ";

$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());


  

$file_ending = "xls";

//header info for browser


header("Content-Type: application/xls");    

header("Content-Disposition: attachment; filename=$filename.xls");  

header("Pragma: no-cache"); 

header("Expires: 0");

/*******Start of Formatting for Excel*******/   

//define separator (defines columns in excel & tabs in word)

$sep = "\t"; //tabbed character

//start of printing column names as names of MySQL fields

for ($i = 0; $i < mysql_num_fields($result); $i++) {

echo mysql_field_name($result,$i) . "\t";

}

print("\n");    

//end of printing column names  

//start while loop to get data

    while($row = mysql_fetch_row($result))

    {

        $schema_insert = "";

        for($j=0; $j<mysql_num_fields($result);$j++)

        {

            if(!isset($row[$j]))

                $schema_insert .= "NULL".$sep;

            elseif ($row[$j] != "")

                $schema_insert .= "$row[$j]".$sep;

            else

                $schema_insert .= "".$sep;

        }

        $schema_insert = str_replace($sep."$", "", $schema_insert);

        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);

        $schema_insert .= "\t";

        print(trim($schema_insert));

        print "\n";

    }   

?>

php query mysql export Excel

 <?

header("Content-type: application/vnd.ms-excel");

// header('Content-type: application/csv'); //*** CSV ***//

header("Content-Disposition: attachment; filename=testing.xls");

?>

<html>

<body>

<?

$objConnect = mysql_connect("localhost","root","xxx") or die("Error Connect to Database");

mysql_query("SET NAMES UTF8");

$objDB = mysql_select_db("jhcis43f");

$strSQL = "SELECT a.cid, a.pid, a.prename,a.`name`,a.lname,a.sex,a.birth, a.typearea,b.date_diag,b.date_disch,b.chronic

FROM person a, chronic b 

WHERE a.pid = b.pid

GROUP BY a.cid ORDER BY chronic DESC ";

$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");

?>

<table width="600" border="1">

<tr>

<th width="91"> <div align="center">cid </div></th>

<th width="98"> <div align="center">pid </div></th>

<th width="198"> <div align="center">prename </div></th>

<th width="97"> <div align="center">name </div></th>

<th width="59"> <div align="center">lname </div></th>

<th width="71"> <div align="center">birth </div></th>

</tr>

<?

while($objResult = mysql_fetch_array($objQuery))

{

?>

<tr>

<td><div align="center"><?=$objResult["cid"];?></div></td>

<td><?=$objResult["name"];?></td>

<td><?=$objResult["lname"];?></td>

<td><div align="center"><?=$objResult["birth"];?></div></td>

<td align="right"><?=$objResult["cid"];?></td>

<td align="right"><?=$objResult["pid"];?></td>

</tr>

<?

}

?>

</table>

<?

mysql_close($objConnect);

?>

</body>

</html>

วันพฤหัสบดีที่ 4 กุมภาพันธ์ พ.ศ. 2564

php get json from url

 ############WEBEEEEEEE####################\

https://www.thaicreate.com/php/forum/119712.html  //Select Data
https://www.thaicreate.com/community/php-web-service-json.html
https://www.thaicreate.com/php/forum/126593.html//Set UTF8
https://www.thaicreate.com/php/forum/134476.html//Json array
https://zetcode.com/php/json/
http://www.credit-thai.com/2016/03/mysql-json.html  //json mysql 
https://www.ninenik.com/content.php?arti_id=373
https://devbanban.com/?p=343  การใช้ json php
http://pirun.ku.ac.th/
https://stackoverflow.com/questions/43384087/how-can-i-convert-json-array-to-array-in-php
https://saixiii.com/what-is-json/
https://www.youtube.com/watch?v=CxY6oxtXXkI//youtube
http://www.w3big.com/th/php/php-json.html
https://saixiii.com/
https://stackoverflow.com/questions/3281354/how-to-create-a-json-object

https://www.thaicreate.com/community/php-array-push-mysql-result.html//มีเลือก 2 แบบ

nested json แบบครอบง่ายดี
https://stackoverflow.com/questions/15810257/create-nested-json-object-in-php/15810356



###################VEDIO##################

https://www.youtube.com/watch?v=ZIsdbVOQJNc

https://www.codegrepper.com/code-examples/php/get+json+from+url+php

https://www.youtube.com/watch?v=1X2-UEUqrd8

วันอังคารที่ 2 กุมภาพันธ์ พ.ศ. 2564

เปลี่ยนวันเวลาบนลีนุกซ์ด้วยคำสั่ง date

 

เปลี่ยนวันเวลาบนลีนุกซ์ด้วยคำสั่ง date

วันเวลาบนลีนุกซ์ถือเป็นเรื่องสำคัญ ที่สมควรจะตั้งให้ตรงกับเวลามาตรฐาน ไม่เช่นนั้น โปรแกรมต่างๆ จะเก็บเวลาไม่ถูกต้อง ทำให้การตรวจสอบการทำงานย้อนหลังมีปัญหา

วิธีที่ดีที่สุดเพื่อให้เวลาของเครื่องลีนุกซ์ตรงกับเวลามาตรฐานคือติดตั้งและคอนฟิก NTP

แต่ถ้าไม่สามารถคอนฟิกเช่น ไม่สามารถต่อเชื่อมอินเตอร์เน็ต เพื่อ sync กับ NTP Server มาตรฐาน

สามารใช้คำสั่ง date  เพื่อเปลี่ยนเวลาของเครื่องลีนุกซ์ให้เป็นเวลาที่ต้องการ ใกล้เคียงกับเวลามาตรฐานได้

พิมพ์คำสั่ง date แบบไม่มีออปชั่นใดๆ ผลลัพธ์จะแสดงเวลาของเครื่อง ผู้ใช้ (user) ธรรมดาก็สามารถใช้คำสั่งนี้เพื่อดูเวลาของเครื่องได้

[alice@cent6 ~]$ date
Mon Apr 16 18:25:03 ICT 2012

สมมติว่าเวลาจริงๆ ตอนนี้เป็นวันที่ 16 Apr 2012 เวลา 15:03 น.

เราสามารถใช้คำสั่ง date เพื่อเปลี่ยนเวลาของเครื่องตามที่ต้องการได้

ล็อกอินด้วย root แล้วใช้คำสั่ง date เว้นวรรคตามด้วยวันที่เวลาตามรูปแบบ

mmddHHMMCCYY

โดย

  • mm คือตัวเลขระบุเดือน
  • dd คือตัวเลขระบุวันที่
  • HH คือตัวเลขระบุชั่วโมง
  • MM คือตัวเลขระบุนาที
  • CCYY คือตัวเลขปี คศ. เช่น 2012

ตัวเลขทั้งหมดต้องพิมพ์เป็นตัวเลขสองหลัก ยกเว้นปีคศ. ถ้าเป็นตัวเลขตัวเดียวพิมพ์เลข 0 (ศูนย์) นำหน้า เช่นเดือน เมษายน ต้องพิมพ์เป็น 04

ตัวอย่างเช่นต้องการเปลี่ยนเวลาของเครื่องเป็น 16 Apr 2012 เวลา 15:03 น.

[root@cent6 ~]# date 041615032012
Mon Apr 16 15:03:00 ICT 2012

คำอธิบายตัวเลขตามลำดับ

  • 04 = เดือนเมษายน
  • 16 = วันที่ 16
  • 15 = 15 นาฬิกา
  • 03 = 3 นาที
  • 2012 = ปี คศ. 2012

 

ข้อมูลอ้างอิง

ติดตั้ง mariadb บน ubuntu

 

MariaDB คือ MySQL ที่ถูกนำมา fork ออกมาจากต้นสาย MySQL โดย Michael Widenius ซึ่งเป็นผู้ก่อตั้ง MySQL เดิม ได้ fork ตัวโครงการออกมาใหม่ได้สักพักใหญ่ๆ หลายปีแล้ว และทำงานภายในชื่อบริษัท Monty Program AB โครงสร้างต่าง ๆ ของ MariaDB แทบจะเรียกได้ว่าเหมือนกับ MySQL เช่นพวกโครงสร้างไฟล์ โครงสร้างของ Database และ Table สามารถใช้งานของ MySQL ได้แทบจะเกือบ 100% เพราะฉะนั้นการใช้งาน MariaDB แทนที่ MySQL แทบจะไม่ต้องทำอะไรเพิ่มเติมเลย แม้แต่ Code ของ PHP ก็สามารถที่จะใช้งาน function ของ mysql ได้เช่นเดิม

หากมี MySQL อยู่แล้วให้ทำการถอนการติดตั้ง MySQL ออก โดยการป้อนคำสั่งดังนี้
sudo apt-get purge mysql*

ลบ Package MySQL ออกด้วยคำสั่งนี้

sudo apt-get autoremove

หลังจากทำการลบ MySQL เรียบร้อยแล้ว ใช้คำสั่งด้านล่างนี้เพื่อเป็นทำการเพิ่ม Repository ของ MariaDB เพื่อติดตั้งบน Ubuntu 14.04

sudo apt-get install software-properties-common

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db

sudo add-apt-repository 'deb http://sgp1.mirrors.digitalocean.com/mariadb/repo/5.5/ubuntu trusty main'

จากนั้นทำการ Update Software และทำการติดตั้ง MariaDB ตามคำสั่งนี้

sudo apt-get update

sudo apt-get install mariadb-server mariadb-client

ระหว่างการติดตั้งระบบจะขอให้ตั้ง password  root ของ mysql

Re-enter password

ทำการตรวจสอบว่า MariaDB กำลังทำงานอยู่หรือไม่โดยใช้ คำสั่งนี้
sudo service mysql status

ผลลัพธ์

วันจันทร์ที่ 1 กุมภาพันธ์ พ.ศ. 2564

ติดตั้ง mysql server บน ubuntu 16.04 server

 

ติดตั้ง mysql server บน ubuntu 16.04 server

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 13-06-2560
ดูแลโดย WIBOON

ก่อนอื่นให้เพิ่ม locale ด้วยคำสั่ง
mama@ubuntu:~$ sudo locale-gen en_US en_US.UTF-8 th_TH th_TH.UTF-8
mama@ubuntu:~$ sudo dpkg-reconfigure locales
กด Enter เพื่อใช้ค่าที่เตรียมนี้

1. ติดตั้ง MySQL server ลงใน host server
1.1 ติดตั้งโปรแกรม

mama@ubuntu:~$ sudo apt install mysql-server
The following NEW packages will be installed:
  libaio1 ........
  ........ mysql-server-core-5.7
After this operation, 162 MB of additional disk space will be used.
Do you want to continue? [Y/n] ตอบ Y
Configuring mysql-server-5.7
 New password for the MySQL "root" user: 

ตั้งรหัสผ่าน

ไฟล์สำหรับการตั้งค่า mysql server อยู่ที่ไหนกันบ้าง

mama@ubuntu:~$ ls -l /etc/mysql/mysql.conf.d/mysqld.cnf
-rw-r--r-- 1 root root 3028 Jul 14 23:09 /etc/mysql/mysql.conf.d/mysqld.cnf


และอันนี้เป็นไฟล์สำหรับการตั้งค่า mysql client ที่ได้มาด้วย
ตรวจสอบดูพาธของไฟล์ my.cnf และ mysql.cnf คืออันเดียวกัน

mama@ubuntu:~$ ls -l /etc/mysql/my.cnf /etc/mysql/mysql.cnf
lrwxrwxrwx 1 root root  24 Aug 23 10:27 /etc/mysql/my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 root root 682 Jul 11 20:36 /etc/mysql/mysql.cnf


my.cnf เป็น symbolic link file ไปยังไฟล์จริงที่ mysql.cnf

mama@ubuntu:~$ ls -l /etc/alternatives/my.cnf
lrwxrwxrwx 1 root root 20 Aug 23 10:27 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf
mama@ubuntu:~$


1.2 ปรับแต่งค่า bind address ที่ mysqld.cnf ให้ mysql client IP จากภายนอก สามารถ connect เข้ามายัง database ได้ ไม่เพียงแค่ localhost เท่านั้น
ถ้าตั้งค่า bind-address = IP ของ network interface จะหมายถึงอนุญาตเฉพาะ network นั้นเท่านั้น
ถ้าตั้งค่า bind-address = :: จะหมายถึงอนุญาตทั้ง IPv4 และ IPv6 ทุกเครื่อง (แต่ควรจะไปกำหนด host firewall rule ในการอนุญาตเฉพาะเครื่องที่จะให้เข้าถึง เช่น ใช้ ufw หรือ shorewall เป็นต้น)
mama@ubuntu:~$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
เดิม
bind-address = 127.0.0.1
เปลี่ยนเป็น
bind-address = ::

1.3 ต้อง restart mysql ด้วยเมื่อมีการแก้ไขค่า config
mama@ubuntu:~$ sudo systemctl restart mysql.service
และก็ควรตรวจสอบ status ด้วยว่า restart สำเร็จหรือไม่
mama@ubuntu:~$ sudo systemctl status mysql.service
ผลลัพธ์

- mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Mon 2016-08-29 15:38:14 ICT; 8s ago
Aug 29 15:38:13 ubuntu systemd[1]: Stopped MySQL Community Server.
Aug 29 15:38:13 ubuntu systemd[1]: Starting MySQL Community Server...
Aug 29 15:38:14 ubuntu systemd[1]: Started MySQL Community Server.


2. ตัวอย่างการสร้าง database ด้วย mysql client เป็นต้น
ชื่อ database คือ mydb
ชื่อ user คือ myuser
รหัสผ่านของ myuser คือ mypassword
'myuser'@'localhost' คือ myuser ที่ให้สิทธิเข้าถึง database ได้จาก client localhost เท่านั้น
'myuser'@'%' คือ myuser ที่ให้สิทธิเข้าถึง database ได้จาก client ใด ๆ ก็ได้
การใช้ myuser ทั้งสองแบบนี้ ถือว่าเป็นคนละยูสเซอร์ ดังนั้นรหัสผ่านจึงเป็นคนละอันกัน

เขียนคำสั่ง (แบบรอป้อน password ดังนี้)

mama@ubuntu:~$ mysql -u root -p
Enter password: 

แล้วสร้าง database, user ดังนี้

Welcome to the MySQL monitor.  Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE mydb CHARACTER SET 'UTF8';
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye


3. การแบ็กอัพ database
สมมติว่า user ชื่อ root และ password คือ 123456
ใช้คำสั่งดังนี้

mama@ubuntu:~$ mysqldump -u root -p123456 mydb > mydb.sql

หรือเขียนคำสั่งแบบรอป้อน password ดังนี้

mama@ubuntu:~$ mysqldump -u root -p mydb > mydb.sql
Enter password:


4. การรีสโตร์ database
ขั้นตอน
1. เมื่อเราทำเครื่อง server ใหม่ ให้เราสร้าง database ก่อนให้เหมือนกับที่สำรองเก็บไว้จากเครื่องเดิม
2. แล้ว import ข้อมูลจากไฟล์ mydb.sql กลับเข้าใน database ด้วยคำสั่ง

mama@ubuntu:~$ mysql -uroot -p123456 mydb < mydb.sql

หรือเขียนคำสั่งแบบรอป้อน password ดังนี้

mama@ubuntu:~$ mysql -uroot -p mydb < mydb.sql


5. ไม่ต้องป้อน password ทุกครั้ง และไม่เปิดเผย password ไว้ในบรรทัดคำสั่ง mysqldump
นำ password ไปเขียนไว้ในไฟล์ mypw.cnf เป็นวิธีการที่ใช้ในการ backup ทุกวันด้วย cron
สร้างไฟล์ mypw.cnf ด้วยคำสั่ง

mama@ubuntu:~$ sudo vi mypw.cnf

ภายในไฟล์จะมีข้อมูล username และ password เช่น

[mysqldump]
user=myuser
password=mypassword

ทดสอบอีกครั้ง

mama@ubuntu:~$ mysqldump --defaults-extra-file=mypw.cnf mydb > mydb.sql
https://opensource.cc.psu.ac.th/%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_mysql_server_%E0%B8%9A%E0%B8%99_ubuntu_16.04_server
https://www.hackthesec.co.in/2016/01/how-to-install-mysql-57-or-56-or-55-on.html

1130 – Host ‘xxxx.local’ is not allowed to connect to this MySQL Navicat

 1130 – Host ‘xxxx.local’ is not allowed to connect to this MySQL

 

How to Allow MySQL Client to Connect to Remote MySQL server


สืบเนื่องจากเคยแนะนำโปรแกรม NaviCat ไปแล้ว คราวนี้หากใครเจอปัญหาข้างต้น ให้รู้เลยว่า สิทธิ์การเข้าถึง ของ user ที่เราใช้ มันไม่พอจะ connect เข้าไปได้


วิธีการแก้ไขก็คือ

$ mysql -u root -p

Enter password:

mysql> use mysql

mysql> GRANT ALL ON *.* to newuser@'%' IDENTIFIED BY 'user-password'; 

mysql> FLUSH PRIVILEGES;

 ตัวอย่าง GRANT ALL ON *.* to root@'%' IDENTIFIED BY '12345678'; 

คำอธิบาย

GRANT คือคำสั่งสั่งหรับเพิ่ม user ใหม่ให้กับ mysql

ALL คือ การให้สิทธิ์ทุกอย่าง ทั้ง Global ทั้ง user และ table ให้กับ user ชื่อนี้

*.* คือ ทุกฐานข้อมูล ทุกตาราง

to คือ ให้กับ

newuser คือชื่อผู้ใช้ที่ต้องการกำหนด หรือใช้ user เดิมก็ได้ครับ

% คือ กำหนดให้ login มาจากที่ไหนก็ได้ ไม่เหมือน localhost นะครับ หรือใส่เลข host IP

IDENTIFIED BY หมายถึง จากทั้งหมดที่กำหนด การเข้าใช้งานต้องยืนยันรหัสผ่าน ด้วย

user-password คือ รหัสผ่านของ user นั้นที่เรากำหนดลงไปครับผม

https://moremeng.in.th/2012/04/1130-host-xxxx-local-is-not-allowed-to-connect-to-this-mysql.html