fork download
  1. <?php
  2.  
  3. try {
  4.  
  5. switch (true) {
  6. case !isset($_REQUEST['date']):
  7. case !is_string($date = $_REQUEST['date']):
  8. throw new Exception('日付を指定してください');
  9. }
  10.  
  11. $dbname = '';
  12. $dbuser = '';
  13. $dbpass = '';
  14.  
  15. $pdo = new PDO("mysql:dbname={$dbname};host=localhost;charset=utf8", $dbuser, $dbpass);
  16. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  17.  
  18. $sql = 'SELECT * FROM tableA JOIN tableB ON tableA.staff_id = tableB.staff_num WHERE s_date = ?';
  19. $stmt = $pdo->prepare($sql);
  20. $stmt->execute(array($date));
  21. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  22.  
  23. array_walk_recursive($rows, function (&$v, $k) {
  24. if (strpos($k, 'cell') !== 0) {
  25. return;
  26. }
  27. $values = explode(',', $v, 3);
  28. if (!isset($values[2])) {
  29. $values = array_fill(0, 3, '-');
  30. }
  31. $keys = array('time', 'place', 'flag');
  32. $v = array_combine($keys, $values);
  33. });
  34.  
  35. } catch (Exception $e) {
  36.  
  37. $error = htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');
  38.  
  39. }
  40.  
  41. ?>
  42. <!DOCTYPE html>
  43. <html>
  44. <head>
  45. <meta charset="UTF-8">
  46. <title>Test</title>
  47. </head>
  48. <body>
  49. <?php if (isset($error)): ?>
  50. <p><?=$error?></p>
  51. <?php elseif (!$rows): ?>
  52. <p>データが見つかりませんでした</p>
  53. <?php else: ?>
  54. <?php foreach ($rows as $row): ?>
  55. <table border>
  56. <caption><?=$row['staff_name']?>(<?=$row['s_date']?>)</caption>
  57. <tr>
  58. <th>場所</th>
  59. <th>開始時間</th>
  60. </tr>
  61. <?php foreach (array_slice($row, 2, -3) as $r): ?>
  62. <?php if ($r['time'] === '-') { continue; }?>
  63. <tr class="style<?=$r['flag']?>">
  64. <td><?=$r['place']?></td>
  65. <td><?=$r['time']?></td>
  66. </tr>
  67. <?php endforeach; ?>
  68. </table>
  69. <?php endforeach; ?>
  70. <?php endif; ?>
  71. </body>
  72. </html>
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<p>日付を指定してください</p>
</body>
</html>