質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

3回答

921閲覧

PHP 変数で連結させた文字列に改行を含ませたい

ouranosu

総合スコア6

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2018/04/26 07:11

編集2018/04/26 13:13

PHPで顧客管理を作っています。
データベースから引っ張ってきた前回までのメモをメモ履歴エリアにまとめて表示したいと思っています。

データベースからデータ取り込み(userclass.php)

PHP

1while($stmt->FETCH()){ 2 $row = array( 3 'id'=>$id, 4 'username_kanji'=>$username_kanji, 5 'username_kana'=>$username_kana, 6 'tel'=>$tel, 7 'birthday'=>substr($birthday,0,4).("年").substr($birthday,4,-2).("月").substr($birthday,-2).("日"), 8 'last_day'=>$last_day, 9 'comment'=>$row["comment"].$comlast_day.$comment.PHP_EOL 10 ); 11 $_SESSION['userdata'] = $row; 12 }

表示(select.php)

PHP

1<?php echo htmlentities($_SESSION['userdata']['comment']) ?>

のように表記しているのですが、メモ毎に改行させたいと思っています。
以下のことは試してみましたが、改行できません。(半角スペースは空いたものがあります)

'comment'=>$row["comment"].$前回来店日.$メモ."\n"
'comment'=>$row["comment"].$前回来店日.$メモ."<br>"
'comment'=>$row["comment"].$前回来店日.$メモ.PHP_EOL

ご指摘いただいてコードの書き方を変えました。
問題はcomment部分で

PHP

1'comment'=>$row["comment"].$comlast_day.$comment.PHP_EOL

これで過去のメモを結合させて一気に表示させようとしたのですが、改行ができないことです。
とんちんかんなことをしているかもしれないのですが、改めてご指摘お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/04/26 07:21

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。
ouranosu

2018/04/26 12:36

質問以前に記入の仕方でご指摘いただきまして、本当にありがとうございます。勉強させていただきます。何も知らない初心者ですみません。
guest

回答3

0

データベースからデータ取り込み

while($stmt->FETCH()){
$row = array(
'メモ'=>$メモ,
'前回来店日'=>$前回来店日,
'comment'=>$row["comment"].$前回来店時.$メモ
);
$_SESSION['userdata'] = $row;

これ、動きます?

ブラウザ上での改行であれば、出力を<p>に突っ込めば良いかと。

投稿2018/04/26 09:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ouranosu

2018/04/26 12:38

変数の名前に関しては読みやすい漢字に勝手に変換しておりました。コードそのまま載せないと意味がないですよね。勉強させていただきます。
退会済みユーザー

退会済みユーザー

2018/04/26 13:30

$stmt->FETCH() で、データの一行分を取り出していますが、変数に入れていないので、利用せず捨てていると思います。 while 使うなら、 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) みたいな感じになるかと。
ouranosu

2018/04/30 16:57

まずご返信遅くなりましたことお詫びいたします。 PDOではなくmysqliを使っているからなのか、教えていただいた記述ではうまくいかなかったのですが、色々試しているうちに書かせていただいている方法でうまくループしながら値を取得できた次第です。 ご丁寧に教えていただきまして本当にありがとうございます。
退会済みユーザー

退会済みユーザー

2018/05/01 01:42 編集

あぁ、mysqli を使用していたんですね。 mysqli は使わないので、不適切な指摘でした。失礼^^; $stmt->bind_result($username_kanji, $username_kana, …); のようなコードが手前にあれば、私の指摘は的外れです。
guest

0

ベストアンサー

<br>を出力すれば改行されまずが、htmlentitiesを使っているから&lt;br&gt;に変換されて出力されていると思われます。
出力箇所のみ以下のようにしてみてはいかがでしょうか。

PHP

1<?php echo htmlentities($_SESSION['userdata']['comment'])."<br>\n" ?>

投稿2018/04/26 07:20

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ouranosu

2018/04/26 12:48

htmlentitiesを使っていると別のものに変換されてしまうことを初めて知りました。 $_SESSION['userdata']['comment']の中に過去のメモを結合させて、<?php echo htmlentities($_SESSION['userdata']['comment']) ?>で一気に表示させたいので、ご指摘いただいたやり方ではうまくは行かなかったですが、勉強になりました。ありがとうございます。
ttyp03

2018/04/27 00:29

ではこうでしょうかね。 格納箇所 'comment'=>htmlentities($row["comment"].$comlast_day.$comment)."<br>\n" 表示箇所(修正なし) <?php echo htmlentities($_SESSION['userdata']['comment']) ?>
ouranosu

2018/04/30 16:55

ご返信が遅くなりましたことをまずお詫びいたします。 入力でhtmlentitiesをつけるとは考えつきませんでしたが、試したところうまくいきませんでした。 ですがこれをヒントに一度出力部分のhtmlentitiesを消したところ、思い通りの記述ができたので、ひとまずこれで進めようと思います。 直接的なヒントになったので、こちらをBAにさせていただきました。 ありがとうございました。
guest

0

データベースからデータ取り出し

php

1while($stmt->fetch()){ 2 $row = array( 3 'id'=>$id, 4 'username_kanji'=>$username_kanji, 5 'username_kana'=>$username_kana, 6 'tel'=>$tel, 7 'birthday'=>substr($birthday,0,4).("年").substr($birthday,4,-2).("月").substr($birthday,-2).("日"), 8 'last_day'=>$last_day, 9 'comment'=>$row["comment"].$comlast_day.$comment."<br>\n" 10 ); 11 $_SESSION['userdata'] = $row; 12 }

出力箇所

php

1<?php echo $_SESSION['userdata']['comment'] ?>

で一応希望通りの表示ができました。
今後問題が出るようであればまた頭を悩ませる必要がありますが、ひとまずこの方法で進めてみます。
お答えいただいた方は、本当にありがとうございました。

投稿2018/04/30 17:02

ouranosu

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問