คอมพิวเตอร์และอินเตอร์เน็ต,บรรยายวิชาการ,วิจัย,ศึกษากุรอาน,E-Book

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

หลักการเขียน REST API อย่างง่าย

 



Books/REST API Design Rulebook.pdf

Thunder Client เครื่องมือทดสอบ REST API ที่อาจมาแทนที่ Postman!?

สอนสร้าง REST API ด้วย PHP & MySQL - [ Beginners ]

วันพฤหัสบดีที่ 6 พฤษภาคม พ.ศ. 2564

PHP 8.0.5 and MongDB 4.4.5 Code Snippet

 


//Connection

        $manager=new MongoDB\Driver\Manager("mongodb://root:testtest@localhost:27017");

    db='myDB';

    $collection='myCollection';


//All Data List

    $query=new MongoDB\Driver\Query([]);

    $rows=$manager->executeQuery($db.'.'.$collection, $query);

    foreach($rows as $row) {

echo $row->_id.' ';

echo $row->fname.' ';

echo $row->lname.' ';

echo "<br>";

   }


//DB List

    $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $listdatabases = new MongoDB\Driver\Command(["listDatabases" => 1]);

    $res = $mng->executeCommand("admin", $listdatabases);

    $databases = current($res->toArray());

    foreach ($databases->databases as $el) {

        echo $el->name . "<br>";

    }


//Insert

       $fname = "ดาดา";

$lname = "ยะโกะ";

        $bulk = new MongoDB\Driver\BulkWrite();

$doc = ['fname' => $fname, 'lname' => $lname];

$bulk->insert($doc);

$result = $manager->executeBulkWrite($db.'.'.$collection, $bulk);


//Filter with multiple Condition

      $filter = [ 'office_id' => array('$regex' => '12901001'),

        'occu' => array('$regex' => 'LorryDriver'),

        'dec_date' => ['$gte' => '2021-01-01']

      ]; 

      // 'dec_date' => array('$regex' => '2021-01') //เดือนเดียว

      $options = [

            'projection' => ['_id' => 0],

            //'sort' => ['office_id' => -1]

      ];

      $query = new MongoDB\Driver\Query($filter, $options);     

      $res = $mng->executeQuery($db.'.'.$collection, $query);

      $c=0;

      foreach ($res as $doc) {

 echo $doc->office_id,' ' ,$doc->dec_date,' ',$doc->fullname,'<br>';

$c++;

      } 



How to Enable Authentication on MongoDB

 

How to Enable Authentication on MongoDB

https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac

1. Start MongoDB without authentication
That’s easy, as this is the default behavior.

2. Connect to the server using the mongo shell
            $ mongo mongodb://<host>:<port>
The port numberwill likely be 27017, but for additional security, you can always change it to a different one.

3. Create the user administrator
Change to the admin database:
    > use admin
You need to create a user with the userAdminAnyDatabase role, which grants the privilege to create other users on any existing database. The following example will create the useradmin user with password “thepianohasbeendrinking”:

> db.createUser(
  {
    user: "useradmin",
    pwd: "thepianohasbeendrinking",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
Then disconnect from the mongo shell (Ctrl+D).

4. Enable authentication in mongod configuration file
Open /etc/mongod.conf with your favorite code editor and search for the following lines:

    security:
        authorization: "enabled"

หมายเหตุ : -ใน laragon อยู่ที่  mongodb/
                   -เพื่อความสะดวกในการเขียนโปรแกรมใน Notebook ให้ 
                         security:
                            authorization: "disabled"
                แต่ใน script กำหนด username/passord สำหรับการ connect ได้ เช่น

    $manager=new MongoDB\Driver\Manager("mongodb://root:testtest@localhost:27017");
    
    $db='aaa';
    $collection='a1';

    $query=new MongoDB\Driver\Query([]);
    $rows=$manager->executeQuery($db.'.'.$collection, $query);
    
    foreach($rows as $row) {
echo $row->_id.' ';
echo $row->fname.' ';
echo $row->lname.' ';
echo "<br>";
}

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

Mysql Export to JSON สำหรับนำเข้าใน MongDB


การ Export ตารางจาก Mysql เป็น JSON สำหรับนำเข้าใน MongDB

ดังนี้ 

<?php

    date_default_timezone_set('Asia/Bangkok');

    $today=date("Y-m-d_His");

    include('../../db_inc.php');

    ini_set('display_errors',0); //ปิดแสดง notice

    ini_set('memory_limit', '-1'); //ปิดจำกัด memory

    ini_set('max_execution_time', '-1'); //ปิดจำกัดเวลาประมวล

    set_time_limit(0);

    ?>

    <h3><?= str_repeat('&nbsp;', 20);?>The Adi JSON Data Coversion (version 04-05-2564)</h3>

    <br>

    <?  

    $sql_tbl = "SHOW TABLES FROM $dbname"; //SHOW Table

    $result_tbl = mysql_query($sql_tbl);

    ?>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

        Choose table name 

        <select name="mytable" >   

            <option value="" selected>&nbsp;</option>

    <?

    while ($row_tbl = mysql_fetch_row($result_tbl)) {

        echo "<option value='".$row_tbl[0]."'>".$row_tbl[0]."</option>";

    }

    ?>

        </select>

        <?= str_repeat('&nbsp;', 3);?>

        <input type="checkbox" name="showonscreen" value="showonscreen">

        Show on screen <?= str_repeat('&nbsp;', 3);?>

        <input type="checkbox" name="createjsonfile" value="createjsonfile">

        Create file <?= str_repeat('&nbsp;', 3);?>

        <input type="submit" name="submit" value="Submit Form">

    </form>

    <?

    mysql_free_result($result_tbl);

    ////////////////////END FORM//////////////////////////

    if(isset($_POST['submit'])) 

    { 

        //echo "Start data on screen listing...<br><br>";

        $mytable = $_POST['mytable'];

        $myshow = $_POST['showonscreen'];

        $mycreate = $_POST['createjsonfile'];

        //echo $myshow; die;

        $sql = "SELECT * FROM ".$mytable;  //fetch table rows from mysql db

        $result = mysql_query($sql);

        $num_rows = mysql_num_rows($result);

        $emparray = array(); //create an array

        while($row =mysql_fetch_assoc($result))

        {

            $emparray[] = $row;

        }

        if($myshow=='showonscreen'){ //display on screen when checked

            echo "<br>Start data on screen listing...".$num_rows." records<br><br>";

            echo json_encode($emparray, JSON_UNESCAPED_UNICODE); // มี JSON_UNESCAPED_UNICODE เพื่อภาษาไทย

            echo "<br><br>End of listing...<br>";

        }

        mysql_free_result($result);

        mysql_close($conn);

    }

    ////////////////END FORM SUBMIT////////////////////

    if($mycreate=='createjsonfile'){ //create json file when checked //write to json file

        $jpath = 'json_exported/';  //create this folder first by manual

        $jfile = $jpath.$mytable."_".$today.".json";

        $fp = fopen($jfile, 'w');

        fwrite($fp, json_encode($emparray, JSON_UNESCAPED_UNICODE)); // มี JSON_UNESCAPED_UNICODE เพื่อภาษาไทย

        fclose($fp);

        echo "<br>";

        echo "<br>";

        echo "<div style='position:absolute;left:10px;top:100px;width:500px;height:20px;'>";

        echo "<a href='".$jfile."'>Download JSON file by Right Click</a>";

        echo "</div>";

    }

?>

หมายเหตุ : ทดสอบแล้วโดยนำไฟล์ที่ได้แล้วน้ำเข้าด้วย MongoDB Compass

                    ใช้ไฟล์ขนาด 400000+ record เร็วมาก ใช้เวลาเพียง 25 วินาทีเท่านั้น...

วันอาทิตย์ที่ 2 พฤษภาคม พ.ศ. 2564

การ Import Data เข้าใน MongoDB


การนำเข้าข้อมูลจาก Mysql(Table) เข้าเก็บใน MongoDB(Document)
สามารถทำได้ดังนี้
1.ใช้ MongoDB Compass ดาวน์โหลดได้ที่
https://www.mongodb.com/try/download/database-tools

2.Export ข้อมูล Table เป็น JSON

3.แก้ไขไฟล์ JSON โดยตัดคำสั่ง comment ออกให้หมด เหลือข้อมูลล้วนๆ

4.เข้า MongoDB Compass แล้ว Connect

5.เลือก DB (ถ้ายังไม่มี ให้สร้าใหม่)

6.dbl-click เลือก collection ที่ต้องการ (ถ้ายังไม่มี ให้สร้าใหม่)

7.นำเข้า ด้วยการเลือกไฟล์ JSON ที่เตรียมมา

 

วันเสาร์ที่ 1 พฤษภาคม พ.ศ. 2564

Laragon PHP8-MongDB-nginX

 

การใช้ Laragon PHP8-MongDB-nginX
เพื่อมิให้ไปรบกวนกับของที่มีอยู่เดิม เช่น AppServ หรือ XAMPP
-กำหนดใช้ port ของ nginX เป็น 8083
-กำหนดใช้ port ของ MongoDB เป็น 27017 (เป็นค่าDefaultอยู่แล้ว)

Download
Laragon
https://laragon.org/download/index.html

MonoDB
https://www.mongodb.com/try/download/community

RoboMongo
https://robomongo.org/download

PHP 8
https://windows.php.net/download#php-8.0

PHP 8 MongoDB dll
https://pecl.php.net/package/mongodb/1.9.1/windows


VDO Tutorial
https://www.youtube.com/watch?v=P0ahcFoMwnM
https://www.youtube.com/watch?v=2xwkSYB3ax0
https://www.youtube.com/watch?v=vviGLB5hmuk

Cara Menambahkan Database MongoDB di Laragon
https://www.youtube.com/watch?v=EsFGBZCrzSk

Sample Project
https://www.sitepoint.com/building-simple-blog-app-mongodb-php/