質問するログイン新規登録

質問編集履歴

4

テスト-Dを追加

2017/08/03 05:07

投稿

daisaku64
daisaku64

スコア16

title CHANGED
File without changes
body CHANGED
@@ -306,4 +306,8 @@
306
306
  ```
307
307
 
308
308
  ### テスト-C のSQLのみ実行
309
- ![イメージ説明](8e29148648bbf00c98d29684381e3853.png)
309
+ ![イメージ説明](8e29148648bbf00c98d29684381e3853.png)
310
+
311
+ ### テスト-D
312
+ ![イメージ説明](16397b733bc83328397eefda239bcae1.png)
313
+ 赤い部分に</li>

3

SQLの画像を追加しました

2017/08/03 05:07

投稿

daisaku64
daisaku64

スコア16

title CHANGED
File without changes
body CHANGED
@@ -249,10 +249,10 @@
249
249
  $pdo = new PDO($dsn, $db_user,$db_pass);
250
250
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
251
251
  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
252
- $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';
252
+ $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';
253
253
  $pdo->query($sql);
254
- $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
254
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
255
- print get_tree($rows);
255
+ print get_tree($rows);
256
256
  } catch(PDOException $Exception) {
257
257
  die('エラー :' . $Exception->getMessage());
258
258
  }
@@ -303,4 +303,7 @@
303
303
  ob_end_clean();
304
304
  return $str;
305
305
  }
306
- ```
306
+ ```
307
+
308
+ ### テスト-C のSQLのみ実行
309
+ ![イメージ説明](8e29148648bbf00c98d29684381e3853.png)

2

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

2017/08/02 04:41

投稿

daisaku64
daisaku64

スコア16

title CHANGED
File without changes
body CHANGED
@@ -233,4 +233,74 @@
233
233
  ![イメージ説明](531c28b858b5b3ec3639bcb9beacaf7e.png)
234
234
 
235
235
  ### テスト-B
236
- ![イメージ説明](9bcb0ee1163a0f0bb299225db840ec34.png)
236
+ ![イメージ説明](9bcb0ee1163a0f0bb299225db840ec34.png)
237
+
238
+ ### テストーC
239
+ ```PHP
240
+ $db_user = "***"; // ユーザー名
241
+ $db_pass = "***"; // パスワード
242
+ $db_host = "***"; // ホスト名
243
+ $db_name = "***"; // データベース名
244
+ $db_type = "mysql"; // データベースの種類
245
+
246
+ $dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
247
+
248
+ try {
249
+ $pdo = new PDO($dsn, $db_user,$db_pass);
250
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
251
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
252
+ $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';
253
+ $pdo->query($sql);
254
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
255
+ print get_tree($rows);
256
+ } catch(PDOException $Exception) {
257
+ die('エラー :' . $Exception->getMessage());
258
+ }
259
+
260
+ function get_tree($rows){
261
+ $indent=3;
262
+ $l1=0;
263
+ ob_start();
264
+ foreach($rows as $key=>$row){
265
+ $l2=$row["level"];
266
+ $l3=($key<count($rows)-1)?$rows[$key+1]["level"]:0;
267
+ if($l1>=$l2){
268
+ print str_repeat(" ",($l2-1)*$indent);
269
+ }
270
+ if($l1<$l2){
271
+ print PHP_EOL;
272
+ print str_repeat(" ",($l2-1)*$indent);
273
+ $class=$row["level"]>1?" class=\"level{$row["level"]}\"":"";
274
+ print "<ul{$class}>".PHP_EOL;
275
+ print str_repeat(" ",($l2-1)*$indent);
276
+ }
277
+ print "<li>";
278
+ if($row["link"]==1 and $row["url"]!==""){
279
+ /* item-arrowクラスの付け方がおかしかったので修正 */
280
+ $class=$row["child"]>0?" class=\"item-arrow\"":"";
281
+ print "<a href=\"{$row["url"]}\"{$class}>{$row["name"]}</a>";
282
+ }else{
283
+ print $row["name"];
284
+ }
285
+ if($row["child"]>0) print "(".$row["child"].")";
286
+ if($l2==$l3){
287
+ print "</li>".PHP_EOL;;
288
+ }
289
+ if($l2>$l3){
290
+ print "</li>".PHP_EOL;
291
+ for($i=$l2-$l3-1;$i>0;$i--){
292
+ print str_repeat(" ",($i)*$indent);
293
+ print "</ul>".PHP_EOL;
294
+ print str_repeat(" ",($i-1)*$indent);
295
+ print "</li>".PHP_EOL;
296
+ }
297
+ print str_repeat(" ",($l3)*$indent);
298
+ print "</ul>".PHP_EOL;
299
+ }
300
+ $l1=$l2;
301
+ }
302
+ $str=ob_get_contents();
303
+ ob_end_clean();
304
+ return $str;
305
+ }
306
+ ```

1

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

2017/08/02 04:29

投稿

daisaku64
daisaku64

スコア16

title CHANGED
File without changes
body CHANGED
@@ -227,4 +227,10 @@
227
227
  ```
228
228
  tomari_perform様に教えていただいたsqlに追加したのですが
229
229
  どこが悪いのか BBB、CCCにリンクが付きません。
230
- よろしくお願い致します。
230
+ よろしくお願い致します。
231
+
232
+ ### テスト-A
233
+ ![イメージ説明](531c28b858b5b3ec3639bcb9beacaf7e.png)
234
+
235
+ ### テスト-B
236
+ ![イメージ説明](9bcb0ee1163a0f0bb299225db840ec34.png)