質問編集履歴

4

テスト-Dを追加

2017/08/03 05:07

投稿

daisaku64
daisaku64

スコア16

test CHANGED
File without changes
test CHANGED
@@ -615,3 +615,11 @@
615
615
  ### テスト-C のSQLのみ実行
616
616
 
617
617
  ![イメージ説明](8e29148648bbf00c98d29684381e3853.png)
618
+
619
+
620
+
621
+ ### テスト-D
622
+
623
+ ![イメージ説明](16397b733bc83328397eefda239bcae1.png)
624
+
625
+ 赤い部分に</li>

3

SQLの画像を追加しました

2017/08/03 05:07

投稿

daisaku64
daisaku64

スコア16

test CHANGED
File without changes
test CHANGED
@@ -500,13 +500,13 @@
500
500
 
501
501
  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
502
502
 
503
- $sql ='SELECT name,level,url,link,(SELECT COUNT(*) FROM tbl AS t2 WHERE t2.l BETWEEN t1.l AND t1.r AND t2.level=t1.level+1) AS child FROM tbl AS t1 ORDER BY l';
503
+ $sql ='SELECT name,level,url,link,(SELECT COUNT(*) FROM tbl AS t2 WHERE t2.l BETWEEN t1.l AND t1.r AND t2.level=t1.level+1) AS child FROM tbl AS t1 ORDER BY l';
504
504
 
505
505
  $pdo->query($sql);
506
506
 
507
- $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
507
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
508
-
508
+
509
- print get_tree($rows);
509
+ print get_tree($rows);
510
510
 
511
511
  } catch(PDOException $Exception) {
512
512
 
@@ -609,3 +609,9 @@
609
609
  }
610
610
 
611
611
  ```
612
+
613
+
614
+
615
+ ### テスト-C のSQLのみ実行
616
+
617
+ ![イメージ説明](8e29148648bbf00c98d29684381e3853.png)

2

テスト-Cを追加しました

2017/08/02 04:41

投稿

daisaku64
daisaku64

スコア16

test CHANGED
File without changes
test CHANGED
@@ -469,3 +469,143 @@
469
469
  ### テスト-B
470
470
 
471
471
  ![イメージ説明](9bcb0ee1163a0f0bb299225db840ec34.png)
472
+
473
+
474
+
475
+ ### テストーC
476
+
477
+ ```PHP
478
+
479
+ $db_user = "***"; // ユーザー名
480
+
481
+ $db_pass = "***"; // パスワード
482
+
483
+ $db_host = "***"; // ホスト名
484
+
485
+ $db_name = "***"; // データベース名
486
+
487
+ $db_type = "mysql"; // データベースの種類
488
+
489
+
490
+
491
+ $dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
492
+
493
+
494
+
495
+ try {
496
+
497
+ $pdo = new PDO($dsn, $db_user,$db_pass);
498
+
499
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
500
+
501
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
502
+
503
+ $sql ='SELECT name,level,url,link,(SELECT COUNT(*) FROM tbl AS t2 WHERE t2.l BETWEEN t1.l AND t1.r AND t2.level=t1.level+1) AS child FROM tbl AS t1 ORDER BY l';
504
+
505
+ $pdo->query($sql);
506
+
507
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
508
+
509
+ print get_tree($rows);
510
+
511
+ } catch(PDOException $Exception) {
512
+
513
+ die('エラー :' . $Exception->getMessage());
514
+
515
+ }
516
+
517
+
518
+
519
+ function get_tree($rows){
520
+
521
+ $indent=3;
522
+
523
+ $l1=0;
524
+
525
+ ob_start();
526
+
527
+ foreach($rows as $key=>$row){
528
+
529
+ $l2=$row["level"];
530
+
531
+ $l3=($key<count($rows)-1)?$rows[$key+1]["level"]:0;
532
+
533
+ if($l1>=$l2){
534
+
535
+ print str_repeat(" ",($l2-1)*$indent);
536
+
537
+ }
538
+
539
+ if($l1<$l2){
540
+
541
+ print PHP_EOL;
542
+
543
+ print str_repeat(" ",($l2-1)*$indent);
544
+
545
+ $class=$row["level"]>1?" class=\"level{$row["level"]}\"":"";
546
+
547
+ print "<ul{$class}>".PHP_EOL;
548
+
549
+ print str_repeat(" ",($l2-1)*$indent);
550
+
551
+ }
552
+
553
+ print "<li>";
554
+
555
+ if($row["link"]==1 and $row["url"]!==""){
556
+
557
+ /* item-arrowクラスの付け方がおかしかったので修正 */
558
+
559
+ $class=$row["child"]>0?" class=\"item-arrow\"":"";
560
+
561
+ print "<a href=\"{$row["url"]}\"{$class}>{$row["name"]}</a>";
562
+
563
+ }else{
564
+
565
+ print $row["name"];
566
+
567
+ }
568
+
569
+ if($row["child"]>0) print "(".$row["child"].")";
570
+
571
+ if($l2==$l3){
572
+
573
+ print "</li>".PHP_EOL;;
574
+
575
+ }
576
+
577
+ if($l2>$l3){
578
+
579
+ print "</li>".PHP_EOL;
580
+
581
+ for($i=$l2-$l3-1;$i>0;$i--){
582
+
583
+ print str_repeat(" ",($i)*$indent);
584
+
585
+ print "</ul>".PHP_EOL;
586
+
587
+ print str_repeat(" ",($i-1)*$indent);
588
+
589
+ print "</li>".PHP_EOL;
590
+
591
+ }
592
+
593
+ print str_repeat(" ",($l3)*$indent);
594
+
595
+ print "</ul>".PHP_EOL;
596
+
597
+ }
598
+
599
+ $l1=$l2;
600
+
601
+ }
602
+
603
+ $str=ob_get_contents();
604
+
605
+ ob_end_clean();
606
+
607
+ return $str;
608
+
609
+ }
610
+
611
+ ```

1

テストイメージを追加しました

2017/08/02 04:29

投稿

daisaku64
daisaku64

スコア16

test CHANGED
File without changes
test CHANGED
@@ -457,3 +457,15 @@
457
457
  どこが悪いのか BBB、CCCにリンクが付きません。
458
458
 
459
459
  よろしくお願い致します。
460
+
461
+
462
+
463
+ ### テスト-A
464
+
465
+ ![イメージ説明](531c28b858b5b3ec3639bcb9beacaf7e.png)
466
+
467
+
468
+
469
+ ### テスト-B
470
+
471
+ ![イメージ説明](9bcb0ee1163a0f0bb299225db840ec34.png)