รวม Snippets
แนวทางการใช้งานค่า shared preference ในแอป เมื่อเริ่มต้น
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { late String _myValue; @override void initState() { super.initState(); _loadValueFromSharedPreferences(); } // Method to load value from SharedPreferences Future<void> _loadValueFromSharedPreferences() async { final prefs = await SharedPreferences.getInstance(); setState(() { _myValue = prefs.getString('my_key') ?? 'default_value'; // Set default value if key does not exist }); } // Method to save value to SharedPreferences Future<void> _saveValueToSharedPreferences(String value) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString('my_key', value); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('SharedPreferences Example'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Value from SharedPreferences: $_myValue'), ElevatedButton( onPressed: () { _saveValueToSharedPreferences('new_value'); }, child: Text('Save New Value'), ), ], ), ), ); } }
เกี่ยวกับการใช้ composer ตรวจสอบเวอร์ชั่น package ที่ถูกติดตั้ง
- กรณีเราต้องการติดตั้ง package ที่เคยใช้งานในโปรเจ็คใหม่ แต่จำไม่ได้ว่า ติดตั้งอะไรไปบ้าง
สามารถดูข้อมูลได้ที่ไฟล์ composer.json
- ถ้าไม่พบไฟล์ composer.json แต่ยังมีไฟล์ composer.lock เราสามารถเรียกใช้คำสั่ง
composer install
เพื่อติดตั้ง package ทั้งหมดในไฟล์นั้นอีกครั้งได้
- กรณีที่ไม่มีทั้งไฟล์ composer.json และไฟล์ composer.lock แต่เรายังมีโฟลเดอร์ vendor
ที่เคยใช้งานอยู่ เราสามารถดูข้อมูล package และเวอร์ชั่นที่เคยติดตั้งได้ที่ ไฟล์ installed.json
vendor/composer/installed.json
ซึ่งจะเป็นข้อมูล package ในเวอร์ชั่น ที่ถูกติดตั้งในครั้งแรกเท่านั้น ดังนั้น หากมีการใช้งานคำสั่ง
composer update
ก็จะไม่มีผลกับข้อมูลเวอร์ชั่นที่ติดตั้ง ในไฟล์ installed.json ก็จะยังไม่ใช่เวอร์ชั่นล่าสุดนั่นเอง
การใช้ container ใน docker เพื่อพัฒนา php web application
สมมติเราพัฒนาใน windows โครงสร้างประมาณนี้
C:\docker\server // จัดการ container C:\docker\mysql_data // กับข้อมูลของฐานข้อมูล mysql C:\docker\server\www // สำหรับเก็บไฟล์ php
1. สร้างไฟล์ docker-compose.yml ใน
version: '3.7' services: mysql: # image: mysql:latest image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: examplepassword MYSQL_DATABASE: mydb MYSQL_USER: myuser MYSQL_PASSWORD: mypassword MYSQL_CHARSET: utf8mb4 MYSQL_COLLATION: utf8mb4_unicode_ci ports: - "3306:3306" volumes: - ../mysql_data:/var/lib/mysql php_apache: image: php:8.1-apache # image: php restart: always ports: - "8080:80" volumes: - ./www:/var/www/html depends_on: - mysql phpmyadmin: # image: phpmyadmin/phpmyadmin image: phpmyadmin restart: always ports: - "8081:80" environment: PMA_HOST: mysql MYSQL_ROOT_PASSWORD: examplepassword depends_on: - mysql
2. รันคำสั่ง ผ่าน command ใน path ส่วนจัดการ container
docker-compose up -d
3. ไฟล์ index.php สำหรับทดสอบ
<?php // สังเกตว่าตรง localhost เราจะต้องเปลี่ยนเป็นชื่อ container ฐานข้อมูล // เนื่องจากในที่นี่กำหนดเป็นชื่อ mysql ในไฟล์ docker-compose.yml $mysqli = new mysqli("mysql", "root","examplepassword","mydb"); if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } if(!$mysqli->set_charset("utf8")) { printf("Error loading character set utf8: %s\n", $mysqli->error); exit(); } phpinfo();
3. ถ้า mysqli ไม่ทำงานหรือ ᩴextension ของ php ตัวใดไม่ทำงาน ให้ไปที่ส่วนของ container ที่เป็น php apache ที่เราใช้งาน
จากนั้นเรียกใช้คำสั่ง 2 คำสั่งนี้ในส่วนของ command ดังตัวอย่างด้านล่าง
docker-php-ext-install mysqli apachectl restart
รันคำสั่งพร้อมกัน ก็จะสามารถใช้งาน การเชื่อมต่อกับฐานข้อมูล
การค้นหาและแทนค่าข้อมูลในฐานข้อมูล mysql
UPDATE `table_name` SET `field_name` = REPLACE(`field_name`, "http://www.ninenik.com", "https://www.ninenik.com");
ใช้ htaccess กำหนดให้ลิ้งค์ไปยังหน้า maintenance
กรณีที่เรามีการปรับปรุงหรือเพิ่มประสิทธิภาพเว็บไซต์ และต้องไม่การให้
ผู้ใช้งานเข้าใช้งานได้ในช่วงระยะเวลาหนึ่ง เพื่อจะได้ทำการปรับปรุงเว็บไซต์
เราสามารถสร้างหน้าแจ้งการปรับปรุงเว็บไซต์ หรือที่เรียกว่า maintenance
page ขึ้นมา จากนั้นใช้กำหนดใน ทุกๆ การเรียกใช้งานจะถึงลิ้งค์มายังแจ้ง
รายละเอียด การปรับปรุงเว็บไซต์ ซึ่งอาจจะแจ้งข้อมูลสำหรับติดต่อ กรณีมีความ
จำเป็นด่วนไว้ด้วยก็ได้ แนวทาง คือสร้างไฟล์เพจ หน้าแจ้งการปรับปรุงเว็บไซต์ จาก
นั้นใช้ htaccess กำหนดการลิ้งค์มาด้วยคำสั่งดังนี้
# MAINTENANCE-PAGE REDIRECT <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} !^123.456.789.000 RewriteCond %{REMOTE_ADDR} !^123.456.789.000 RewriteCond %{REMOTE_ADDR} !^123.456.789.000 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.html [R=302,L] </IfModule>
กรณีที่เราต้องการยกเว้น หรือให้เฉพาะบางโฟลเดอร์สามารถยังใช้งานได้ ก็กำหนดส่วน
ที่ต้องการยกเว้นเข้าไป สมมติเช่น เรายังให้สามารถเข้าใช้งานหน้า /dashboard ได้
ก็จะเพิ่มเข้าไปเป็นดังนี้
# MAINTENANCE-PAGE REDIRECT <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} !^123.456.789.000 RewriteCond %{REMOTE_ADDR} !^123.456.789.000 RewriteCond %{REMOTE_ADDR} !^123.456.789.000 RewriteCond %{REQUEST_URI} !^/dashboard [NC] RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.html [R=302,L] </IfModule>
php ฟังก์ชั่น ตรวจสอบว่ามี url ในข้อความหรือไม่
ใช้สำหรับตรวจสอบว่าข้อความนั้นๆ มีลิ้งค์ url ทั้งที่แบบมี http https และรูปแบบอื่นๆ ในลักษณะการอ้างอิงถึงลิ้งค์ของเว็บไซต์ต่างๆ อยู่ในข้อความนั้นๆ หรือไม่ ถ้าคืนค่าเป็น 1 พรือ true แสดงว่ามี สามารถนำไปประยุกต์ในการสร้างเงื่อนไขการทำงานได้
<?php function urldetect($str){ $regex = "((https?|ftp)://)?"; // SCHEME $regex .= "([a-z0-9+!*(),;?&=\$_.-]+(:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; // User and Pass $regex .= "([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))"; // Host or IP address $regex .= "(:[0-9]{2,5})?"; // Port $regex .= "(/([a-z0-9+\$_%-]\.?)+)*/?"; // Path $regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+/\$_.-]*)?"; // GET Query $regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor return preg_match("~^$regex$~i", $str, $m); } // สมมติมีการส่งค่ามาผ่าน url มาแล้วเราต้องการตรวจสอบว่ามีลิ้งค์ หรือ url หรือไม่ if(urldetect($_GET['keyword'])){ header("Location:notfound.html"); exit; } ?>
คำสั่ง JavaScript ดึงรูปจาก Facebook Album
แนวทางการใช้งาน จะใช้ผ่าน console ของ dev tool
โดยเปิดไปหน้ารูปรวมของ album ที่ต้องการ จากนั้น เลื่อน scrollbar เพื่อแสดง
รายการรูปทั้งหมด
var urlStr = ""; // ตัวแปรเก็บ url รายการลิ้งค์ของรูป var n_i = document.querySelectorAll("a[href*='photo.php']").length; // จำนวนรูปจากการนับ var n_i = 5; // จำนวนรูปจากการกำหนด var n_v = 0; // ตำแหน่งเริ่มของรูป function getImg(n_v){ if(n_v<n_i){ document.querySelectorAll("a[href*='photo.php']")[n_v].click(); setTimeout(function(){ if(document.querySelectorAll("img[data-visualcompletion='media-vc-image']").length>0){ urlStr += '<img src="'; urlStr += document.querySelectorAll("img[data-visualcompletion='media-vc-image']")[0].src; urlStr += '">'; urlStr += '\r\n'; document.querySelectorAll("div[aria-label='Close']")[0].click(); } n_v++; setTimeout(function(){ getImg(n_v); },500); },1000); }else{ console.log(urlStr); } } getImg(n_v);
หลังจากได้รายการรูป นำไปสร้าง HTML แท็ก image จากนั้นใช้โปรแกรมโหลดจาก url รูป
เข้ารหัส HTML สำหรับส่งค่าใน URL ด้วย PHP และ JavaScript
แนวทางทั้งสอง ใช้สำหรับเข้ารหัสหรือจัดรูปแบบของ HTML ให้สามารถ
ส่งค่าผ่าน url ไปใช้งานได้
PHP
urlencode(htmlentities("<strong>Title</strong>etc etc"));
JavaScript
function htmlentity(rawStr){ return encodeURIComponent(rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) { return '&#'+i.charCodeAt(0)+';'; })); } htmlentity("<strong>Title</strong>etc etc");
แนวทาง คำสั่ง SQL เรียงข้อมูลภาษาไทย และภาษาอังกฤษในฟิลด์เดียวกัน
ตารางข้อมูลตัวอย่าง
CREATE TABLE tbl (`id` int, `data` varchar(9)) ; INSERT INTO tbl (`id`, `data`) VALUES (1, 'ภาษาไทย'), (2, 'English'), (3, 'การศึกษา'), (4, 'Education') ;
คำสั่ง SQL
(SELECT a.data,'th' lang FROM tbl a WHERE NOT a.data REGEXP '[A-Za-z0-9]' ) UNION ALL (SELECT b.data,'en' lang FROM tbl b WHERE b.data REGEXP '[A-Za-z0-9]' ) ORDER BY lang DESC,CONVERT(data using tis620) ASC
ผลลัพธ์
ใช้ htaccess แทนไฟล์รูปภาพที่ไม่พบ หรือไม่มี ด้วยภาพอื่น
วิธีนี้ใช้สำหรับกรณีเราไม่ต้องการเขียนโค้ด หากไม่พบไฟล์รูปที่จะแสดง ให้เอารูปอื่นมาแสดงแทน
ให้เราสร้างรูปสำหรับไว้แทนที่ไว้ที่ path ใดสักที่สมมติเช่นเป็น images และรูปที่เราเก็บอยู่ในโฟลเดอร์
uploads ให้เราสร้างไฟล์ .htaccess แล้วอัพไปไว้ที่โฟลเดอร์รูปหลัก ในที่นี้คือ uploads
แล้วกำหนดไฟล์ ดังนี้
ไฟล์ .htaccess
RewriteEngine on RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule \.(gif|jpe?g|png|bmp) /images/photoreplace.jpg [NC,L]
สมมติถ้าเรียกไปที่ไฟล์รูปที่ไม่มี เช่น https://www.example.com/uploads/notpic.jpg
รูปจะไปดึงจากไฟล์ https://www.example.com/images/photoreplace.jpg มาแสดงแทน
-
หมวดบทความทั้งหมด 34 AJAX Learning 25 Android Learning 46 Angular 16 AngularJs 21 Bootstrap 40 CodeIgniter 27 CodeIgniter 4 48 CSS Learning 16 Dart 8 Dev Tools 19 Expressjs 4 Firebase 75 Flutter 20 HTML5 10 Ionic Native 42 Ionicframework 80 Javascript Learning 231 jQuery Learning 10 jQuery Mobile 18 Line Dev 34 MySQL Learning 3 NodeJs 14 OpenCart 4 OpenCart 3 19 Phonegap 177 PHP Learning 8 Slim 22 VueJS 1 Web Service 5 อื่นๆ
- ถามปัญหาการเขียนโปรแกรม
- จากบทความ: การสร้างปุ่มยืนยันให้กับ ลิ้งค์ ด้วย function return confirm() ตอบ 2 อ่าน 1353
- textbox array 2 ตัว มาลบกัน แล้วให้แสดงค่าใน textbox array ผลลัพธ์ เพื่อเอาไปบันทึกข้อมูล ตอบ 1 อ่าน 1978
- fullcalendar 3.6.2 วันที่กิจกรรมไม่ครบตามจำนวนในฐานข้อมูล ตอบ 2 อ่าน 3132
- ช่วยหน่อยครับ ผมอยากทราบวิธีการเช็คไฟล์วีดีโอหน่อยครับ ตอบ 1 อ่าน 3983
- jquery นับจำนวนเลือก radio array อย่างน้อย 1 ตัว แต่ไม่เกิน 3 ตอบ 10 อ่าน 4429
- จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี ตอบ 1 อ่าน 3778
- ออกรายงานสรุปด้วยกราฟครับ ขอคำแนะนำ แนวทางด้วยครับ ตอบ 2 อ่าน 2546
- ส่งค่าที่เป็นเท้กบ๊อกอาเรย์จากการเลือก ไปไม่ได้ครับ ตอบ 3 อ่าน 2353
- ขอวิธีการดึงข่าว RSS Feed ด้วย PHP จากเว็บไซต์อื่นมาแสดง โดยที่เปิดลิงก์เป็น URL เว็บไซต์ของเรา ตอบ 1 อ่าน 1404
- ส่งค่าตัวแปรอีกตัวนึง ในฟังก์ชั่น ajax ตอบ 3 อ่าน 1532
- ตอบคำถามกลับล่าสุด
- เล่น audio เมื่อ play เสร็จแล้วหรือเล่นไปได้สัก 5 นาที จะขึ้นลิงค์ให้กดไปหน้าอื่น ตอบ 8 อ่าน 2803
- ช่วยหน่อยครับ ติดปัญหาเกี่ยวกับการเปิด pdf บน server จริงครับ (HTTP error 500) ตอบ 3 อ่าน 2720
- สอบถามเกี่ยวกับวิธีเขียน upload file ไปยัง domain อื่นหน่อยครับ ตอบ 1 อ่าน 1479
- วิธีการส่งค่าวันที่ โดยการคลิ๊กเลือกวันที่นั้นๆ จากปฏิทิน fullcalendar ตอบ 1 อ่าน 1668
- ขอตัวอย่าง Flutter insert to mysql ตอบ 1 อ่าน 1458
- ช่วยหน่อยครับติดปัญหาเกี่ยวกับการเขียน array หลายชั่นครับ ตอบ 1 อ่าน 1336
- ทำโปรเจค laravel อยากทำ api login line google ตอบ 1 อ่าน 1307
ขอบคุณทุกการสนับสนุน