Thursday, April 22, 2021

IONIC PASS PARAMETER

 To pass parameter to next page, first we need to make sure that we have 2 pages which is page from and page to. In page from ts file, you have to import router at the top of the file as below.

import { RouterNavigationExtras } from '@angular/router';

Make sure to load in constructor also.

constructor(private router: Router) {
    
}

Then create one function to navigate to another page with parameter.

somefunction(menu) {

    // this.message = name;

    let navigationExtras: NavigationExtras = {
      queryParams: {
        title: this.message,
        data: JSON.stringify(menu)
      }
    };

    this.router.navigate([menu.link], navigationExtras);
    // alert(this.message);

}

Those function will be called in html file and the menu is based on data that will be passed. Below I provide full code in page from ts file.

import { Component } from '@angular/core';
import { RouterNavigationExtras } from '@angular/router';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {

  message = 'Testing';

  menus = [
    {
      name: 'menu 1',
      desc: 'desc 1',
      color: 'primary',
      link: '/dummy',
      image: '',
    },
    {
      name: 'storage',
      desc: 'desc 2',
      color: 'success',
      link: '/storage',
      image: '',
    },
    {
      name: 'Users',
      desc: 'desc 3',
      color: 'tertiary',
      link: '/users',
      image: '',
    },
    {
      name: 'menu 3',
      desc: 'desc 3',
      color: 'warning',
      link: '/dummy',
      image: '',
    },
  ];

  constructor(private router: Router) {
    // this.somefunction();
  }

  somefunction(menu) {

    // this.message = name;

    let navigationExtras: NavigationExtras = {
      queryParams: {
        title: this.message,
        data: JSON.stringify(menu)
      }
    };

    this.router.navigate([menu.link], navigationExtras);
    // alert(this.message);

  }
}



Then we will proceed with 2nd page which is page to. In this page ts file, we will get the parameter that have been submit to this page. First, you also have to import router at the top of the file as below.

import { ActivatedRouteRouter } from '@angular/router';

Make sure to load in constructor also and get the parameter inside the constructor as below.

constructor(
    private route: ActivatedRoute
    private router: Router,
    private helper: HelperService,
  ) {

    this.route.queryParams.subscribe(params => {
      if (params && params.title && params.data) {
        this.title = params.title
        this.data = JSON.parse(params.data);
      }
    });

   }

below is the full code for second page.

import { ComponentOnInit } from '@angular/core';
import { ActivatedRouteRouter } from '@angular/router';
import { HelperService } from '../services/helper.service';

@Component({
  selector: 'app-dummy',
  templateUrl: './dummy.page.html',
  styleUrls: ['./dummy.page.scss'],
})
export class DummyPage implements OnInit {

  title;
  data;
  loading;

  constructor(
    private route: ActivatedRoute
    private router: Router,
    private helper: HelperService,
  ) {

    this.route.queryParams.subscribe(params => {
      if (params && params.title && params.data) {
        this.title = params.title
        this.data = JSON.parse(params.data);
      }
    });

   }

  ngOnInit() {
    // this.presentToast('Trasyy uihdwiue jk', 500);
    // this.presentLoading();
    this.helper.presentLoading();

    setTimeout(() => {
      this.helper.dismissLoading();
      this.helper.presentAlert();
    }, 2000);
  }

}

Thursday, March 25, 2021

IONIC BASIC SETUP

 Before you start to install ionic, make sure you computer have node js and npm. Click here to download node js.

After that open your cmd and download ionic using npm. Make sure to open directory where you install the nodejs that contain npm.


$ npm install -g @ionic/cli



After you have install ionic, open a directory where you want to keep your project in cmd. Then run the script below. This script need to run everytime you want to create a new project.


ionic start

- select js framework. exp : angular

- name your project. exp : myapp

- select template. exp : blank


You have done created your project !!! Then open your project directory to open serve to preview project.


ionic serve

- after serve is running, you can view in browser or you can open in vs code.

- ctrl + shift + p > search ionic preview (in vscode)



To add new page for your app, open project directory and run :


ionic g page 'page name'  remove ''

or

ionic g




cmd script summary ...


npm install -g @ionic/cli

ionic start

ionic serve

ionic g page 'page name'  remove ''

ionic g


Monday, November 2, 2020

SERVER FORCE HTTP to HTTPS

 Add this script inside .htaccess file to force https.


RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Monday, July 20, 2020

CODEIGNITER IMAGE AUTO ROTATE WHEN UPLOAD USING MOBILE

I have a project that can upload image. During I upload an image using desktop, the image if fine. But if I upload an image using my phone, the image will rotated automatically.

Solution

1) You need to add a new library.The library automatically rotates the provided image based on the embedded EXIF data. I use it in my projects to correctly display images uploaded from mobile devices

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* @file application/libraries/Image_autorotate.php
*/
class Image_autorotate
{
    function __construct($params = NULL) {
    
        if (!is_array($params) || empty($params)) return FALSE;
        
        $filepath = $params['filepath'];
        $exif = @exif_read_data($filepath);
        
        if (empty($exif['Orientation'])) return FALSE;
        
        $CI =& get_instance();
        $CI->load->library('image_lib');
        
        $config['image_library'= 'gd2';
        $config['source_image'= $filepath;
        
        $oris = array();
        
        switch($exif['Orientation'])
        {
        case 1// no need to perform any changes
        break;

        case 2// horizontal flip
        $oris[] = 'hor';
        break;
                                        
        case 3// 180 rotate left
        $oris[] = '180';
        break;
                            
        case 4// vertical flip
        $oris[] = 'ver';
        break;
                        
        case 5// vertical flip + 90 rotate right
        $oris[] = 'ver';
        $oris[] = '270';
        break;
                        
        case 6// 90 rotate right
        $oris[] = '270';
        break;
                        
        case 7// horizontal flip + 90 rotate right
        $oris[] = 'hor';
        $oris[] = '270';
        break;
                        
        case 8// 90 rotate left
        $oris[] = '90';
        break;
        
        defaultbreak;
        }
        
        foreach ($oris as $ori) {
        $config['rotation_angle'= $ori;
        $CI->image_lib->initialize($config);
        $CI->image_lib->rotate();
        }
    }
}
// END class Image_autorotate
/* End of file Image_autorotate.php */
/* Location: ./application/libraries/Image_autorotate.php */
Place this file inside library folder.

2)  call this library after you have upload an image.

$imageinfo = $this->upload->data();
$full_path = $imageinfo['full_path'];

// check EXIF and autorotate if needed
$this->load->library('image_autorotate', array('filepath' => $full_path));


Reference :-

Saturday, April 25, 2020

CodeIgniter PHP : Merge Array

There are condition when we have two array and want to combine them. In PHP, we can use function array_merge() to merge those to array.
Below is the example how to use the function.


<?php
    $a1=array("a"=>"red","b"=>"green");
    $a2=array("c"=>"blue","b"=>"yellow");
    print_r(array_merge($a1,$a2));
?>

Result :
Array ([a]=>red [b]=>yellow [c]=>blue)

As you can see there are two value for key=b. But the result is going to print the 2nd array array as the value.

Tuesday, October 15, 2019

MySQL Insert or Update column with value from another table

INSERT

Sometimes, there was an old data that need to be transfer from old table to new table. However, not all fields are required to transfer. So, below is the example of two tables and fields, and the sql statement.
tableOld
id     name     ic_no     phone_no     address
tableNew
id     name     ic_no     phone_no     

MySQL statement

INSERT INTO tableNew (name,ic_no,phone_no)
  SELECT name,ic_no,phone_no FROM tableOld 
  WHERE tableOld.id > 1;
This SQL statement is called as insert into select.


UPDATE

In this case, I want to get value from table1 to update into table2 based on certain condition or value.
For example :-
table1
id     name     ic_no     phone_no
table2
id     name     phone_no     address
I want to get phone_no from table1 and update the value phone_no into table2 with condition table2.name = table1.name.

MySQL statement
UPDATE table2 t2 
        INNER JOIN table1 t1 
             ON t2.name = t1.name
SET t2.ic_no= t1.ic_no
WHERE t2.name = t1.name;

Tuesday, February 26, 2019

Codeigniter How to make Onclick showHide Radio Button Function (Javascript)


All the code will be coded inside view file. First make your radio button.

<input type="radio" id="expense" name="transaction" onclick="ShowHideDiv()" checked /><?php echo lang('title_expense')?>
<input type="radio" id="income" name="transaction" onclick="ShowHideDiv()" /><?php echo lang('title_income')?>

Make sure the radio button have an id and the same name. Also put onclick that equal to function that you want. For this project we want ShowHideDiv  func.

Then make the div that you want to show or hide.

<div id="expense_list" style="block: none">
//anything that you want to put inside this div
//it can be table or something
</div >

<div id="income_list" style="show: none">
//anything that you want to put inside this div
//it can be table or something
</div >


Lastly make the jquery script to make the ShowHideDiv() func.

<script type="text/javascript">
function ShowHideDiv() {
    var expense = document.getElementById("expense");
    var income = document.getElementById("income");
    var expense_list = document.getElementById("expense_list");
    var income_list = document.getElementById("income_list");
    expense_list.style.display = expense.checked ? "block" : "none";
    income_list.style.display = income.checked ? "block" : "none";
}
</script>


"block" : "none"  - means the func to hide the content is block.
"show" : "none"  - means the func will show nothing.(hide content)

IONIC PASS PARAMETER

 To pass parameter to next page, first we need to make sure that we have 2 pages which is page from and page to. In page from ts file, you h...