ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingขอถาม PHP หน่อยครับ (รบกวนด้วยคับ แง้วๆ)
หน้า: [1] 2  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ขอถาม PHP หน่อยครับ (รบกวนด้วยคับ แง้วๆ)  (อ่าน 3843 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« เมื่อ: 04 ธันวาคม 2007, 23:17:56 »

ขอถามตามนี้เลยนะครับ

1.เวลาผมทำฟอร์มเขียนข้อความ (เหมือนกับที่เขียนตอบกระทู้นี้แหละ) จะทำอย่างไรให้เวลาเรากด Enter แล้วขึ้นบรรทัดใหม่อ่ะครับ มันแสดงผลตอนดึงออกมาจาก sql ด้วยอ่ะครับ จะเขียนคิปไงดี
(เพราะเวลาผมลองพิมข้อความแล้ว ลองขึ้นบรรทัดใหม่ ไอ sql มันไม่ขึ้นให้ผมอ่ะ มันเรียงยาวเป็นพรืดๆเลย)

2.ต่อเนื่องมาจากกระทู้ "การแทนคำ" ของผมเองที่เคยตั้งถามไปก่อนหน้านี้
อยากทราบว่าเวลาผมจะทำปุ่มแบบ SMF ที่กดตัว B แล้วมีโค๊ต [b ] กับ [/b ] ขึ้นอ่ะครับ
จะให้ไอตัว curcer ที่ไว้พิมอ่ะ มันอยุ่ตรงกลางโค๊ตดังกล่าวอ่ะครับ (เพราะเวลาพิมจะได้สะดวก)

ขอบคุนครับ

ปล. ข้อ 2 ผมไม่แน่ใจว่าต้องใช้ java มาเกี่ยวหรือป่าว ผมว่าต้องใช้แน่ๆเลย ยังไงๆก้อช่วยทีนะครับ งมมานานแล้ว ฮือๆ 

Kiss Kiss Kiss Kiss Kiss
บันทึกการเข้า

payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #1 เมื่อ: 04 ธันวาคม 2007, 23:32:30 »


1.ตอน post ให้เก็บรหัส \n จาก textarea ลง db ครับ แล้วตอนอ่านจาก db มาแสดงใช้ function nl2br() ครับ

2.ใช้ javascript ครับ แกะมาจาก smf นี่แหละ
โค๊ด:
function surroundText(text1, text2, textarea)
{
 // Can a text range be created?
 if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
 {
 var caretPos = textarea.caretPos, temp_length = caretPos.text.length;

 caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;

 if (temp_length == 0)
 {
 caretPos.moveStart("character", -text2.length);
 caretPos.moveEnd("character", -text2.length);
 caretPos.select();
 }
 else
 textarea.focus(caretPos);
 }
 // Mozilla text range wrap.
 else if (typeof(textarea.selectionStart) != "undefined")
 {
 var begin = textarea.value.substr(0, textarea.selectionStart);
 var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
 var end = textarea.value.substr(textarea.selectionEnd);
 var newCursorPos = textarea.selectionStart;
 var scrollPos = textarea.scrollTop;

 textarea.value = begin + text1 + selection + text2 + end;

 if (textarea.setSelectionRange)
 {
 if (selection.length == 0)
 textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
 else
 textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
 textarea.focus();
 }
 textarea.scrollTop = scrollPos;
 }
 // Just put them on the end, then.
 else
 {
 textarea.value += text1 + text2;
 textarea.focus(textarea.value.length - 1);
 }
}

วิธีใช้ surroundText('[b ]', '[/b ]', textarea_object)

« แก้ไขครั้งสุดท้าย: 04 ธันวาคม 2007, 23:35:17 โดย payu » บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #2 เมื่อ: 04 ธันวาคม 2007, 23:37:27 »

เด๋วจะลองดูครับ

แง้วๆ

 Smiley
บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #3 เมื่อ: 04 ธันวาคม 2007, 23:43:50 »

ข้อ 1 นะครับ

จาก

โค๊ด:
$ms=wordwrap($ms,100,"\n",1);

ใช้แบบนี้หรือป่าวครับ การเก็บ \n ลง sql

ก้อคือดึงข้อความมาจากฟอร์ม กำหนดเป็น $ms
แล้วก้อมาใส่ฟังชั่น wordwrap() เหมือนในโค๊ตป่าว
แล้วค่อยใส่ sql อีกที

แง้วๆ
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 05 ธันวาคม 2007, 11:06:55 »

ข้อ 1 นะครับ

จาก

โค๊ด:
$ms=wordwrap($ms,100,"\n",1);

ใช้แบบนี้หรือป่าวครับ การเก็บ \n ลง sql

ก้อคือดึงข้อความมาจากฟอร์ม กำหนดเป็น $ms
แล้วก้อมาใส่ฟังชั่น wordwrap() เหมือนในโค๊ตป่าว
แล้วค่อยใส่ sql อีกที

แง้วๆ

ไม่ครับ ผมขออธิบายให้ฟังแทนละกัน

คือปกติแบบฟอร์มเราจะใช้ <textarea> อยู่แล้วใช่ปะครับ
ทีนี้ textarea มันรองรับค่าแบบหลายบรรทัดได้

เมื่อเวลามีการส่งค่าฟอร์ม ค่าที่มันบอกว่าขึ้นบรรทัดใหม่คือ \n ครับ
หรือง่ายๆ คือมันมี \n อยู่แล้ว

ดังนั้นเวลาเก็บค่าก็เก็บไปปกติแหละครับ \n มันอยู่ในนั้นอยู่แล้ว

แต่พอเวลาแสดงผล ค่อยใช้ nl2br ช่วยเปลี่ยน \n เป็น <br/> ครับ

ปล. อย่าลืมใช้ mysql_escape_string เพื่อความปลอดภัยด้วยนะครับ
บันทึกการเข้า

thenetxx
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,979



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 05 ธันวาคม 2007, 12:49:44 »

 ^___^ ตามด้านบนครับ

$txt = nl2br($txt);
บันทึกการเข้า

Develop site but can't develop life
ASIA
bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #6 เมื่อ: 05 ธันวาคม 2007, 22:10:31 »

ก้อหมายความว่า

ดึงข้อความออกมาจาก sql แล้ว กำหนดตัวแปลซะ

แล้วเอามาใส่ฟังชั่น

แล้วก้อค่อย echo ออกมา ใช่มะครับ

แล้ว

mysql_escape_string

คืออารายครับ

(อาจจะโง่ไปหน่อยนะครับ)
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 05 ธันวาคม 2007, 22:30:33 »

ผมบอกผิด จริงๆ ควรใช้
mysql_real_escape_string()

ส่วนความสามารถก็..

mysql_query("insert into table(id, text) values('".mysql_real_escape_string($id)."', '".mysql_real_escape_string($text)."')");


การเอาค่าจากตัวแปรไปใส่ mysql กรุณาคร่อมด้วย function mysql_real_escape_string ทุกครั้ง
1. รันได้ชัวร์
2. ป้องกัน sql injection (hack ฐานข้อมูล) ได้ด้วย
บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #8 เมื่อ: 05 ธันวาคม 2007, 22:34:49 »

ผมบอกผิด จริงๆ ควรใช้
mysql_real_escape_string()

ส่วนความสามารถก็..

mysql_query("insert into table(id, text) values('".mysql_real_escape_string($id)."', '".mysql_real_escape_string($text)."')");


การเอาค่าจากตัวแปรไปใส่ mysql กรุณาคร่อมด้วย function mysql_real_escape_string ทุกครั้ง
1. รันได้ชัวร์
2. ป้องกัน sql injection (hack ฐานข้อมูล) ได้ด้วย

กำหนดตอนเก็บใส่ sql เลยหรอครับ
โค๊ด:
mysql_query("insert into table(id, text) values('".mysql_real_escape_string($id)."', '".mysql_real_escape_string($text)."')");
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 05 ธันวาคม 2007, 22:36:39 »

ใช่ครับ มันใช้ช่วยชีวิตได้ ไม่งั้นโดนแน่ๆ  Lips Sealed
บันทึกการเข้า

icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #10 เมื่อ: 06 ธันวาคม 2007, 02:55:01 »

mysql_escape_string ก็ใช้ได้ครับ
ความแตกต่างของ 2 function นี้อยู่ที่ mysql_escape นั่น php ทำงานเอง
ส่วน mysql real escape ตัว php จะไปเรียก library ของ mysql ให้ทำงานให้
ซึ่ง algorithm ก็ตัวเดียวกันนั่นแหละ
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
thenetxx
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,979



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 12 ธันวาคม 2007, 21:41:54 »

mysql_escape_string ก็ใช้ได้ครับ
ความแตกต่างของ 2 function นี้อยู่ที่ mysql_escape นั่น php ทำงานเอง
ส่วน mysql real escape ตัว php จะไปเรียก library ของ mysql ให้ทำงานให้
ซึ่ง algorithm ก็ตัวเดียวกันนั่นแหละ


เก็บเกี่ยว ๆ ๆ  เพิ่งรู้ครับ   :Smiley
บันทึกการเข้า

Develop site but can't develop life
ASIA
bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #12 เมื่อ: 13 มกราคม 2008, 16:51:29 »


1.ตอน post ให้เก็บรหัส \n จาก textarea ลง db ครับ แล้วตอนอ่านจาก db มาแสดงใช้ function nl2br() ครับ

2.ใช้ javascript ครับ แกะมาจาก smf นี่แหละ
โค๊ด:
function surroundText(text1, text2, textarea)
{
 // Can a text range be created?
 if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
 {
 var caretPos = textarea.caretPos, temp_length = caretPos.text.length;

 caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;

 if (temp_length == 0)
 {
 caretPos.moveStart("character", -text2.length);
 caretPos.moveEnd("character", -text2.length);
 caretPos.select();
 }
 else
 textarea.focus(caretPos);
 }
 // Mozilla text range wrap.
 else if (typeof(textarea.selectionStart) != "undefined")
 {
 var begin = textarea.value.substr(0, textarea.selectionStart);
 var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
 var end = textarea.value.substr(textarea.selectionEnd);
 var newCursorPos = textarea.selectionStart;
 var scrollPos = textarea.scrollTop;

 textarea.value = begin + text1 + selection + text2 + end;

 if (textarea.setSelectionRange)
 {
 if (selection.length == 0)
 textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
 else
 textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
 textarea.focus();
 }
 textarea.scrollTop = scrollPos;
 }
 // Just put them on the end, then.
 else
 {
 textarea.value += text1 + text2;
 textarea.focus(textarea.value.length - 1);
 }
}

วิธีใช้ surroundText('[b ]', '[/b ]', textarea_object)



ไอตรงนี้อ่ะ

วิธีใช้ surroundText('[b ]', '[/b ]', textarea_object)

ใส่ตรงไหนหรอครับ

ตรงลิ้งเลยหรอ

ผมลองแล้วไม่ได้

ใส่ javascript: ต่อข้างหน้า surroundText แล้วก้อไม่ได้ครับ

ปล.ต้องกำหนดชื่อของ textarea หรือป่าว

หรือยังไงบอกทีนะครับ
บันทึกการเข้า

payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #13 เมื่อ: 13 มกราคม 2008, 17:09:34 »


ไอตรงนี้อ่ะ

วิธีใช้ surroundText('[b ]', '[/b ]', textarea_object)

ใส่ตรงไหนหรอครับ

ตรงลิ้งเลยหรอ

ผมลองแล้วไม่ได้

ใส่ javascript: ต่อข้างหน้า surroundText แล้วก้อไม่ได้ครับ

ปล.ต้องกำหนดชื่อของ textarea หรือป่าว

หรือยังไงบอกทีนะครับ

ใช้แบบเดียวกับ smf เลยครับ
โค๊ด:
<a href="javascript:void(0);" onclick="surroundText('[b]', '[/b]', document.forms.postmodify.message); return false;"><img ...></a>

<img > คือ image ปุ่ม B (bold)
document.forms.postmodify.message คือ textarea object

บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #14 เมื่อ: 13 มกราคม 2008, 17:14:31 »

เอ่อ...

ผมลองใส่ลิ้งค์อันนี้ไปแล้ว

ปรากฏว่าก้อไม่มีอะไรเกิดขึ้นอ่ะครับ

โดย textarae ของผม  name="a" ครับ

ต้องทำการแก้ตรงไหนหรือป่าวครับ

ไม่งั้นมันจะขึ้นใน textare ของผมหรอครับ

(ชักงงๆ)

อิอิ
บันทึกการเข้า

payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #15 เมื่อ: 13 มกราคม 2008, 17:42:45 »


โค๊ด:
<script language="javascript">
function surroundText(....) {
}
</script>
<body>
<a href="javascript:void(0);" onclick="surroundText('[b]', '[/b]', document.forms.f.a); return false;">bold</a>
<form name="f" id="f" ...>
<textarea name="a"> ...</textarea>
</form>

บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #16 เมื่อ: 13 มกราคม 2008, 17:59:39 »

ขอบคุณมากๆๆๆๆเลยครับ

ไม่รู้จะสรรหาคำอะไรมาขอบคุณแล้วเนี่ย

ีดีใจๆมากๆเลย

อิอิ

*-*

ปล.ถ้าขอถามอีกข้อนึงจะโกดมั๊ย อิอิ (อ่าาาส์)

ใน textarea ถ้าพิมพ์ยาวๆๆๆๆมันก้อจะมี scrollbar ใช่มั๊ยครับ (ใน textarea)

แล้วพอ echo ออกมาบน div แล้วมันเกินกรอบออกมาอ่ะครับ

แบบว่า....

ถ้าผมจะทำแบบ smf คือเวลาพิมยาวๆๆ แล้วพอ แสดงบน div หรืออะไรก้อตามแต่ มันจะมี scroll bar ขึ้นอ่ะ
(พี่ลองพิมยาวๆๆๆๆมากๆๆๆ ใน 1 บรรทัดอ่ะ แล้วลองแสดงตัวอย่างดู มันจะมี scrollbar ขึ้นครับ)

หรือว่าพี่มีแนวทางอย่างอื่นบ้างครับ

มันเกิดออกมาจาก div แล้วมันลอยๆอยู่ไม่สวยเลยครับ
ลองกำหนดความกว้างของ div แล้ว ก้อยังทะลุออกไปอยุ่ดีอ่ะครับ

ขอคำแนะนำด้วยนะครับ

ปล. อย่าโกดนะครับ ถ้าขี้เกียดก้อไม่เปนไรครับ แหะๆ

แบบนี้อ่ะครับ ไม่รู้เห็นป่าว
V
V
V
V

9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
บันทึกการเข้า

payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #17 เมื่อ: 13 มกราคม 2008, 21:20:41 »

ปล.ถ้าขอถามอีกข้อนึงจะโกดมั๊ย อิอิ (อ่าาาส์)

ใน textarea ถ้าพิมพ์ยาวๆๆๆๆมันก้อจะมี scrollbar ใช่มั๊ยครับ (ใน textarea)

แล้วพอ echo ออกมาบน div แล้วมันเกินกรอบออกมาอ่ะครับ

แบบว่า....

ถ้าผมจะทำแบบ smf คือเวลาพิมยาวๆๆ แล้วพอ แสดงบน div หรืออะไรก้อตามแต่ มันจะมี scroll bar ขึ้นอ่ะ
(พี่ลองพิมยาวๆๆๆๆมากๆๆๆ ใน 1 บรรทัดอ่ะ แล้วลองแสดงตัวอย่างดู มันจะมี scrollbar ขึ้นครับ)

หรือว่าพี่มีแนวทางอย่างอื่นบ้างครับ

มันเกิดออกมาจาก div แล้วมันลอยๆอยู่ไม่สวยเลยครับ
ลองกำหนดความกว้างของ div แล้ว ก้อยังทะลุออกไปอยุ่ดีอ่ะครับ

ขอคำแนะนำด้วยนะครับ

ปล. อย่าโกดนะครับ ถ้าขี้เกียดก้อไม่เปนไรครับ แหะๆ

แบบนี้อ่ะครับ ไม่รู้เห็นป่าว
V
V
V
V

9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999


ถ้ามี FF นะครับ + plugin web developer จะสามารถ view ดู DOM element + css ได้เลย (แถมมีเครื่องมืออื่นๆ อีกเต็มไปหมด)

จะเห็นว่า smf เค้าใช้ style sheet ในการทำอย่างที่บอกครับ ... แค่นี้เอง

.post
{
  width: 100%;
  overflow: auto;
}


บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #18 เมื่อ: 13 มกราคม 2008, 21:31:06 »

เอ่อ...

คราส .post นี่ เอาไปเปนคราสของ div ที่จะให้ echo ใช่มะครับ

overflow: auto;
^
^
^
^

มันมีหน้าที่อะไรหรอครับ
บันทึกการเข้า

bankkungz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 948



ดูรายละเอียด
« ตอบ #19 เมื่อ: 13 มกราคม 2008, 21:49:49 »

ทำได้แล้วครับ

..................

จากเรื่องที่แทรก
โค๊ด:
[b][/b]
อ่ะครับ

ใน FF เล่นได้นะครับ แต่ใน IE มันไม่ได้อ่ะครับ

ต้องเพิ่มโค๊ตตรงไหนหรือป่าวครับ

ที่ว่าไม่ได้คือ พอ drag คำแล้ว กดลิ้งค์แล้ว มันไม่แทรก
โค๊ด:
[b][/b]
คลุมคำอ่ะครับ

ต่างจาก FF มันคลุมเรียบร้อย เหมือน smf เลยครับ

แหะๆ
บันทึกการเข้า

หน้า: [1] 2  ทั้งหมด   ขึ้นบน
พิมพ์