ถามเรื่อง การดึงข้อมูลจาก ฐานข้อมูลมูล จำนวนมากๆ แล้วมันไม่ตัดขึ้นบรรทัดใหม่

เริ่มโดย Kukujang, 17 กุมภาพันธ์ 2009, 22:01:34

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Kukujang


คือประมานว่า

พอดึงข้อมูล ข้อความจำนวนมากๆ แล้วเอามาแสดง
มันไม่ยอมตัดขึ้นบรรทัดใหม่ครับ

มันกลับต่อกันเป็นแถวยาวไปเลย ทำให้รูปขนาดเว็บที่กำหนดไว้
ไม่เป็นไปตามที่กำหนดไว้

เช่น

ในฐานข้อมูลมีข้อมูลดังนี้
123456789123456789

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

(ไม่รู้ว่า อธิบายถูกไหม)ช่วยแนะนำทีครับ

absolutex


Kobsoft

 :-[ ...อิอิ

มันเปนงี้นะวัยรุ่น...คือปกติ content มันจะตัดคำขึ้นบรรทัดใหม่ให้อยู่แล้วไม่ว่าจะใช้ table หรือ div แต่ก็มีกรณีศึกษาปัญหาอยู่ว่า เช่นพวกเกรียนมันชอบตอบกระทู้ submit ข้อความแบบ  แสดดดดดดดดดดดดดดดดดดดดดดดดดดดดด ยาวๆ งี้ ทำให้วัยรุ่นเซ็งประจำ ด้วย character ที่ไม่เว้น space มันจะพาลทำให้เขตข้อมูลยืด สำหรับคนใช้ table ก็งี๊ดดด ทันที พอเทพหน่อยมาใช้ div จะหมดปัญหา เพราะมันสั่งให้ไม่ยืด หรือซ่อนส่วนเกินได้ด้วยการใช้ CSS  {overflow:hidden} แต่ถึงอย่างไรก็ตามแต่ มีหลายวิธีมาแนะนำแก้ขัด

การแก้ปัญหาด้วย PHP

<? echo wordwrap($TEXT, 60, "\n", true); ?>

60 คือจำนวน character ที่เรากะว่าให้มันพอดีกับความกว้างของเขตข้อมูลงับ กรณีใส่ข้อความปกติแบบสุภาพชนทั่วไปที่เขาทำกัน มันก็จะเ้ว้นให้ปกติไม่ซีเรียสกับ อาิิกิวเมนต์ 60 ตัวอักษรนี้ แต่ถ้าเมื่อใดที่ยิงโพสต์แบบพวกเศษมนุษย์ทั้งหลายมันก็จะทำงานด้วยการยอมให้ character ที่ติดกันยาวได้ไ่ม่กิน 60 ตัวอักษร ถ้าเกินมันจะตัดขึ้นบรรทัดใหม่ให้ อยากรู้อากิวเมนต์เพิ่มเติมเชิญ www.php.net

แก้ปัญหาด้วย CSS DIV


<style>
.contentbox {width:500px; overflow:hidden;}
</style>

<div class="contentbox"><? echo"$TEXT"; ?></div>


หรือถ้าจะบอกว่าใช้ Table ล่ะทำไง ก็เอา DIV ซ้อนใน Table อีกที แบบนี้


<style>
.contentbox {width:500px; overflow:hidden;}
</style>

<table>
  <tr>
    <td><div class="contentbox"><? echo"$TEXT"; ?></div></td>
  </tr>
</table>


ส่วนมากเขาจะใช้ DIV กันนะ ไว้ปราบเกรียน ข้อความไหนมันยิงเลยขอบมา ก็ hidden ออกไป

ค่าครู แป๊ปซี่ ป๋องนึงเยย.... ให้ไว

Kukujang

ขอบคุณหลายๆครับ

วิธีที่ 2 ไปลองทำแล้วครับ ผลก็โอเคครับ

แต่วิธีที่ 1 ยังทำไม่ได้ครับ

RaulGonzales

ขอถามต่อเลยนะครับ ถ้าเกิดเราเก็บข้อมูลที่มาจาก textarea ลง database เเล้วเรียกมันออกมา มันจะเเสดงเเบบเป็น string ติดๆกันนะครับ ทำไงให้มันเเสดงเเบบเช่นเราตอบกระทู้เเล้วกด enter มันก็เก็บข้อมูลเเล้วเเสดงตามที่เราเก็ยนะครับ

เช่นผมพิมพ์

อ้างถึง11111113


555555

555

เวลาผม query เเล้วมันจะได้
อ้างถึง11111113555555555

ผมอยากให้มันเเสดงเเบบเเรกนะครับ
ลงประกาศ ซื้อ,ขาย,เช่า,บ้าน,คอนโด,ที่อยู่ กับ www.properlive.com


Kukujang


ปัญหาเกิดอีกแล้วครับ

คือใช้ wordwrap แล้วภาษาไทยที่ใช้ มันมีกล่องสี่เหลี่ยมแทรกๆมาด้วยครับ

Kobsoft

อ้างถึงจาก: RaulGonzales ใน 18 กุมภาพันธ์ 2009, 08:10:51
ขอถามต่อเลยนะครับ ถ้าเกิดเราเก็บข้อมูลที่มาจาก textarea ลง database เเล้วเรียกมันออกมา มันจะเเสดงเเบบเป็น string ติดๆกันนะครับ ทำไงให้มันเเสดงเเบบเช่นเราตอบกระทู้เเล้วกด enter มันก็เก็บข้อมูลเเล้วเเสดงตามที่เราเก็ยนะครับ

เช่นผมพิมพ์

อ้างถึง11111113


555555

555

เวลาผม query เเล้วมันจะได้
อ้างถึง11111113555555555

ผมอยากให้มันเเสดงเเบบเเรกนะครับ



สมมุติ textarea ของคุณชื่อ

<textarea name="detail" rows="0" cols="0" class="textarea"></textarea>

หลังจาก submit ไปแล้วให้แปลงเปนแบบนี้งับ

$_POST[detail] = str_replace("\n", "<br />\n", "$_POST[detail]");

แล้วจะเก็บลง db หรือว่าจะ echo ออกมาก็จะเว้นบรรทัดให้เหมือนที่ใส่ลงไปทุกประการ

Kobsoft

อ้างถึงจาก: Kukujang ใน 18 กุมภาพันธ์ 2009, 09:04:44

ปัญหาเกิดอีกแล้วครับ

คือใช้ wordwrap แล้วภาษาไทยที่ใช้ มันมีกล่องสี่เหลี่ยมแทรกๆมาด้วยครับ

:-[ capture ภาพมาโชว์หน่อยงับ


Kobsoft

 :-[  ใช้ utf-8 ป่ะ ปรับดังนี้นะ

1. ประกาศ encoding ภาษาในแท็ก head แบบนี้งับ

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>


2. save file โดยเลือก encoding เป็น utf-8 งับ (*ห้ามใช้ notepad) ให้ใช้ editplus งับ เวลา save ตอนใส่ชื่อไฟล์ เลือกช่องที่เขียนว่า Convertor เลือกเป็น UTF-8

3. ใน db เข้า phpmyadmin ไปปรับฟิลด์ encoding ให้เป็น utf8_unicode_ci

4. ที่คำสั่ง connect กับ db เพิ่ม query นี้ลงไป

MySQL_query('SET NAMES utf8');

5. แทรกคำสั่งด้านล่างนี้ลงไปด้านบน page ไว้ตรงไหนก่าได้ บนๆ

mb_internal_encoding("utf-8");

ข้อไหนทำมาแล้วให้ข้ามไปได้เลยงับ

สำหรับการใช้ฟังก์ชั่นด้านตัวอักษรของ php ระดับ advance ในการจัดการ ให้ใช้ mb_ นำหน้าฟังก์ชั่น เช่น

จากเดิม $A = substr($B, 0, $C);
เปลี่ยนเป็น  $A = mb_substr($B, 0, $C);

ฟังก์ชั่นไหนใช้ mb_ ได้บ้าง? ...สามารถ สูบภูมิ ได้ที่ www.php.net งับ