旅先で恋に落ちたくなる?思わぬ運命の恋に巡り合う映画

題目の通りです!以下のプログラムの5行目です。情報不足でしたら追加します。
 よろしくお願いいたします。
<?php
define('DB_DATABASE', 'oneline_bbs');
define('DB_USERNAME', 'dbuser');
define('DB_PASSWORD', 'dbuser');
define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE);

try {
$db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}

$errors = array();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = null;
if (!isset($_POST['name']) || !strlen($_POST['name'])) {
$errors['name'] = '名前を入力してください';
} elseif (strlen(_POST['name']) > 40) {
$errors['name'] = '名前は40文字以内で入力してください';
} else {
$name = $_POST['name'];
}

$comment = null;
if (!isset($_POST['comment']) || !strlen($_POST['comment'])) {
$errors['comment'] = 'ひとことを入力してください';
} elseif (strlen($_POST['comment']) > 200) {
$errors['comment'] = 'ひとことは200文字以内で入力してください';
} else {
$comment = $_POST['comment'];
}

if (count($errors) === 0) {
date_default_timezone_set('Asia/Tokyo');

$sql = $db->prepare("insert into post (name, comment, created_at) values (?, ?, ?)");
$sql->execute([$name, $comment, date('Y-m-d H:i:s')]);

$db->exec($sql);

header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}
}
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ひとこと掲示板</title>
</head>
<body>
<h1>ひとこと掲示板</h1>
<?php if (count($errors)): ?>
<ul>
<?php foreach ($errors as $error): ?>
<li><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form action="index.php" method="post">
名前: <input type="text" name="name">
ひとこと: <input type="text" name="comment">
<input type="submit" name="submit" value="送信">
</form>
<?php
$sql = "select * from post order by created_at desc";
$results = $db->query($sql);
?>
<?php if ($results !== false && $results->rowCount()): ?>
<ul>
<?php while ($post = $results->fetch()): ?>
<li>
<?php echo htmlspecialchars($post['name'], ENT_QUOTES, 'UTF-8'); ?>:
<?php echo htmlspecialchars($post['comment'], ENT_QUOTES, 'UTF-8'); ?> -
<?php echo htmlspecialchars($post['created_at'], ENT_QUOTES, 'UTF-8'); ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>

<?php $db = null; ?>

</body>
</html>

質問者からの補足コメント

  • うーん・・・

    解決に当たり以下の意味を知れべています。
    define('PDO_DSN',
    分かり次第報告します。
     本日中の解決は無理かもしれません
    悪しからず。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/19 20:31
  • うーん・・・

    define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE);
    ですが、
    $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
    に関連もあるみたいですので、新たに出てきたPDOなので
    一筋縄ではいかないみたいです。
     いったん解決とさせていただきます。

      補足日時:2017/02/20 21:58

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ローカルホストにあるoneline_bbsという名前のmySQLによるデータベースでないのかな?

この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答くださいましてありがとうございました。
どうもすみません!
 ご回答が遅れまして
本日中に調べます。
 お待ちください。

お礼日時:2017/02/19 17:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qプログラムを覚えるのに、練習問題のコードを、チラシの裏に手書きで書いて覚えようとしているのですが、キ

プログラムを覚えるのに、練習問題のコードを、チラシの裏に手書きで書いて覚えようとしているのですが、キーボードで打って覚えた方が良いでしょうか?

Aベストアンサー

個人的すぎる感想ですが、紙に書いても良いと思います。

 同じ紙に書くならばフローチャートも併せてどうぞ。

Qプログラミング できる人 できない人

プログラミングを長期的に勉強していて自分でプログラム作れず途中で挫折してしまう人と
プログラミングを長期的に勉強していて自分でプログラムを組めるようになった人の決定的な違いは何かありますでしょうか?

また実務何年くらいでプログラム組めるようになりましたか?

Aベストアンサー

プログラムってたった1行でも立派なプログラムだし、小学生にだって書けます。
多少我慢強くて、一般的な論理的思考能力があって、何かを作ることに喜びを感じられるなら多分誰だって書けます。

一体どんな分野のどんなプログラムを想定されていますか?

Qテキストファイルについて

テキストファイルが存在しないときは新規作成で、存在した時はデータを追加するにはどのようにすれば宜しいのでしょうか。

Aベストアンサー

https://oshiete.goo.ne.jp/qa/9554405.html
前にも書きましたが、VBでファイルに書く方法はいくつもあります。

「ファイルが存在しないときは新規作成で、存在した時はデータを追加する」
というのは「append」「追記」「追加」と呼ばれる動作になります。

使おうとしているクラスやメソッドのマニュアルをよく見てください
「追記モードでオープンする」「ファイルに追加する」「append」といったキーワードが入っているものがあるはずです。

QJavascriptの本に乗っていることがわかりません

最近勉強を始めたものです。
関数のところで、1行目に、

/* 関数定義 ******************/

とあるのですが、どういう意味でしょう

Aベストアンサー

「/*」から始まり「*/」で終わるまでの間はコメント文として
好きなことをかけます。備忘録のようなものです。
「*」がいっぱい書いてあるのは桁あわせ(インデント)や
パッと見て目につきやすくしている(アイキャッチ)のだと思います

QVBAで3の倍数の乱数を取得する

excelのVBAのことなのですが
3の倍数で整数で乱数を取得する方法がわかりません。

これがどうしてもわからなくて困ってます。
教えてください。

Aベストアンサー

60~198のの範囲の3の倍数の乱数を発生させ、A1からA1000のセルにその値を書き込んでいます。
200は3の倍数にならないので198を上限にしています。
MyRandを呼び出すと60から198の範囲の3の倍数の乱数を返します。
(あなたが実際に使うのは、MyRandだけです)
上限を201にしたいなら、66を67に変えてください。
MyRandを呼び出す前にRandomizeを1回実行してください。そうしないと毎回同じ結果が返ります。
---------------------------------
Option Explicit
Public Sub 乱数作成()
Dim i As Long
Dim r As Long
'乱数を作成しA列へ格納する(1000回分)
Randomize
For i = 1 To 1000
r = MyRand()
Cells(i, 1).Value = r
Next
End Sub

'60から198の範囲内の3の倍数の乱数を生成する。
Public Function MyRand() As Long
MyRand = Int((66 - 20 + 1) * Rnd + 20) * 3
End Function

60~198のの範囲の3の倍数の乱数を発生させ、A1からA1000のセルにその値を書き込んでいます。
200は3の倍数にならないので198を上限にしています。
MyRandを呼び出すと60から198の範囲の3の倍数の乱数を返します。
(あなたが実際に使うのは、MyRandだけです)
上限を201にしたいなら、66を67に変えてください。
MyRandを呼び出す前にRandomizeを1回実行してください。そうしないと毎回同じ結果が返ります。
---------------------------------
Option Explicit
Public Sub 乱数作成()
Dim i As Long
...続きを読む

Q【VBA】IF文 複数(ネスト)の時の処理について

こんにちは。
if文についておしえてください。
以下のようなマクロがあるとします。

変数 tensuuに-1をいれて実行すると①→②のように動作し「入力エラー」と表示されます。
tensuuに120を入れて実行すると①´→②´の順に動作し「入力エラー1」と表示されます。

どして、-1のときは入力エラー1にはいかず入力エラーにいくのでしょうか?
120のときは入力エラーにはいかず入力エラー1にいくのでしょうか?

動きがよくわかりません。
IF文とELSEはどういう紐づけがされているのでしょうか?

よろしくおねがいいたします。
   
Sub t()
tensuu = -1
If tensuu >= 0 Then '①
If tensuu <= 100 Then '①´
If tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If
Else
MsgBox "入力エラー1" '②´
End If
Else
MsgBox "入力エラー" '②
End If
End Sub

こんにちは。
if文についておしえてください。
以下のようなマクロがあるとします。

変数 tensuuに-1をいれて実行すると①→②のように動作し「入力エラー」と表示されます。
tensuuに120を入れて実行すると①´→②´の順に動作し「入力エラー1」と表示されます。

どして、-1のときは入力エラー1にはいかず入力エラーにいくのでしょうか?
120のときは入力エラーにはいかず入力エラー1にいくのでしょうか?

動きがよくわかりません。
IF文とELSEはどういう紐づけがされているのでしょうか?

よろし...続きを読む

Aベストアンサー

If 〜 Then 〜 Else 〜 End If
で1セットです。

ネスト(入れ子)になったIF文というのは、 Then 〜 とか Else 〜 の〜の部分にIf文がくるものです。
ですから、外のIfを越えてしまうことはありません。
よって、一番内側から見ていけば、構造がはっきりします。


一番内側から見ます。

If tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If

が1セットです。
これを 「文1」とすると元のプログラムは

If tensuu >= 0 Then '①
If tensuu <= 100 Then '①´
「文1」
Else
MsgBox "入力エラー1" '②´
End If
Else
MsgBox "入力エラー" '②
End If

となります。この状態で「一番内側」を見ると

If tensuu <= 100 Then '①´
「文1」
Else
MsgBox "入力エラー1" '②´
End If
です。これを「文2」とすると

If tensuu >= 0 Then '①
「文2」
Else
MsgBox "入力エラー" '②
End If


余談ですが
この例の場合、外側2つは、判定内容と処理とが離れてしまい、見辛いのは確かです。
if 条件 Then A Else B は if not条件 Then B Else A と同じ、ということから、Thenでの処理とElseでの処理を入れかえれば、
条件の直ぐ下の処理が来るので、見易さが格段によくなります。

If tensuu < 0 Then '① ' tensuu<0 は not (tensuu>=0)と同じ
MsgBox "入力エラー" '②
ElseIf tensuu > 100 Then '①´
MsgBox "入力エラー1" '②´
ElseIf tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If ' ElseIfで継いでいるので、ネストにはなっていない

If 〜 Then 〜 Else 〜 End If
で1セットです。

ネスト(入れ子)になったIF文というのは、 Then 〜 とか Else 〜 の〜の部分にIf文がくるものです。
ですから、外のIfを越えてしまうことはありません。
よって、一番内側から見ていけば、構造がはっきりします。


一番内側から見ます。

If tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If

が1セットです。
これを 「文1」とすると元のプログラムは

If tensuu >= 0 Then '①
If tensuu <= 100 Then '①´
「文1」
Else
MsgBox "入力エラー1" '②´
...続きを読む

Qオブジェクト指向の壁

Java言語などは「オブジェクト指向」が売り?だと思うのですが
素人や初心者が、ぶち当たる「オブジェクト指向の壁」って何だと思いますか?

暇な時にでも回答ください。

Aベストアンサー

多分無い
思考停止状態でもプログラミングできるのがオブジェクト指向みたいなものです
まあこれは言いすぎかもですけどw

ただし、しっかりと理解をしようとすると
カプセル化、継承、ポリモーフィズムなど
オブジェクト指向の基本機能が奥が深すぎて難しい気がする

私自身、オブジェクト指向は普段使わないので、説明できないです。
なんとなくこんなものとふんわりと理解はしていますが
正確な説明や、使い道などが全然分かりません

このふんわりとした理解でも使えてしまうのが
オブジェクト指向の欠点
内部の動作を理解できていなくてもプログラムが組めてしまうので
予想外なバグに対応できない初心者が多いみたいです

オブジェクト指向から入ったプログラマーが嫌われがちなのはこういった背景があります

Q最近Javascriptの勉強を始めたのですがどこが違うかわかりません。

プログラミングの経験はないです。JavaScriptの勉強を最近を始め、簡単なじゃんけんのゲームを作っているのですが、プログラミングが作動しない原因はわかりません。間違って居る場所を教えて下さい。



// 数値の設定
var G = 1;
var C = 2;
var P = 3;

// 入力ダイアログ
var user = prompt(G + ':ぐー\n' + C + ':ぱー\n' + P + ':ちょき\n\n' + '※半角で数字を入力してください' );
user = parseFloat(user);

// 入力値のチェック
if (user !== G && user !== C && user !== P) {
alert('入力値を認識できません。再読み込みしてください。');
} else {

// コンピューターの手
var com = Math.floor(Math.random() * 3) + 1;

//コンピューターの手の名前
var comHand = '';
switch (com) {
case G:
comHand = 'ぐー';
break;
case C:
comHand = 'ちょき';
break;
case P:
comHand = 'ぱー';
break;
}
// 結果の判定
var Result = '';
if (user === com) {
Result = '引き分けです。';
} else if ((com === G && user === P) || (com === C && user === G) || (com === P && user === C)) {
Result = 'あなたの勝ちです。';
} else {
Result = 'あなたの負けです。';
}
// 結果の表示
Result = Result 'コンピューターの出した手は「' + comHand + '」でした。' ;
alert(Result);
}

プログラミングの経験はないです。JavaScriptの勉強を最近を始め、簡単なじゃんけんのゲームを作っているのですが、プログラミングが作動しない原因はわかりません。間違って居る場所を教えて下さい。



// 数値の設定
var G = 1;
var C = 2;
var P = 3;

// 入力ダイアログ
var user = prompt(G + ':ぐー\n' + C + ':ぱー\n' + P + ':ちょき\n\n' + '※半角で数字を入力してください' );
user = parseFloat(user);

// 入力値のチェック
if (user !== G && user !== C && user !== P) {
alert('...続きを読む

Aベストアンサー

こんにちは

>プログラミングが作動しない原因はわかりません。
直接の原因は、最後の方の
>Result = Result 'コンピューターの出した手は「' ~~
が、SyntaxErrorになっています。
 Result += 'コンピューターの出した手は「' ~~
 Result = Result + 'コンピューターの出した手は「' ~~
などとしてください。

ブラウザでテストしているなら、F12キーで「開発ツール」が表示できるものが多いですから、これを利用することでエラーを確認することができるはずです。

内容的には、勝ち負けの判定におかしなところがあるようですので、場合分けを再確認してみてください。

Q条件付きcase文

C言語のswitch文で、条件によってcaseを増やしたいのですがなるべくスマートな方法はないでしょうか?

例 case 2,3のみを条件で増やしたい
int test ( int a, int b )
{
  switch( a )
  {
    case 0:
    処理1;
    break;

    case 1:  
    処理2;
    break;

/***** 条件次第 *****/
    case 2:
    処理3;
    break;

    case 3:
    処理4;
    break;
/*****************/
    default:
    処理5;
    break;
  }

  return 0;
}

考えているのは、
1.case内で分岐させる
case 2:
if(条件)
 処理3;
else
 処理5;
break;

case 3:
if(条件)
 処理4;
else
 処理5;
break;

2.素直にswitchごと分岐させる
if(条件)
{
 switch( a )
 {
  case 0:~
  case 1:~
  case 2:~
  case 3:~
  default:~
 }
}

else {
 switch( a )
 {
  case 0:~
  case 1:~
  default:~
 }
}

1だとswitchは1つで済みますがcase毎に同じ条件を入れるのが嫌。
2だとswitchごとにはシンプルになりますが共通部分をまとめたい欲求が出ます。
いい方法があれば教えてください。

既にあるプログラムに条件付きで追加したい項目があったのですが、
そこがswitch文でできていたので困って質問しました。

C言語のswitch文で、条件によってcaseを増やしたいのですがなるべくスマートな方法はないでしょうか?

例 case 2,3のみを条件で増やしたい
int test ( int a, int b )
{
  switch( a )
  {
    case 0:
    処理1;
    break;

    case 1:  
    処理2;
    break;

/***** 条件次第 *****/
    case 2:
    処理3;
    break;

    case 3:
    処理4;
    break;
/*****************/
    default:
    処理5;
 ...続きを読む

Aベストアンサー

関数を一発噛ませる

int preFumc()
{
if(!ある条件 &&(a == 2)) return -1;
else if(! ある条件 && (a == 3)) return -1;

return a;
}

switch(preFunc())
{
case 1: 処理1; break;
case 2: 処理2; break;
case 3: 処理3; break;
case 4: 処理4; break;
case default: 処理1; break;
}

あるいは、else if でつなぐ

if (a == 1) 処理1;
else if (ある条件 && a == 2) 処理2;
else if (ある条件 && a == 3) 処理3;
else if (a == 4) 処理4;
else if (a == 5) 処理5;
else デフォルトラベルの処理;

あるいは、「なぜ、ある条件の時だけ特別扱いする必要があるのか?」と熟考して、設計を変える。

Qスクリーンショット

Windowsで音を立てずにスクリーンショットを取る方法はありますか?

Aベストアンサー

プリントスクリーン(prtscn)では?
window単位でとるときはalt+prtscn


人気Q&Aランキング