สอบถามวิธีเขียนโปรแกรมแบบนี้หน่อยครับ

สวัสดีครับ ผมมือใหม่ครับ อยากจะสอบถามเรื่องการเขียน โปรแกรม ต่อยอดจากเรื่องนี้หน่อยครับ

การใช้งาน Template กับเว็บไซต์ (ตอนที่ 4)


ตรงส่วนนี้ครับ

$replace[0] = 'AJAX CMS';

$replace[1] = 'Goragod.com';


คำถามคือ ถ้าเราต้องการจะแทนค่า 'AJAX CMS' หรือ 'Goragod.com' ให้เป็นตัวแปร $title , $description ตามลำดับ เพื่อให้รับค่าจาก

จากการสร้างฟอร์ม รับค่าขึ้นมา จะต้องเขียนโปรแกรอย่างไรครับ

---

ผมลองเขียนแบบนี้ แต่มันไม่ผ่านครับ



ตัวอย่าง จากไฟล์ index.php นะครับ


$replace[0] = $title;

$replace[1] = $description;



ตัวอย่าง จากฟอร์ม inputdata.html

<form name="frm_data" method="post" action="index.php">

ใส่ Title : <input name="$title" type="text" /><br/>

ใส่ Description : <input name="$description" type="text" /><br/>

<input name="but_submit" type="submit" value="Submit" />

</form>



ไม่รู้ว่าเขียนค่าตัวแปรจากอะเรย์ผิด? หรือเขียนตรงไหนผิด? หรือการเขียนที่ถูกต้อง ทำอย่างไร?

จุดประสงค์คือ จะให้
$replace[0] มันรับค่าจากฟอร์ม นะครับ

ขอบคุณมากครับ
08 ส.ค. 2556 เวลา 21:31 น. 5 1,071

$patt = array('/{TITLE}/','/{DESCRIPTION}/');

$replace=array();

$replace[] = 'GCMS';

$replace[] = 'Gragod.com';

echo preg_replace($patt, $replace, $body);
#1

คุณแอดมินครับ แบบว่า จุดประสงค์ที่ผมจะให้มันเป็นแบบนี้ครับ

1. สร้างฟอร์มขี้นมา เพื่อรับค่าที่จะใส่ลงไปเป็นคำอะไรก็ได้

2. นำค่าที่ได้นั้นมาแทนใน $replace[] = แทนค่าที่รับมาจากฟอร์มครับ



เช่น <input name="title" type="text" /><br/> เวลาเรากรอกในฟอร์มจะ กรอกคำว่า Hello world

พอเอามาแทนใน $replace[] = 'Hello world'; อัตโนมัติเลย โดยที่เราไม่ต้องเขียนไว้ก่อน



จากตัวอย่างของคุณแอดมิน ตรง $replace[] = 'GCMS'; นั้นคุณแอดมินเขียน 'GCMS' เอาไว้ตั้งแต่แรก แต่ผมต้องการให้มันเอาค่ามาจากฟอร์มที่กรอกไว้มานะครับ



ขอบคุณครับ
#2

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



$replace[] = $_POST['title'];



หรือ



$title = ......

......

$replace[] = $ttile;
#3

ต้องขอโทษจริง ๆครับ ผมอาจจะอธิบายให้แอดมิน ไม่เข้าใจเอง ขอแยกเป็นไฟล์ให้ดูแบบนี้นะครับ ว่าผมทำไม่ได้อย่างไร



1. inputdata.php

<form name="frm_data" method="post" action="indextest.php">

                   ใส่ Title ตรงนี้ <input name="Title" type="text" /><br/>

                   ใส่ Description ตรงนี้ <input name="Description" type="text" /><br/>

                   <input name="but_submit" type="submit" value="Submit" />

</form>



2. indextest.php

<?php



  // อ่าน skin

  $skin = file_get_contents( 'layout.html' );

 

  // กำหนด pattern ที่เป็นไปได้

  $patt = array( '{Title}','{Description}');



  // กำหนดค่าที่จะแสดง

    $replace[0] = $_POST['Title'];

    $replace[1] = 'This is Description';



  // แทนที่ลงใน skin และแสดงผล

  echo str_replace( $patt , $replace , $skin );



?>




3. layout.html

<div style="text-align: center;">{Title}<br></div>

<h2 style="text-align: center;">{Description}</h2>



จาก ไฟล์ที่ 1 เมื่อผมใส่ Hello World ลงในช่องแรกแล้ว ปรากฏว่า เมื่อดูที่ browser มันไม่โชว์ Hello World ครับ มันเว้นว่างไว้ โชว์แต่บรรทัดที่ 2 คือ This is Description อย่างเดียว (ช่องสองนี้ไม่ได้กอรกอะไรลงไปจากไฟล์ที่ 1 ) ทำอย่างไรจะให้มันแสดง Hello World ด้วยนะครับ



ช่วยผมด้วยนะครับ ผมทำไม่เป็นจริงๆ ครับ ขอบคุณมากๆ ครับ
#4

ก็ชัดเจนนี่ครับ ว่า title มันไม่ส่งมา แต่เท่าที่ดูก้ไม่น่าจะมีอะไรผิด



ลอง print_r($_POST) ดูครับ ว่ามีค่าส่งมาหรือไม่



ถ้าค่าที่ส่งมาถูกต้อง ลองใช้ preg_replace แทน str_replace (ดูตามต้นฉบับละกัน)

 
#5
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^