プログラミング初心者です。global変数を使用しないようにするためにクラス変数を使用してみたのですが、「このページは動作していません」と表示されてしまいます。最終的にはクラスを使用して、global変数を使用しない形にしたいです。わかる方いたらよろしくお願い致します。クラスを使用した形のコードと、globalを使用して正常に動いていた時のコードを載せさせて頂きます。
以下がクラス変数を使用したcomment.phpとmodel.phpのコードです。
- comment.php
php
1<?php 2 require('model.php'); 3 require('template.html'); 4 5 6 7 if(isset($_POST['comment'])){ 8 print('投稿しました<br>'); 9 Db->inputdb(new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root')); 10 11 }else{ 12 13 } 14 15 16 if(isset($_REQUEST['page']) && is_numeric($_REQUEST['page'])){ 17 $page=$_REQUEST['page']; 18 }else{ 19 $page=1; 20 } 21 $start=5*($page-1); 22 Db->outputdb(new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root')); 23 24 //コメント、時間を繰り返し表示 25 while($comment=$comments->fetch()){ 26 print('<p>'); 27 print($comment['comment']); 28 print('</p>'); 29 30 print('<time>'); 31 print($comment['created_at']); 32 print('</time>'); 33 print('<hr>'); 34 } 35 36 37 ////2ページ目以降なら前のページを表示する(1ページ目は表示しない) 38 if($page>=2){ 39 40 print('<a href="comment.php?page='.($page-1).'">前へ</a >'); 41 } 42 43 //最終ページは表示コメント数/5の繰り上げで表示 44 Db->countdb(new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root')); 45 46 $max_page=ceil($count['cnt']/5); 47 //現在のページ<最終ページなら次ページを表示する 48 if($page<$max_page){ 49 print('<a href="comment.php?page='.($page+1).'">次へ</a>'); 50 } 51 52?>
- model.php
php
1<?php 2 3try{ 4 $db=new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root'); 5 6 7}catch(PDOException $e){ 8 echo 'DB接続エラー:'.$e->getMessage(); 9} 10 11Class Db{ 12//プロパティを設定 13 public static $statement=$db->prepare('INSERT INTO comments SET comment=?, created_at=NOW()'); 14 public static $comments=$db->prepare('SELECT * FROM comments ORDER BY id DESC LIMIT ?,5'); 15 public static $counts=$db->query('SELECT COUNT(*) AS cnt FROM comments'); 16 public static $count=$counts->fetch(); 17//メソッドを設定 18 19public static function inputdb($db){ 20 //コメントをデータベースに登録 21 Db::$statement; 22 $statement->execute(array($_POST['comment'])); 23} 24 25public static function outputdb($db){ 26 //コメントをデータベースから取り出し 27 global $start; 28 Db::$comments; 29 $comments->bindParam(1,$start,PDO::PARAM_INT); 30 $comments->execute(); 31} 32 33public static function countdb($db){ 34 Db::$counts; 35 Db::$count; 36} 37 38} 39 40?>
そして以下が、global変数を使用していた時のコードです。
- comment.php
php
1<?php 2 require('model.php'); 3 require('template.html'); 4 5 6 7 if(isset($_POST['comment'])){ 8 print('投稿しました<br>'); 9 inputdb(new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root')); 10 11 }else{ 12 13 } 14 15 16 if(isset($_REQUEST['page']) && is_numeric($_REQUEST['page'])){ 17 $page=$_REQUEST['page']; 18 }else{ 19 $page=1; 20 } 21 $start=5*($page-1); 22 outputdb(new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root')); 23 24 //コメント、時間を繰り返し表示 25 while($comment=$comments->fetch()){ 26 print('<p>'); 27 print($comment['comment']); 28 print('</p>'); 29 30 print('<time>'); 31 print($comment['created_at']); 32 print('</time>'); 33 print('<hr>'); 34 } 35 36 37 ////2ページ目以降なら前のページを表示する(1ページ目は表示しない) 38 if($page>=2){ 39 40 print('<a href="comment.php?page='.($page-1).'">前へ</a >'); 41 } 42 43 //最終ページは表示コメント数/5の繰り上げで表示 44 countdb(new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root')); 45 46 $max_page=ceil($count['cnt']/5); 47 //現在のページ<最終ページなら次ページを表示する 48 if($page<$max_page){ 49 print('<a href="comment.php?page='.($page+1).'">次へ</a>'); 50 } 51 52?>
- model.php
php
1<?php 2 3try{ 4 $db=new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root','root'); 5 6 7}catch(PDOException $e){ 8 echo 'DB接続エラー:'.$e->getMessage(); 9} 10 11function inputdb($db){ 12 //コメントをデータベースに登録 13 $statement=$db->prepare('INSERT INTO comments SET comment=?, created_at=NOW()'); 14 $statement->execute(array($_POST['comment'])); 15} 16 17function outputdb($db){ 18 //コメントをデータベースから取り出し 19 global $comments,$start; 20 $comments=$db->prepare('SELECT * FROM comments ORDER BY id DESC LIMIT ?,5'); 21 $comments->bindParam(1,$start,PDO::PARAM_INT); 22 $comments->execute(); 23} 24 25function countdb($db){ 26 global $count; 27 $counts=$db->query('SELECT COUNT(*) AS cnt FROM comments'); 28 $count=$counts->fetch(); 29} 30?> 31
長くなってしまい申し訳ありませんがご教授いただけると嬉しいです。
回答2件
あなたの回答
tips
プレビュー