[ create a new paste ] login | about

Link: http://codepad.org/HeIMjkbl    [ raw code | fork ]

PHP, pasted on Sep 25:
<?php

/* HTML特殊文字エスケープ */
function h($input) {
    return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
}

try {
    
    // 設定
    $dsn = 'mysql:dbname=test;host=127.0.0.1;charset=utf8';
    $username = 'root';
    $password = '';
    $options = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    );
    
    // 接続してクエリ実行
    $pdo = new PDO($dsn, $username, $password, $options);
    $stmt = $pdo->query('SELECT yyyymm, category, title, author FROM mymagazine ORDER BY magazinecode');
    
    // 結果を取り出して表示しやすいようにセットしていく
    $data = array();
    foreach ($stmt as $row) {
        if ($row['title'] === '') {
            $data[$row['yyyymm']][$row['category']] = '';
        } elseif ($row['category'] === '') {
            $data[$row['yyyymm']][$row['title']] = $row['author'];
        } else {
            $data[$row['yyyymm']][$row['category']][$row['title']] = $row['author'];
        }
    }
    
} catch (PDOException $e) {
    
    // 例外をキャッチ
    $message = $e->getMessage();
    
}

// ヘッダー送信
header('Content-Type: text/html; charset=utf-8');

?>
<!DOCTYPE html>
<html>
  <head>
    <title>My Magazine</title>
    <style>
      dd { margin-left: -5px; }
      dt { font-weight: normal; }
      ul.invisible { list-style-type: none; }
      ul.invisible>li { margin-bottom: 10px; }
    </style>
  </head>
  <body>
<?php if (isset($message)): ?>
    <p><?=h($message)?></p>
<?php endif; ?>
<?php if (!empty($data)): ?>
<?php foreach ($data as $date => $child1): ?>
    <p>
      <dl>
        <dt><?=h($date)?></dt>
        <dd>
          <ul class="invisible">
<?php foreach ($child1 as $title => $child2): ?>
<?php if (is_array($child2)): ?>
            <li>
              <?=h($title)."\n"?>
              <ul>
<?php foreach ($child2 as $caption => $author): ?>
                <li><?=h($caption.' '.$author)?></li>
<?php endforeach; ?>
              </ul>
            </li>
<?php elseif ($child2 === ''): ?>
            <li><?=h($title)?></li>
<?php else: ?>
            <li><?=h($title.' '.$child2)?></li>
<?php endif; ?>
<?php endforeach; ?>
          </ul>
        </dd>
      </dl>
    </p>
<?php endforeach; ?>
<?php endif; ?>
  </body>
</html>


Create a new paste based on this one


Comments: