今webサービスを作成しているのですが、<textarea>内で入力した改行ありの文字列をDBのtext型にINSERTすると、改行されて挿入されるのですが、SELECTで取得しブラウザで表示させると、文字列すら表示されません。
DBで保存されている中身です。
改行されている「やっと会えた!嬉しい」となってる箇所が問題となっている部分です。
確認のためvar_dumpで表示させると、改行の代わりに半角スペースとなって表示されます。
これは一体何がおきているのでしょうか?
INSEARTされる前にnl2brも試したのですが、DB内で改行が<br />となって挿入され、同じようにブラウザでは表示されませんでした。
text型は半角スペースが入ってると非表示にするような制約があるのでしょうか?
入力の際の改行をDBに保存し、ブラウザで表示させるにはどのようにすればいいでしょうか?
INSERT時のコード
php
1 2if(!empty($_POST)){ 3 debug('POST送信があります。'); 4 5 // 変数に投稿内容を代入 6 $kind = $_POST['post']; 7 $subject = $_POST['subject']; 8 $message = $_POST['message']; 9 // 例外処理 10 try { 11 $dbh = dbConnect(); 12 debug('DBに接続します。'); 13 // SQL文作成 14 $sql = 'INSERT INTO messages (user_id,kind,subject,message,created_date) VALUES(:user_id,:kind,:subject,:message,:created_date)'; 15 $data = array(':user_id' => $_SESSION['user_id'], 16 ':kind' => $kind, 17 ':subject' => $subject, 18 ':message' => $message, 19 ':created_date' => date('Y-m-d H:i:s')); 20 // クエリ実行 21 // var_dump($data); 22 $stmt = queryPost($dbh, $sql, $data); 23 header("Location:mypage.php"); 24 25 } catch (PDOException $e) { 26 echo 'DB接続エラー:' . $e->getMessage(); 27 } 28} 29コード
取り出し時のコード
php
1$myMessages = getMyMessage($_SESSION['user_id'],$start); 2 3function getMyMessage($user_id,$start){ 4 debug('ユーザー情報を取得します。'); 5 //例外処理 6 try { 7 //DBへ接続 8 $dbh = dbConnect(); 9 // SQL文作成 10 $sql = $dbh->prepare('SELECT * FROM messages WHERE user_id = :user_id AND kind != "Comment" ORDER BY created_date DESC LIMIT :start,6'); 11 $sql->bindParam(':user_id', $user_id); 12 $sql->bindParam(':start', $start, PDO::PARAM_INT); 13 // クエリ実行 14 $sql->execute(); 15 // クエリ結果のデータを1レコード返却 16 if($sql){ 17 return $sql->fetchAll(PDO::FETCH_ASSOC); 18 } else { 19 return false; 20 } 21 } catch (Exception $e) { 22 error_log('エラー発生:' . $e->getMessage()); 23 } 24} 25 26コード
ブラウザで表示させるときのコード
php
1<?php foreach ($myMessages as $myMessage) { ?> 2 <div class="my-message-view"> 3 <p class="kind-user">種類:<?php echo $myMessage['kind']; ?></p> 4 <p class="subject-user">題名:<?php echo $myMessage['subject']; ?></p> 5 <script> 6 var windowSize = $(window).width(); 7 var num1 = 480; 8 if (windowSize > num1) { 9 document.write('<p class="message-user"><?php echo mb_substr($myMessage['message'],0,50); ?><a href="message-view.php?message_id=<?php echo $myMessage['message_id'];?>&kind=<?php echo $myMessage['kind'];?>">…続きを読む</a></p>'); 10 } else { 11 document.write('<p class="message-user"><?php echo mb_substr($myMessage['message'],0,20); ?><a href="message-view.php?message_id=<?php echo $myMessage['message_id'];?>&kind=<?php echo $myMessage['kind'];?>">…詳細</a></p>'); 12 } 13 </script> 14 <p><?php echo $myMessage['created_date']; ?></p> 15 </div> 16 <?php } ?>
document.write('<p class="message-user"><?php echo mb_substr($myMessage['message'],0,20); ?><a href="message-view.php?message_id=<?php echo $myMessage['message_id'];?>&kind=<?php echo
がtext型の部分です。
textareaのコードです。
html
1<label> 2 <p>件名</p> 3 <textarea class="text text1" type="text" name="subject" placeholder="件名" value=""></textarea> 4 </label> 5 <label> 6 <p>内容</p> 7 <textarea class="text text2" type="text" name="message" placeholder="内容" value=""></textarea> 8 </label> 9 10 <input id="button" class="btn-button submit" name="post" type="submit" value="Happy">
回答1件
あなたの回答
tips
プレビュー