A-AA+then

คำสั่ง nl2br(); ค่ะ

3,503

หนูใช้คำสั่ง nl2br(); ก่อนป้อนเข้าสู่ฐานข้อมูล แล้วเรียกแสดงขึ้นมา มันเกิด error ก็เลยเปลี่ยนมาเป็นตอนบันทึกข้อมูลเข้าสู่ฐานข้อมูลก็บันทึกโดยไม่ใช้คำสั่ง nl2br(); แต่ตอนแสดงผลค่อยใช้คำสั่งดังกล่าว ปรากฏว่ามันก็เกิด error อีก error เฉพาะฟิวด์ที่มีการ enter นะค่ะ

หนูใช้ฟิวด์ประเภท text
error คือ Unterminated string constant

ผู้รู้ทุกท่าน คิดว่ามีสาเหตุมาจากอะไรค่ะ ช่วยด้วยค่ะ
 

 

5 ความคิดเห็น

$data = str_replace("\r\n", '<br />', $data);

ลองใช้ฟังก์ชั่นนี้แทน nl2br
1

อาจารย์ค่ะ ถ้านำข้อมูลที่มีการ enter ไปแสดงในพื้นที่หน้าเว็บ สามารถให้มัน ขึ้นบรรทัดใหม่ได้แล้วค่ะ

แต่ว่า ??? ถ้าหนูอยากให้ข้อความแสดงใน text area แบบหลายบรรรทัดเพื่อจะแก้ไขข้อมูลนั้น มันจะแสดง <br /> มาด้วยค่ะ
ทำอย่างไรดีค่ะ
2

เข้าใจผิดแล้วครับ

เราควรเก็บข้อมูลเป็นข้อมูลดิบที่ได้จากการ submit เนื่อจากข้อมูลนี้ จะประกอบด้วยข้อความที่สามารถแสดงใน textarea ได้เหมือนตอนเขียนครับ ซึ่งเมื่อเราต้องการแก้ไขเราจะสามารถใช้ค่าที่ได้จากฐานข้อมูลเพื่อแก้ไขได้ทันทีโดยที่ไม่มีข้อความขาดหาย

ในตอนแสดง เราถึงจะทำการปรับปรุงข้อมูล เพื่อแสดงผลได้อย่างถูกต้องครับ

ยกตัวอย่างตัวอักษรขึ้นบรรทัดใหม่ที่มักจะมีปัญหากันเสมอ ตอนเก็บเราจะเก็บเป็น \r\n เวลาแก้ไข \r\n จะขึ้นบรรทัดใหม่ใน textarea อัตโนมัติ และเมื่อต้องการจะแสดงผลบนหน้าเว็บค่อยทำการแปลงจาก \r\n ให้เป็น <br />

หลักการที่สำคัญในการบันทึกข้อมูลลงบนฐานข้อมูลที่สามารถแก้ไขซ้ำได้ ก็คือ ให้เก็บข้อมูลดิบลงฐานข้อมูลเท่านั้นครับ
3

แต่ตอนเก็บข้อมูลหนูก็เก็บธรรมดานะค่ะ ไม่มีการแปลงจาก \r\n เป็น <br> แต่พอแสดงผลหนูก็ใช้ฟังก์ชันที่อ.แนะนำค่ะ
4

ขออนุญาตตอบเพิ่มเติมนะครับ เผื่อเพื่อนๆที่เจอปัญหาเดียวกันจะได้นำไปใช้ต่อครับ
พอดีผมก็ประสบปัญหาเช่นเดียวกับคุณ chula

เริ่มด้วยตอนเก็บข้อมูลเก็บเป็นข้อมูลดิบแบบที่ อ.แนะนำเลยครับ
ส่วนตอนนำมาแสดงผลก็เพียงแต่ใช้ function nl2br($data); หรือ str_replace("\r\n", '<br />', $data); ก็ได้ครับจะแสดงผลได้ถูกต้อง

ส่วนในตอนที่ต้องการนำข้อมูลดิบมาแสดงเพื่อแก้ไขใน textarea นั้นผมเจอปัญหาว่ามันไม่ขึ้นบรรทัดใหม่ให้
จึงจำเป็นต้องใช้คำสั่ง str_replace("\r\n", '\\r\\n',$data); นี้เพื่อให้ข้อมูลที่แสดงใน textarea ลงบรรทัดใหม่ครับ
ผมไม่แน่ใจว่าคนอื่นมีวิธีอี่นที่ดีกว่านี้หรือไม่ครับ

5
^