A-AA+then

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

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

การใช้งาน 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] มันรับค่าจากฟอร์ม นะครับ
ขอบคุณมากครับ

5 ความคิดเห็น

$patt = array('/สอบถามวิธีเขียนโปรแกรมแบบนี้หน่อยครับ/','/{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
^