[PHP] สอบถามการ Insert หลังข้อความ =
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา [PHP] สอบถามการ Insert หลังข้อความ =
[PHP] สอบถามการ Insert หลังข้อความ =
$text [
=ST0001
=ดินสอ
=แท่ง
=20
]
ขอความช่วยเหลือครับ อยากให้ Insert ข้อความหลัง = ลงใน MySQL ตามลำดับ
ขอบคุณสำหรับข้อมูลดีๆ ครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
แนวทางอย่างง่ายน่าจะประมาณนี้ แต่ถ้าอยากลดขั้นตอน ข้อความก่อนส่ง ตัด = ออกจะดีที่สุด
1 2 3 4 5 6 7 8 | INSERT INTO tb1 (`item`, ` name `, `unti`, `qty`) VALUES ( REPLACE ($text[0], '=' , '' ), REPLACE ($text[1], '=' , '' ), REPLACE ($text[2], '=' , '' ), REPLACE ($text[3], '=' , '' )) ; |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
ทบทวนการตัดข้อความด้วย PHP | อ่าน 78,889 |

ความคิดเห็นที่
2
ขอบคุณแอดมิน ninenik ครับ พรุ้งนี้ขอสนับสนุนเว็บไซต์นะครับ

ความคิดเห็นที่
3
ถ้าจะให้ตัด = ก่อน INSERT แล้วเป็นตัวแปรใหม่
เช่น $test = =ดินสอ =แท่ง =20;
แล้วเป็นตัวแปร
item[0] = ดินสอ;
item[1] = แท่ง;
item[2] = 20;
แล้วค่อย INSERT
เช่น $test = =ดินสอ =แท่ง =20;
แล้วเป็นตัวแปร
item[0] = ดินสอ;
item[1] = แท่ง;
item[2] = 20;
แล้วค่อย INSERT
INSERT
INTO
tb1
(`item`, `
name
`, `unti`, `qty`)
VALUES
(
$text[0],
$text[1], $text[2]);

ความคิดเห็นที่
4
1 2 3 4 5 6 7 8 9 10 | $text = [ "=ST0001" , "=ดินสอ" , "=แทง" , "=20" ]; $text = array_map ( function ( $arr ){ return str_replace ( "=" , "" , $arr ); }, $text ); print_r( $text ); // test print value |
output:
Array
(
[0] => ST0001
[1] => ดินสอ
[2] => แทง
[3] => 20
)
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
ทบทวนการตัดข้อความด้วย PHP | อ่าน 78,889 |

ความคิดเห็นที่
5
1 2 3 4 5 6 7 8 9 10 | $text = [ "=ST0001" , "=ดินสอ" , "=แทง" , "=20" ]; $text = array_map ( function ( $arr ){ return str_replace ( "=" , "" , $arr ); }, $text ); print_r( $text ); // test print value |
แล้วถ้า array ไหนไม่มี = ไม่ต้องแสดงทำได้ไหมครับ
ขอบคุณครับ

ความคิดเห็นที่
6
1 2 3 4 5 6 7 8 9 10 | $text = [ "=ST0001" , "ดินสอ" , "=แทง" , "=20" ]; $text = array_map ( function ( $arr ){ return str_replace ( "=" , "" , $arr ); }, $text ); print_r( $text ); // test print value |
เช่นถ้า ดินสอ ไม่มี = ไม่ต้องแสดง
Array
(
[0] => ST0001
[1] => แทง
[2] => 20
)
ขอบคุณครับที่แนะนำครับ

ความคิดเห็นที่
7
สามารถสร้าง หรือกำหนดเงื่อนไขเข้าไปในฟังก์ชั่นที่ใช้ร่วมกับ array_map ได้ เช่น
ถ้าต้องการให้กรณี ไม่มีเครื่องหมาย เท่ากับ ให้ส่งค่าออกมาเป็น ค่าว่างแทน ก็จะเป็นดังนี้
1 2 3 4 5 6 7 | $text = array_map ( function ( $arr ){ if (preg_match( '/=/' , $arr )){ // มีเครื่องหมายเท่ากับ return str_replace ( "=" , "" , $arr ); } else { return "" ; } }, $text ); |
สังเกตว่า key จะมีรูปแบบเดิม เพียงแต่ ค่า key เท่ากับ 1 จะเป็นค่าว่าง
1 2 3 4 5 6 7 | Array ( [0] => ST0001 [1] => [2] => แทง [3] => 20 ) |
แต่ถ้าเราต้องการให้ key เปลี่ยนแปลงไปด้วย และเรียงลำดับใหม่ ก็จะเป็น
1 2 3 4 5 6 | $text = array_values ( array_filter ( $text , function ( $arr ){ return preg_match( '/=/' , $arr ); })); $text = array_map ( function ( $arr ){ return str_replace ( "=" , "" , $arr ); }, $text ); |
สังเกตว่า จะมีการจัดลำดับใหม่
1 2 3 4 5 6 | Array ( [0] => ST0001 [1] => แทง [2] => 20 ) |
เรื่องของ key มีความสำคัญ และต้องสัมพันธ์กับการนำไปใช้งาน
* array_map วนลูปจัดรูปแบบรายการในอาเรย์ทั้งหมด
* array_filter วนลูปกรองเอาเฉพาะค่าที่เข้าเงื่อนไข ค่าที่ไม่เข้าเงื่อนไขจะถูกตัดออก
* array_values ดึงเฉพาะค่าของอาเรย์มาสร้างอาเรย์ใหม่ ทำให้ key เริ่มต้นจาก 0
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
อักขระคั่น (Delimiters) ในการใช้งาน Regular Expressions ของ PHP | อ่าน 18,070 |
การใช้งาน Meta characters ใน Regular Expressions ของ PHP | อ่าน 14,722 |

ความคิดเห็นที่
8
สอบถามเพิ่มเติมครับ input text ในที่นี้ถ้าเป็น textarea เราจะจัดให้มาเป็น array ได้ไหมครับ
พอดีผมทำบอทไลน์แล้ว type text น่าจะเป็นรูปบบเดียวกับ textarea เลยว่า พิมพ์ = แล้วให้แยกเป็น array แทน
พอดีผมทำบอทไลน์แล้ว type text น่าจะเป็นรูปบบเดียวกับ textarea เลยว่า พิมพ์ = แล้วให้แยกเป็น array แทน

ความคิดเห็นที่
9
1 2 3 4 5 | <?php $text = explode ( "\r\n" , $_POST [ 'text' ]); //แยกการขึ้นบรรทัดใหม่ // $text = preg_split("/\r\n|[\r\n]/", $_POST['text']); //แยกการขึ้นบรรทัดใหม่ print_r( $text ); ?> |
หรือแยกด้วยเครื่องหมาย เท่ากับ
1 2 3 4 5 | <?php $text = explode ( "=" , $_POST [ 'text' ]); //แยกด้วยเครื่องหมายเท่ากับ $text = array_values ( array_filter ( $text )); print_r( $text ); ?> |
array_filter จะกรองตัวที่เป็นค่าว่างออก
array_values จะสร้าง array ที่มี key เริ่มต้นที่ 0

ความคิดเห็นที่
10
ผมสามารถเรียกใช้ explode 2 รอบได้ไหมครับ

ขอบคุณทุกการสนับสนุน
![]()