Thứ Ba, 18 tháng 11, 2014

MySql - Import DB bằng terminal trong Unbuntu

MySql - Import DB bằng terminal trong Unbuntu


---o0o---

Link bài viết gốc

Dùng câu lệnh sau


    mysql -u username -ppassword databasename < filename.sql
    

Với các thành phần tương ứng

  • username: username đăng nhập mysql, mặc định là root
  • password: password đăng nhập mysql, mặc định là mysql trên Ubuntu
  • filename.sql: tên file muốn import (chú ý đường dẫn trỏ tới file)

Chủ Nhật, 16 tháng 11, 2014

Magento - Ảnh placeholder của sản phẩm

Magento - Ảnh placeholder của sản phẩm


---o0o---


1. Thay đổi ảnh placeholder mặc định của magento

Cách 1:Thay trực tiếp bằng cách lưu đè ảnh mới tại thư mục


    skin/frontend/base/default/images/catalog/product/placeholder
    

Tại đây có 3 cỡ ảnh là:

  • thumbnail.jpg
    • Kích thước: 50 x 50px
    • Hiển thị ở vị trí ảnh thumb của sản phẩm trong product detail pages, shopping cart, email & Related products
  • small_image.jpg
    • Kích thước: 135 x 135px
    • Hiển thị ở category pages
  • image.jpg
    • Kích thước: 262 x 262px
    • là ảnh chính của sản phẩm ở trang product detail

Hiển thị ảnh bằng dòng code sau


    Mage::getModel('catalog/product')->getSmallImageUrl(width,height);

    

Cách 2: Thay đổi ảnh bằng cách upload ảnh mới từ admin


    System -> Configuration
    Catalog -> Catalog -> Product Image Placeholders
    

Tại đây có 3 trường để upload ảnh thay thế tương ứng 3 loại ảnh placeholder

Ảnh upload được lưu tại


     media/catalog/product/placeholder/default
    

Thứ Tư, 5 tháng 11, 2014

Magento - Tạo 1 attribute mới cho category bằng cách update scripts

Magento - Tạo 1 attribute mới cho category bằng cách update scripts


---o0o---


Để dùng cách này tạo attribute ta cần 1 module mới là AddCategoryAttribute

Đầu tiên trong /app/etc/modules tạo file SM_AddCategoryAttribute.xml để khai báo với Magento

    <?xml version="1.0"?>
    <config>
        <modules>
            <SM_Addcategoryattribute>
                <active>true</active>
                <codePool>local</codePool>
            </SM_Addcategoryattribute>
        </modules>
    </config>
    

Tiếp theo trong app/local tạo thư mục SM/Addcategoryattribute gồm các file và thư mục con như ảnh dưới


    /app/code/local/SM/Addcategoryattribute/etc/config.xml
    /app/code/local/SM/Addcategoryattribute/sql/add_category_attribute


    
    

Nội dung của /app/code/local/SM/Addcategoryattribute/etc/config.xml


     <?xml version="1.0"?>
        <config>
            <modules>
                <SM_Addcategoryattribute>
                     <version>0.0.1</version>
                </SM_Addcategoryattribute>
            </modules>

            <global>
                <resources>
                    <add_category_attribute>
                        <setup>
                            <module>SM_Addcategoryattribute</module>
                            <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
                        </setup>
                        <connection>
                            <use>core_setup</use>
                        </connection>
                    </add_category_attribute>
                    <add_category_attribute_write>
                        <connection>
                            <use>core_write</use>
                        </connection>
                    </add_category_attribute_write>
                    <add_category_attribute_read>
                        <connection>
                            <use>core_read</use>
                        </connection>
                    </add_category_attribute_read>
                </resources>
            </global>
        </config>
    

Code để update scripts ở file /app/code/local/SM/Addcategoryattribute/sql/add_category_attribute/mysql4-install-0.0.1.php


    <?php
    $this->startSetup();

    $this->addAttribute('catalog_category', 'style_select', array(
        'group'         => 'General Information',
        'input'         => 'select',
        'type'          => 'varchar',
        'label'         => 'Style Select',
        'backend'       => '',
        'visible'       => true,
        'required'      => false,
        'visible_on_front' => true,
        'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'default'       => 0,
        'source'        => 'eav/entity_attribute_source_boolean'
    ));

    $this->endSetup();
    ?>

    

Khi muốn thêm 1 attribute tạo file mới có định dạng mysql4-upgrade-0.0.[old]-0.0.[new].php với

[old] là số version cũ

[new] là số version tiếp theo, Tương đương với việc sửa dòng


    <version>0.0.[new]</version>
    

ở file /app/code/local/SM/Addcategoryattribute/etc/config.xml

Lấy địa chỉ IP của client bằng PHP

Lấy địa chỉ IP của client bằng PHP


---o0o---


Link bài viết gốc

Cách đơn giản nhất để lấy được địa chỉ IP của người dùng là sử dụng

$_SERVER['REMOTE_ADDR'] hoặc $_SERVER['REMOTE_HOST']

Tuy nhiên đôi khi kết quả mà biến này trả về lại không đúng địa chỉ IP mà ta muốn nên ta có thể sử dụng vài biến sever khác để đạt được yêu cầu

Dưới đây là 2 cách lấy được giá trị IP bằng getenv() và $_SERVER

1. getenv()

getenv() dùng để lấy các giá trị của biến môi trường của apache trong PHP, để hiểu kĩ hơn, bạn có thể xem tại đây

    <?php
    function get_client_ip() {
        $ipaddress = '';
        if (getenv('HTTP_CLIENT_IP'))
            $ipaddress = getenv('HTTP_CLIENT_IP');
        else if(getenv('HTTP_X_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
        else if(getenv('HTTP_X_FORWARDED'))
            $ipaddress = getenv('HTTP_X_FORWARDED');
        else if(getenv('HTTP_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
        else if(getenv('HTTP_FORWARDED'))
            $ipaddress = getenv('HTTP_FORWARDED');
        else if(getenv('REMOTE_ADDR'))
            $ipaddress = getenv('REMOTE_ADDR');
        else
            $ipaddress = 'UNKNOWN';
        return $ipaddress;
    }
    echo 'Kết quả thu được IP là: '. get_client_ip();
    ?>
    

1. $_SERVER

$_SERVER là 1 mảng gồm các biến server mà PHP tự tạo ra, chi tiết xin mời bạn xem ở đây

    <?php
    function get_client_ip_sever() {
        $ipaddress = '';
        if (isset($_SERVER['HTTP_CLIENT_IP']))
            $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
        else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
            $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_X_FORWARDED']))
            $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
        else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
            $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_FORWARDED']))
            $ipaddress = $_SERVER['HTTP_FORWARDED'];
        else if($_SERVER['REMOTE_ADDR'])
            $ipaddress = $_SERVER['REMOTE_ADDR'];
        else
            $ipaddress = 'UNKNOWN';
        return $ipaddress;
    }
    echo 'Kết quả thu được IP là: '. get_client_ip_sever();
    ?>
    

Lấy tất cả thông tin bằng hàm phpinfo()

Đếm số tổng số người truy cập và số người đang online bằng PHP&MySql

Đếm số tổng số người truy cập và số người đang online bằng PHP&MySql


---o0o---

Ý tưởng

Tạo 1 bảng tbl_analys gồm các trường: analys_id, analys_time, analys_status, analys_ip như hình dưới

analys time lưu lại thời gian cuối cùng mà người dùng tương tác với trang web.

analys_ip lưu lại ip của máy dùng để truy cập, nếu muốn bạn có thể đổi thành session hoặc cookie.

analys_status là trang thái online hay offline của người dùng.

Khi người dùng truy cập vào trang web => lấy ip của họ lưu vào bảng cùng các thông số khác. Sau 10 phút nếu anlys_time < thời gian hiện tại thì analys_status là 0 => người dùng đã offline

Có code như sau


    Lấy giá trị cho lần đầu truy cập

    <?php
    $analys_ip = $_SERVER['REMOTE_ADDR'];
    $analys_time = time();
    $analys_status = '1';
    ?>

    Thu được 1 mảng dữ liệu
    $data = array(
        'analys_ip' => $analys_ip,
        'analys_time' => $analys_time,
        'analys_status' => $analys_status
    );
    

So sánh dữ liệu trong mảng $data với dữ liệu có trong bảng theo analys_ip

Nếu chưa tồn tại ip => thêm 1 record mới

Nếu đã tồn tại ip => update record cũ

Chỉ cần count tổng record là ra được tổng số khách đã visit site

Tiếp theo ta xử lí phần đếm khách online, để làm được điều này ta cần đặt code vào footer hoặc header của trang vì đây là vị trí mà ở bất kì page nào của web đều có

Tại footer


    Show ra 2 dòng:
        Số khách đang online
        Số khách đã visit

    Tại đây ta cũng thực hiện code đếm số khách online
        + Đầu tiên, lấy ip của người dùng bằng câu lệnh
            $analys_ip = $_SERVER['REMOTE_ADDR'];
        +set 1 biến timeOut bằng thời gian hiện tại trừ đi 600, tương đương 10 phút
            $timeOut = time() - 600;
        +Lấy toàn bộ record ra và cho vào vòng foreach để thực hiện so sánh
            Nếu record có analys_ip khác analys_ip hiện tại
                thì up date lại analys_time và so sánh nó với biến $timeOut
                Nếu analys_time < $timeOut thì update status cho từng ip khác là 0 => phân tách giữa khách online và offline
            Nếu recodd có analys_ip giống thì không làm gì cả vì đã có code ở trên update lại dữ liệu của ip
    

Thứ Hai, 3 tháng 11, 2014

jQuery - Lấy val và text của select

jQuery - Lấy val và text của select


---o0o---


Link bài viết gốc cho multiple select list
Link bài viết gốc cho select list

1. Lấy giá trị của select list

Có 1 select list như sau, với mỗi lần select 1 giá trị ta sẽ lấy được value của option đó bằng jQuery


    <select id="selectList">
        <option value="one">First Option</option>
        <option value="two">Second Option</option>
        <option value="three">Third Option</option>
    </select>

    <script>
    //lấy val
    $('#selectList').val();
    //lấy text
    $('#selectList :selected').text();
    </script>
    


Note: Vì dùng jQuery nên nhớ gọi thư viện jQuery ;)


    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    

2. Lấy giá trị của multiple select list

Với mỗi lần chọn một hay nhiều giá trị, ta đều thu được val và text

Lấy tất cả val hoặc text trong 1 lần =>> trả về 1 xâu


    <select name="select_list" multiple="multiple" id="multi-selectbox">
        <option value="val1">option 1</option>
        <option value="val2">option 2</option>
        <option value="val3">option 3</option>
        <option value="val4">option 4</option>
    </select>

    <script>
        $(document).ready(function() {
            $('#multi-selectbox').change(function(){
                alert($('#multi-selectbox').val());
            });
        });
    </script>
    

Tương tự với lấy text


    $(document).ready(function() {
        $('#multi-selectbox').change(function(){
            alert($('#multi-selectbox :selected').text());
        });
    });
    

Lấy từng val và text theo thứ tự

Dùng đoạn script sau

    <script>
        $(document).ready(function() {
            $('#multi-selectbox').change(function(){
                $("#multi-selectbox option:selected").each(function() {
                    alert($(this).val());
                });
            });
        });
    </script>