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

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

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

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« เมื่อ: 08 สิงหาคม 2017, 15:31:43 »

ผมกำลังเขียนเว็บ php เล็กอันหนึ่ง
ตอนนี้ใกล้เสร็จเเล้ว ขาดแต่ว่า จะสร้างหน้าใหม่ ยังไงครับ?


มันมีแค่ตารางเดียว  แล้วในตารางนั้นก็มี 5 column อ้ะ



หน้าเว็บโชว์ทั้งหมด show.php




แต่จะสร้างหน้าใหม่ ยังไงเหรอครับ
ให้แต่ละหน้าแยกแสดงเป็น url แต่ลหน้า มีข้อมูล เป็น TOPIC1 + content1 เป็นแบบนี้ครับ

พอกด  domain.com/topic1 เข้าไปจะเป็น
--------
แสดง TOPIC1
แสดง content1
--------


พอกด  domain.com/topic2 เข้าไปจะเป็น
--------
แสดง TOPIC2
แสดง content2
--------


ช่วยชี้แนะด้วยครับ
 wanwan017





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

thaisew
ก๊วนเสียว
*

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

กระทู้: 274



ดูรายละเอียด
« ตอบ #1 เมื่อ: 08 สิงหาคม 2017, 15:48:50 »

ตัองศึกษาการ get และ post เพิ่มเติม ครับแล้ว ได้ค่ามาก็เอาไป query ต่อ
ลองดูจากลิ้งนี้ตรับ https://www.tutorialspoint.com/php/php_get_post.htm

มีอีกหลายที่ลองๆดูครับ
บันทึกการเข้า
picharnan
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,400



ดูรายละเอียด
« ตอบ #2 เมื่อ: 08 สิงหาคม 2017, 15:52:53 »

ลองอ่านกระทู้นี้ดูครับ

http://www.thaiseoboard.com/index.php/topic,16784.0.html
บันทึกการเข้า
sputtaro
สมุนแก๊งเสียว
*

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #3 เมื่อ: 08 สิงหาคม 2017, 16:01:22 »

การเพิ่มหน้า ก็คือการ Insert เอาข้อมูลไปเก็บในฐานข้อมูลโดยใช้ฟอร์มเป็นตัวจัดการส่งค่า
ตัวอย่าง ตามลิ้งครับ
https://www.w3schools.com/php/php_mysql_insert.asp

ฟอร์มส่งข้อมูล ลองดูตามลิ้งค์นี้ครับ
https://www.tutorialrepublic.c...ial/php-mysql-insert-query.php

ในลิ้งที่ให้ไว้ จะมีเมนูด้านซ้ายมือ ลองเลือกดูครับ มีทั้ง update ไว้แก้ไขข้อมูล
delete และอื่นๆ พอเป็นแนวทางในการเริ่มต้นที่ดี

***************
ไหนๆแล้ว ก็อยากบอกเพิ่มเติมว่า ควรเริ่มต้นด้วยการออกแบบโครงสร้างตารางให้ดีด้วยนะครับ

เช่น ฟิลด์ topic ควรตั้งค่าให้เป็น unique ซึ่งจะทำให้
ในฟิลด์นี้ ไม่มีข้อความที่ซ้ำกันได้เลย (ถ้าคุณพยายาม insert ข้อความที่ซ้ำกันเข้าไปยัง topic มันจะเออร์เรอร์)
ซึ่งก็คือ ไม่สามารถเพิ่มเข้าไปในฐานข้อมูลได้

เงื่อนไขนี้มีข้อดีคือ คุณใช้การส่งค่าแบบ domainname.com/หัวข้อ1 ได้โดยไม่ต้องกลัวว่าจะเกิดความผิดพลาด(ถ้า หัวข้อ1 มีอยู่จริง)

แต่ถ้าคุณไม่ทำให้มันเป็น unique เวลาเรียก หัวข้อ1 แล้วบังเอิญมันมี หัวข้อ1 อยู่ซ้ำกัน ข้อมูล content ที่ได้ อาจไม่ตรงกับที่ต้องการได้ครับ
ในกรณีนี้ การเรียกแบบ domain.com?id=1 จะให้ผลที่ถูกต้องกว่า ถ้าฟิลดฺ id มีค่าที่ไม่ซ้ำกัน

************************
ลองทดสอบ โดยเพิ่ม เร็คคอร์ด
id=4, topic=หัวข้อ2, content=เนื้อหาหัวข้อ4 ดู
แล้วเรียก domain.com/หัวข้อ2

***********************

มันยากไปในตอนนี้
ค่อยๆเริ่มไปก่อนก็ได้ครับ
ความผิดพลาดจะช่วยให้เราดีขึ้น
« แก้ไขครั้งสุดท้าย: 08 สิงหาคม 2017, 16:33:53 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 08 สิงหาคม 2017, 16:41:15 »

ขอบคุณทุกท่านครับ ผมอาจจะถามผิดไปหน่อยครับ
ที่ถูกคือ เพิ่มข้อมูล ลบ แก้ไขได้หมดเเล้วววครับ
รวมถึงดึงข้อมูลทั้งหมดออกมาแสดงได้เเล้ว ในคราวเดียวเลย

แต่ติดเเค่จะเอา ข้อมูลในแต่ละเเถว ออกมาแสดงเพียง 1 หน้า ของแต่ละแถวได้อย่างไรครับ

เช่น

domain.com?id=1
เวลาเรากดเข้าลิ้งนั้น มันจะโชว์ 1 หน้า ซึ่งดึงข้อมูลจาก แถวของ id1 นั้น

จะได้หน้าที่แสดงข้อมูลดังนี้
------
หัวข้อ1
เนื้อหา1
-------


แสดงแค่นั้นอ่ะ
เขียนโค๊ดอย่างไรเหรอครับ

อยากทำแบบนี้ได้อ่ะ



ได้โปรดชี้แนะผมที  :'(
« แก้ไขครั้งสุดท้าย: 08 สิงหาคม 2017, 16:52:41 โดย Fallen » บันทึกการเข้า

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #5 เมื่อ: 08 สิงหาคม 2017, 16:51:20 »

<?php
if(isset($_GET['id'])){
   $id=$_GET['id'];
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, content, topic
FROM tablename
WHERE id=".$id."";//แก้ไขชื่อตาราง หรือ ฟิลด์ ด้วยนะครับ
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Topic: " . $row["topic"]. " <br>Content : " . $row["content"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

*************
ผมก๊อปมา แล้วแก้ไขเพิ่มเติมนิดเดียวนะครับ
ดูต้นฉบับที่นี่ครับ https://www.w3schools.com/php/php_mysql_select.asp
« แก้ไขครั้งสุดท้าย: 08 สิงหาคม 2017, 16:55:15 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 08 สิงหาคม 2017, 17:22:29 »

ขอบคุณที่ช่วยเขียนให้ครับ ทำตามแล้ว
ปรากฏว่าได้ผลคือ ไม่ว่าจะใส่ id ไปเท่าไรมันก็จะโชว์ทั้งหมดเลยครับ

เช่น

domain.com?id=1 มันก็จะโชว์

id: 1 - Topic: หัวข้อ1
Content : เนื้อหาหัวข้อ1
id: 2 - Topic: หัวข้อ2
Content : เนื้อหาหัวข้อ2
id: 9 - Topic: หัวข้อ3
Content : เนื้อหาหัวข้อ3


domain.com?id=2 มันก็จะโชว์

id: 1 - Topic: หัวข้อ1
Content : เนื้อหาหัวข้อ1
id: 2 - Topic: หัวข้อ2
Content : เนื้อหาหัวข้อ2
id: 9 - Topic: หัวข้อ3
Content : เนื้อหาหัวข้อ3

domain.com?id=3 มันก็จะโชว์

id: 1 - Topic: หัวข้อ1
Content : เนื้อหาหัวข้อ1
id: 2 - Topic: หัวข้อ2
Content : เนื้อหาหัวข้อ2
id: 9 - Topic: หัวข้อ3
Content : เนื้อหาหัวข้อ3

แก้อย่างไรดีครับ อีกนิดเดียวเท่านั้นนน

 Cry Cry
« แก้ไขครั้งสุดท้าย: 08 สิงหาคม 2017, 17:22:59 โดย Fallen » บันทึกการเข้า

thaisew
ก๊วนเสียว
*

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

กระทู้: 274



ดูรายละเอียด
« ตอบ #7 เมื่อ: 08 สิงหาคม 2017, 17:26:38 »

echo $sql ;
มาดูหน่อยครับ
บันทึกการเข้า
sputtaro
สมุนแก๊งเสียว
*

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #8 เมื่อ: 08 สิงหาคม 2017, 17:26:49 »

<?php
if(isset($_GET['id'])){
   $id=$_GET['id'];
}
echo $id.'<br>';//เช็คค่า id
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, content, topic
FROM tablename
WHERE id=".$id."";//แก้ไขชื่อตาราง หรือ ฟิลด์ ด้วยนะครับ

echo $sql.'<br>';//เช็คค่า sql

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Topic: " . $row["topic"]. " <br>Content : " . $row["content"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

******************
ลองดูค่าที่ได้รับ และสั่งพิมพ์ออกมาว่า ถูกต้องหรือไม่
บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 08 สิงหาคม 2017, 17:34:20 »

+

 wanwan019

ได้เเล้ว ขอบคุณเป็นอย่างสูงครับ
แก้ตรงนี้เอง $sql = "SELECT id, content, topic FROM member WHERE id=$id";

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

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #10 เมื่อ: 08 สิงหาคม 2017, 17:36:28 »

  wanwan020
ยินดีด้วยนะครับ
บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 08 สิงหาคม 2017, 17:48:32 »

  wanwan020
ยินดีด้วยนะครับ


ขอบคุณมากครับ

 wanwan017 wanwan019


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

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

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 09 สิงหาคม 2017, 16:58:03 »

การอ้างอิงเรียกหน้าจาก id (แบบออโต้)
มันมีปัญหาอยู่อย่างคือ เช่น ตอนนี้มีข้อมูลแค่ 3 แถว

domain.com?id=1
domain.com?id=2
domain.com?id=3 (ถูกลบแล้ว)
domain.com?id=4 (ถูกลบแล้ว)
domain.com?id=5



1. ถ้า หน้านั้นไม่มีข้อมูล คือ ถูกลบไปแล้ว id แบบออโต้ใน database จะหายไป
แต่เวลาเรียกมันก็ยังเเสดงได้แต่เป็นหน้าขาว (ไม่ error) เช่น domain.com?id=3

2. หน้าที่อื่นๆที่ยังไม่มีข้อมูล เช่น domain.com?id=6
มันก็จะเรียกได้เหมือนกัน

เขาแก้ปัญหานี้ยังไงเหรอครับ?
« แก้ไขครั้งสุดท้าย: 09 สิงหาคม 2017, 16:59:07 โดย Fallen » บันทึกการเข้า

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #13 เมื่อ: 09 สิงหาคม 2017, 17:22:52 »

สิ่งที่คุณถาม คือหลักการ ในการเขียนหน้า details page
ซึ่งผมมักจะใช้แนวทางตามนี้ครับ (ท่านอื่นๆ อาจใช้ไม่เหมือนกัน แต่ไม่ได้หมายความว่า ของท่านอื่นๆ จะไม่ดีนะครับ)

1. ตรวจสอบค่าตัวแปร
  1.1 ถ้าไม่มี หรือเป็นค่าว่าง ส่งไป 404 (ถ้ากูเกิลเจอ จะแจ้งใน Webmaster Tool ว่าเป็น soft 404)
  1.2 ถ้ามี ไปขั้นตอนที่ 2

2. เช็คว่า ตัวแปรนั้น มีอยู่ในฐานข้อมูลหรือไม่
  2.1 ถ้าไม่มี ส่งไป 404 (ถ้ากูเกิลเจอ จะแจ้งใน Webmaster Tool ว่าเป็น soft 404)
  2.2 ถ้ามี ไปขั้นตอนที่ 3

3. ใช้ตัวแปรนั้น เรียกดูฟิลดฺอื่น ในเร็คคอร์ดเดียวกัน

โดยทั่วไป ผมทำแค่นี้ครับ

***************************************
แนวทางการเขียนโค๊ด

ข้อ 1.
if(isset($_GET['productid'])){
$productid=$_GET['productid'];
}
else{
header("location: 404.php");
exit();
}

ข้อ 2.
$result= select ... from ... where productid=$productid;

if($result==1){
show others fields.... //ข้อ 3.
}
else{
header("location: 404.php");
}

นี่เป็นแนวทางแบบของผมนะครับ

******************

ในรายละเอียดจริงๆ มันจะมีเยอะกว่านี้นะครับ
นี่แค่แนวทางการเขียนของผม
« แก้ไขครั้งสุดท้าย: 09 สิงหาคม 2017, 17:37:14 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 09 สิงหาคม 2017, 17:39:34 »

สิ่งที่คุณถาม คือหลักการ ในการเขียนหน้า details page
ซึ่งผมมักจะใช้แนวทางตามนี้ครับ (ท่านอื่นๆ อาจใช้ไม่เหมือนกัน แต่ไม่ได้หมายความว่า ของท่านอื่นๆ จะไม่ดีนะครับ)

1. ตรวจสอบค่าตัวแปร
  1.1 ถ้าไม่มี หรือเป็นค่าว่าง ส่งไป 404 (ถ้ากูเกิลเจอ จะแจ้งใน Webmaster Tool ว่าเป็น soft 404)
  1.2 ถ้ามี ไปขั้นตอนที่ 2

2. เช็คว่า ตัวแปรนั้น มีอยู่ในฐานข้อมูลหรือไม่
  2.1 ถ้าไม่มี ส่งไป 404 (ถ้ากูเกิลเจอ จะแจ้งใน Webmaster Tool ว่าเป็น soft 404)
  2.2 ถ้ามี ไปขั้นตอนที่ 3

3. ใช้ตัวแปรนั้น เรียกดูฟิลดฺอื่น ในเร็คคอร์ดเดียวกัน

โดยทั่วไป ผมทำแค่นี้ครับ

***************************************
แนวทางการเขียนโค๊ด

ข้อ 1.
if(isset($_GET['productid'])){
$productid=$_GET['productid'];
}
else{
header("location: 404.php");
exit;
}

ข้อ 2.
$result= select ... from ... where productid=$productid;

if($result==1){
show others fields.... //ข้อ 3.
}
else{
header("location: 404.php");
}

นี่เป็นแนวทางแบบของผมนะครับ


 wanwan017 wanwan004

ขอบคุณครับ ผมจะลองงมดู อิอิ

ปล. ปกติท่านมีรับสอนหรือเปล่าครับ อยู่เเถวไหนเหรอครับ
บันทึกการเข้า

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #15 เมื่อ: 09 สิงหาคม 2017, 17:45:47 »

ผมอยู่ นครศรีฯ ครับ
บันทึกการเข้า
infamous
ก๊วนเสียว
*

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

กระทู้: 295



ดูรายละเอียด
« ตอบ #16 เมื่อ: 09 สิงหาคม 2017, 18:06:52 »

Logic

- $result = select * from tb where id=$id
- if $result then process data
- else redirect to 404 or 302 page by header() using
- end

ขอโทษสำหรับภาษาโปรแกรมเมอร์นะครับ
บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 10 สิงหาคม 2017, 09:17:49 »

สร้างหน้า details page แบบนี้ >>  domain.com?id=1 ทำได้แล้ว
แต่จะเป็นแบบนี้ >> http://domain.com/single.php?id=31   (single.php คือ โค๊ดหน้า details page ด้านบน)

คำถามคือ ถ้าจะทำลิ้งแบบนี้ >> domain.com/หัวข้อ2
จะเขียน url ยังไงครับ เพราะมัน "/" ไม่ได้ เช่น http://domain.com/single.php/topic1

 Tongue

อ้างถึง
ลองทดสอบ โดยเพิ่ม เร็คคอร์ด
id=4, topic=หัวข้อ2, content=เนื้อหาหัวข้อ4 ดู
แล้วเรียก domain.com/หัวข้อ2


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

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #18 เมื่อ: 10 สิงหาคม 2017, 09:41:54 »

การเปลี่ยนรูปแบบของ url ทำได้โดยใช้ความสามารถของเว็บเซอเวอร์
โดยการเขียนคำสั่งไว้ในไฟล์ .htaccess
ศึกษา พื้นฐานความรู้เกี่ยวกับไฟล์ htaccess
และ แนวทางการเขียน URL Rewriting
How To Rewrite URLs with mod_rewrite for Apache on Ubuntu 16.04


 
« แก้ไขครั้งสุดท้าย: 10 สิงหาคม 2017, 09:45:15 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #19 เมื่อ: 10 สิงหาคม 2017, 11:11:29 »

ต้องใช้ htaccess นี่เอง
ผมก็นึกว่ามันทำได้เลย อิอิอิ
ขอบคุณครับ

 wanwan004 wanwan017


ทำได้เเล้วว
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ single.php?id=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ single.php?id=$1


 wanwan019
« แก้ไขครั้งสุดท้าย: 10 สิงหาคม 2017, 13:57:40 โดย Fallen » บันทึกการเข้า

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