記録

昨日のつづき、掲示板もどきを作りました。


掲示板もどきを作りました。アドレスは下記を参照してください、ちなみに今は、ある名前で更新しないと更新できないように設定を変更しています。プログラムやSQLの説明ですが、まず初期の状態でテーブルにレコードを20件配置しidを1から20を手動で入れ込んでいます。また、cnt.txtはパーティションを変更しています(666)。そして、CSSフレームワークのbootstrap2.3.2を使用しています。これらとPHPファイルで掲示板もどきは機能しています。ちなみに最新のブラウザでしか動きません。動作確認はChrome以外行っていませんので他のブラウザでは未確認です。一応、iPhoneでも表示を確認してみましたが問題はなかったです。
動作は20件のレコードを繰り返し再利用している=過去のデータは消えていく。
※最終的に掲示板もどきから、そのうち・・・掲示板に作りこみます。
※cnt.txtには1という数字を保存しています。
https://www.zip358.com/tool/BBS/
追記:Twitterツイートをポップアップウィンドウで表示するように変更。

<?php
//session_start();
	if($_SERVER["REQUEST_METHOD"] = "POST" && $_POST["msg"]!="" && $_POST["name"]!=""){
		if (isset($_COOKIE['time'])) {
			setcookie( "time",1, time()+60, "/tool/BBS/","zip358.com",0);
		}else{
			setcookie( "time",1, time()+60, "/tool/BBS/","zip358.com",0);
			put_A(htmlspecialchars($_POST["name"]),htmlspecialchars($_POST["msg"]));
		}
	}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>zip358.com:掲示板もどき</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
function sbmit(){
	$.ajax({
	 type: "POST",
	 url: "index.php",
	 dataType:'html',
	 data: {
		  "name" : $("#tokumei").val(),
		  "msg" : $("#msg").val(),
	 },
	 success: function(data) {
		$("#sbmit").prop("disabled", true);
		$("#chk_put").html("一分後にページを読み込むかCookieを削除してください。そうすることで書き込み可能です。");
		put_B();
	 },
	 error:function(data) {
	 }
	});
}
function put_B(){
	$.ajax({
		 type: "POST",
		 url: "put.php",
		 dataType:'html',
		 data: {
			  "put" : "put//",
		 },
		 success: function(data) {
			$("#putbbs").html(data);
		 },
		 error:function(data) {
		 }
	});
}
$(function(){
	setInterval(function(){
        put_B();
    },2000);
});
function r_l(){
	setTimeout(function(){put_B();}, 3000);
}
</script>
    <!-- Le styles -->
    <link href="./assets/css/bootstrap.css" rel="stylesheet">
    <style type="text/css">
      body {
        padding-top: 20px;
        padding-bottom: 40px;
      }
      /* Custom container */
      .container-narrow {
        margin: 0 auto;
        max-width: 700px;
      }
      .container-narrow > hr {
        margin: 30px 0;
      }
      /* Main marketing message and sign up button */
      .jumbotron {
        margin: 60px 0;
        text-align: center;
      }
      .jumbotron h1 {
        font-size: 72px;
        line-height: 1;
      }
      .jumbotron .btn {
        font-size: 21px;
        padding: 14px 24px;
      }
      /* Supporting marketing content */
      .marketing {
        margin: 60px 0;
      }
      .marketing p + h4 {
        margin-top: 28px;
      }
    </style>
    <link href="./assets/css/bootstrap-responsive.css" rel="stylesheet">
    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
      <script src="./assets/js/html5shiv.js"></script>
    <![endif]-->
    <!-- Fav and touch icons -->
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="./assets/ico/apple-touch-icon-144-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="./assets/ico/apple-touch-icon-114-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="./assets/ico/apple-touch-icon-72-precomposed.png">
    <link rel="apple-touch-icon-precomposed" href="./assets/ico/apple-touch-icon-57-precomposed.png">
    <link rel="shortcut icon" href="./assets/ico/favicon.png">
  </head>
  <body>
     <div class="container-narrow">
		<div class="masthead">
			<ul class="nav nav-pills pull-right">
			<li class="active"><a href="/tool/BBS/">BBS</a></li>
			</ul>
			<h3 class="muted">BBS:掲示板もどき</h3>
		</div>
			<hr>
		<div class="jumbotron">
			<h1>BBS::About</h1>
			<p>20件の書き込みを表示します→クエリを使いまします。<br>スマホでも動くかもしれませんが・・・<br>最新のブラウザでかつ、JavaScriptがONになっていないと表示されません。</p>
			<p id="chk_put">
			<?php if(isset($_COOKIE['time'])){echo"一分後にページを読み込むかCookieを削除してください。そうすることで書き込み可能です。";} ?>
			</p>
		</div>
		<hr>
		<div class="container">
			<input type="text" name="name" id="tokumei" pattern="^[0-9A-Za-z]+$" maxlength="20">[※Twitterアカウント名で記入すると便利です。]<br>
			<textarea id="msg" style="width:650px;height:200px;" name="msg" maxlength="140"></textarea>[140文字まで]<br><br>
			<input type="button" value="Messageを送信する。" onclick="sbmit();"id="sbmit"/><br>
		</div>
		<hr>
		<div class="container">
			<div id="putbbs"></div>
		</div>
		<hr>
		<div class="footer">
			<p>&copy; Company 2015</p>
		</div>
    </div> <!-- /container -->
    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./assets/js/jquery.js"></script>
    <script src="./assets/js/bootstrap-transition.js"></script>
    <script src="./assets/js/bootstrap-alert.js"></script>
    <script src="./assets/js/bootstrap-modal.js"></script>
    <script src="./assets/js/bootstrap-dropdown.js"></script>
    <script src="./assets/js/bootstrap-scrollspy.js"></script>
    <script src="./assets/js/bootstrap-tab.js"></script>
    <script src="./assets/js/bootstrap-tooltip.js"></script>
    <script src="./assets/js/bootstrap-popover.js"></script>
    <script src="./assets/js/bootstrap-button.js"></script>
    <script src="./assets/js/bootstrap-collapse.js"></script>
    <script src="./assets/js/bootstrap-carousel.js"></script>
    <script src="./assets/js/bootstrap-typeahead.js"></script>
  </body>
</html>
  <?php
function put_A($name,$msg){
	if(file_exists("./cnt.txt")){
		$fl = fopen("./cnt.txt", "r");
		$cnt = intval(strval(fgets($fl)));
		fclose($fl);
		$mysqli = new mysqli("host","user","pass","DB");
		if($mysqli->connect_error){
			exit();
		}
		$mysqli->set_charset("utf8");
//echo "insert into bbs (id,name,msg) values ( ".$cnt.",'".$name."','".$msg."') on duplicate key update id = ".$cnt.", name = '".$name."', msg = '".$msg."';";
		$date = new DateTime();
		$mysql_set = $mysqli->prepare("UPDATE bbs SET name ='".$name."', msg ='".$msg."',times ='".$date->format('Y-m-d H:i:s')."' WHERE id = ".$cnt.";");
		$mysql_set->execute();
		$mysqli->close();
		$cnt++;
		if($cnt>20){
			$cnt=1;
		}
		$fl = fopen("./cnt.txt", "w");
		if(flock($fl,LOCK_EX)){
			fputs($fl,$cnt);
			fclose($fl);
		}
	}
	///put
}
?>
<?php
if($_POST["put"]="put//"){
	echo put_B();
}
function put_B(){
		$mysqli = new mysqli("host","user","pass","DB");
		if($mysqli->connect_error){
			exit();
		}
		$result = $mysqli->query("SELECT * FROM bbs ORDER BY times DESC");
		if($result){
		  //1行ずつ取り出し
		  while($row = $result->fetch_object()){
			//エスケープして表示
			$hoge[0] = $row->name;
			$hoge[1] = $row->msg;
			$str.= '<div class="container">';
			$str.= '<table class="table table-striped"><tr><td><button type="button" class="btn">Nmae:'.mb_convert_encoding ($hoge[0],"UTF-8","auto").'さんのコメントを<a onclick="window.open(\'http://twitter.com/share?url=zhttps://www.zip358.com/tool/BBS/&text='.mb_convert_encoding ($hoge[1],"UTF-8","auto").'&via='.mb_convert_encoding ($hoge[0],"UTF-8","auto").'&related=zip358com&hashtags=掲示板\', \'\', \'width=800,height=250\');">ツイートする</a></button></td></tr><tr><td>'.nl2br(mb_convert_encoding ($hoge[1],"UTF-8","auto")).'</td></tr></table>';
			$str.= '</div>';
		  }
		}
		$mysqli->close();
		return $str;
	///put
}
?>

 

使わないうちに書き方が変わっていましたMySQL。前のページ

centOS7になってMYSQLじゃなくmariadb(MYSQL)変わったけど。次のページ

関連記事

  1. 記録

    水曜日のカンパネラのコムアイさんが飛んでる。

    水曜日のカンパネラのコムアイさんが飛んでる、何処らへんが飛んでるか…

  2. 記録

    農業系ユーチューバーさんのちょこっと自然農チェンネル

    農業系ユーチューバーさんのちょこっと自然農チェンネルです。いろ…

  3. 記録

    映画:エンターテイメント作の王道的な作品:パイレーツオブカリビアンシリーズ

    エンターテイメントの王道的な作品といえば、パイレーツオブカリビアンかな…

  4. 記録

    パンくずリストの構造化を変えない人がいるよ。

    Gさんから、data-vocabulary.org schem…

  5. 記録

    在宅ワークで安定的な収入が確保できていて

    在宅ワークで安定的な収入が確保できていたら自分はソチラにシフトした…

  6. 記録

    REFLECT:「若い自分に送るメッセージ」

    米受刑者たちが「若い自分に送るメッセージ」を添えるプロジェクトがある…

PAGE TOP