คำสั่ง nl2br(); ค่ะ
หนูใช้คำสั่ง nl2br(); ก่อนป้อนเข้าสู่ฐานข้อมูล แล้วเรียกแสดงขึ้นมา มันเกิด error ก็เลยเปลี่ยนมาเป็นตอนบันทึกข้อมูลเข้าสู่ฐานข้อมูลก็บันทึกโดยไม่ใช้คำสั่ง nl2br(); แต่ตอนแสดงผลค่อยใช้คำสั่งดังกล่าว ปรากฏว่ามันก็เกิด error อีก error เฉพาะฟิวด์ที่มีการ enter นะค่ะ
หนูใช้ฟิวด์ประเภท text
error คือ Unterminated string constant
ผู้รู้ทุกท่าน คิดว่ามีสาเหตุมาจากอะไรค่ะ ช่วยด้วยค่ะ
ลองใช้ฟังก์ชั่นนี้แทน nl2br
แต่ว่า ??? ถ้าหนูอยากให้ข้อความแสดงใน text area แบบหลายบรรรทัดเพื่อจะแก้ไขข้อมูลนั้น มันจะแสดง <br /> มาด้วยค่ะ
ทำอย่างไรดีค่ะ
เราควรเก็บข้อมูลเป็นข้อมูลดิบที่ได้จากการ submit เนื่อจากข้อมูลนี้ จะประกอบด้วยข้อความที่สามารถแสดงใน textarea ได้เหมือนตอนเขียนครับ ซึ่งเมื่อเราต้องการแก้ไขเราจะสามารถใช้ค่าที่ได้จากฐานข้อมูลเพื่อแก้ไขได้ทันทีโดยที่ไม่มีข้อความขาดหาย
ในตอนแสดง เราถึงจะทำการปรับปรุงข้อมูล เพื่อแสดงผลได้อย่างถูกต้องครับ
ยกตัวอย่างตัวอักษรขึ้นบรรทัดใหม่ที่มักจะมีปัญหากันเสมอ ตอนเก็บเราจะเก็บเป็น \r\n เวลาแก้ไข \r\n จะขึ้นบรรทัดใหม่ใน textarea อัตโนมัติ และเมื่อต้องการจะแสดงผลบนหน้าเว็บค่อยทำการแปลงจาก \r\n ให้เป็น <br />
หลักการที่สำคัญในการบันทึกข้อมูลลงบนฐานข้อมูลที่สามารถแก้ไขซ้ำได้ ก็คือ ให้เก็บข้อมูลดิบลงฐานข้อมูลเท่านั้นครับ
ขออนุญาตตอบเพิ่มเติมนะครับ เผื่อเพื่อนๆที่เจอปัญหาเดียวกันจะได้นำไปใช้ต่อครับ
พอดีผมก็ประสบปัญหาเช่นเดียวกับคุณ chula
เริ่มด้วยตอนเก็บข้อมูลเก็บเป็นข้อมูลดิบแบบที่ อ.แนะนำเลยครับ
ส่วนตอนนำมาแสดงผลก็เพียงแต่ใช้ function nl2br($data); หรือ str_replace("\r\n", '<br />', $data); ก็ได้ครับจะแสดงผลได้ถูกต้อง
ส่วนในตอนที่ต้องการนำข้อมูลดิบมาแสดงเพื่อแก้ไขใน textarea นั้นผมเจอปัญหาว่ามันไม่ขึ้นบรรทัดใหม่ให้
จึงจำเป็นต้องใช้คำสั่ง str_replace("\r\n", '\\r\\n',$data); นี้เพื่อให้ข้อมูลที่แสดงใน textarea ลงบรรทัดใหม่ครับ
ผมไม่แน่ใจว่าคนอื่นมีวิธีอี่นที่ดีกว่านี้หรือไม่ครับ