PHP
  • Introduction
  • PHPMailer
  • UploadFile
  • PHP link MySQL to insert
  • rand功能
  • Create GUID by random
  • Coding problem
  • PHP+MySQL樹狀圖
  • JWT(Json Web Token)
  • 小功能
    • array_push
    • array_chunk
  • 遞迴
  • 生成json
  • 註解方式
  • Call API
  • google url shortener
  • 身分證字號驗證
  • google maps api 取兩點路線規劃的距離
  • 兩點座標的直線距離
  • 將傳入的陣列重新根據某個欄位做排序
  • 抓取最準的IP,從近到遠做判斷
  • 利用curl推播ios,用ios的token
  • 在local端onServer
Powered by GitBook
On this page
  • 產出MySQL
  • 產出PHP

Was this helpful?

PHP+MySQL樹狀圖

PreviousCoding problemNextJWT(Json Web Token)

Last updated 5 years ago

Was this helpful?

產出MySQL

首先因為我們是要動態產出這些選單,所以我們要先長好我們的database,大概長這樣:

產出PHP

由於我是用laravel這個framework以下全部都會是laravel的code,我們現在必須先連接到那個table:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class NewClass extends Model
{

    public $table = 'newclass';
    public $primaryKey = 'id';
    public $incrementing = true;
    public $timestamps = false;

}

再來產出抓取這個資料庫資料的repository:

<?php
namespace App\Repositories;
use Illuminate\Http\Request;
use App\Models\NewClass;
use Carbon\Carbon;

class NewClassRepository {
    /**
   * 注入的 NewClass model
   * @var type
   */
  protected $model;
  public function __construct(NewClass $model) {
    $this->model = $model;
  }

  public static function withNew() {
    return new NewClassRepository(new NewClass());
  }

    public function getMainData() {
    return $this->model->get();
  }
}

再來就是重頭戲controller的部份:

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Repositories\NewClassRepository;

class TestClassController extends Controller {
    protected $repository;
  public function __construct(NewClassRepository $repository) {
      $this->repository = $repository;
  }

  private static $array; // 從DB查詢出的所有分類資料
  private static $str = ""; // 串接字串用

  public function classData() {
    // 到repository抓資料
    $result = $this->repository->getMainData();

    foreach($result as $data){
      TestClassController::$array[] = array($data->id,$data->f_id,$data->name);
    }

    TestClassController::$str = $this->classMenu();
    $re = TestClassController::$str;
    return View('test',compact('re'));
  }

  /**
   * 編輯字串要回傳到view的
   * @param  integer $f_id [父層]
   */
  public function classMenu($f_id =0){
    for($i=0;$i<count(TestClassController::$array);$i++){

      if(TestClassController::$array[$i][1]==$f_id){
        TestClassController::$str = TestClassController::$str."<ul>";

        TestClassController::$str = TestClassController::$str."<li>";
        // 列出它的名稱
        TestClassController::$str = TestClassController::$str.TestClassController::$array[$i][2];
        TestClassController::$str = TestClassController::$str."</li>";
        // 順便找它的子層直接列出來
        $this->classMenu(TestClassController::$array[$i][0]);

        TestClassController::$str = TestClassController::$str."</ul>";
      }
    }
    return TestClassController::$str;
  }
}