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

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

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

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #20 เมื่อ: 25 สิงหาคม 2018, 21:54:36 »

"ผมสร้าง column แล้ว ใส่ code เข้าไปข้างใน
code ที่สำหรับ get id แค่นี้ก็ กด link ไปบทความได้แล้ว รึป่าวครับ"

ใช่แล้วครับ อย่างที่บอกว่า

สรุปง่ายๆ คุณทำให้มันเป็นลิ้งที่คลิ๊กได้ ตั้งแต่ก่อนที่จะ echo json dataนั่นเอง
ก็คือ jQuery DataTable จะนำเอา json data เข้าไปจัดรูปแบบเอง แล้วแสดงผลออกมาเป็นตารางให้เรา
ถ้าต้องการให้เป็นลิ้งคลิ๊กได้ เราก็ทำลิ้งซะ แล้วให้ออกมาเป็น json data

เพียงแต่คุณต้องระวังเรื่อง encode, decode ให้ดีเท่านั้นเอง

เพิ่ม column

โค๊ด:
ALTER   TABLE TEAMS
ADD     TYPE CHAR(1)

แล้วเพิ่ม code นี้ ใน column

โค๊ด:
<a href="single.php?id=1">Click</a>
แต่จะทำอย่างไรให้เป็น link Dinamic อะครับ
id คือ id บทความของแถว ใน table นั้น

 wanwan001



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

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #21 เมื่อ: 25 สิงหาคม 2018, 22:21:43 »

ก็ใส่ $res['id'] แทนที่ 1
<a href="single.php?id=1>Click</a>
(ตุณต้องไม่ลืมว่า ผมตอบเพื่อให้เข้าใจนะ แต่วิธีการเขียนโค๊ด ต้องเขียนให้ถูกต้อง)


$res['id'] เอามาจากไหน ก็กลับไปดู ไฟล์ index.php จากคำถามของคุณ
ในลิ้งต์นี้ครับ http://www.thaiseoboard.com/index.php/topic,411740.0.html

หรือ ถ้าจะดูจากแนวของผมในเม้นที่ 14 ของโพสท์นี้
ก็ใช้ $row['uid'] ไปแทน 1
« แก้ไขครั้งสุดท้าย: 25 สิงหาคม 2018, 22:29:46 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #22 เมื่อ: 26 สิงหาคม 2018, 10:04:12 »

ก็ใส่ $res['id'] แทนที่ 1
<a href="single.php?id=1>Click</a>
(ตุณต้องไม่ลืมว่า ผมตอบเพื่อให้เข้าใจนะ แต่วิธีการเขียนโค๊ด ต้องเขียนให้ถูกต้อง)


$res['id'] เอามาจากไหน ก็กลับไปดู ไฟล์ index.php จากคำถามของคุณ
ในลิ้งต์นี้ครับ http://www.thaiseoboard.com/index.php/topic,411740.0.html

หรือ ถ้าจะดูจากแนวของผมในเม้นที่ 14 ของโพสท์นี้
ก็ใช้ $row['uid'] ไปแทน 1


ใส่มะได้
ขอบคุณมากครับ  1

 wanwan012

ถ้าจะแก้อย่างถูกต้อง ต้องใช้โค๊ด
อันนี้ใส่ไปใน javascript เดี๋ยวผมหาิวธีรวมโคีดก่อน

โค๊ด:
 $(document).ready(function() {
    var table = $('#example').DataTable( {
        "ajax": "data/arrays.txt",
        "columnDefs": [ {
            "targets": -1,
            "data": null,
            "defaultContent": "<button>Click!</button>"
        } ]
    } );
 
    $('#example tbody').on( 'click', 'button', function () {
        var data = table.row( $(this).parents('tr') ).data();
        alert( data[0]  "'s salary is: "  data[ 5 ] );
    } );
} );

เพิ่มไปใน
โค๊ด:
  <script type="text/javascript">
  $(document).ready(function() {
    $('#example').DataTable( {
      "processing": true,
      "serverSide": true,
      "ajax": "server_processing.php",

    } );
 } );
  </script>


« แก้ไขครั้งสุดท้าย: 26 สิงหาคม 2018, 11:22:16 โดย Fallen » บันทึกการเข้า

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

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #23 เมื่อ: 26 สิงหาคม 2018, 12:04:08 »

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

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

ความจริงคุณก็เข้าใกล้ความสำเร็จนั้นแล้ว ผมดูจาก ในโพสท์ที่คุณถามคำถามนี้นะ http://www.thaiseoboard.com/index.php/topic,411740.0.html
เพียงแต่คุณยังเข้าใจรายละเอียดเกี่ยวกับไฟล์ต่างๆ ทั้ง index.php และ Pagination.class.php ไม่มากพอ

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



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

ในไฟล์ index.php

1. $records = 200;
 ตรงนี้ คือ จำนวนเร็คคอร์ดทั้งหมด ที่ได้มาจากคำสั่ง sql "SELECT * FROM member ORDER BY id DESC"

2. $current = $_REQUEST['p'] ? $_REQUEST['p'] : 1;
 การรับต่า $_REQUEST['p'] ซึ่งจะทำให้เรารู้ว่า ตัวแปร $current คือ หน้าที่เท่าไหร่
 โดยค่า $_REQUEST['p'] ก็มาจาก  index.php?p=x โดย x ก็คือเลขหน้า
 ความแตกต่าง ของ $_POST, $_GET, $_REQUEST What's the difference?
 อ่านจากนี่นะครับ https://stackoverflow.com/ques...t-request-whats-the-difference

 (โดยส่วนตัว ผมไม่ใช้ $_REQUEST เพราะต้องการตรวจสอบให้มันแน่นอน ชัดเจน ว่า มาจาก $_POST หรือ $_GET)

3. $perpage
  ก็คือ จำนวนเร็คคอร์ดที่ต้องการแสดงผลใน 1 หน้า
  
4. $pager = new Pagination($link, $records, $current, $perpage);
 ตรงนี้คือ การนำเอาตัวแปรต่างๆ   คือ $link, $records, $current, $perpage ไปเข้าระบบจัดการของไฟล์ Pagination.class.php
 ซึ่งแบ่งย่อย ให้ฟังชั่นต่างๆ ทำหน้าที่ของตัวเอง เช่น
 function __construct($link, $records, $curPage, $perPage) ทำหน้าที่กำหนดค่าตัวแปรสำหรับใช้ภายในไฟล์นี้
 function render() ทำหน้าที่แสดงผล โดยมีการเรียกใช้  function compilePagination อีกที เพื่อจัดรูปแบบ
 แต่ตัวฟังชั่นนี้เอง ทำหน้าที่เพียงแค่เช็คว่า ถ้า if(!$html = self::compilePagination()) ให้แสดง Error
 ถ้าไม่  Error ก็ให้แสดงผล จากฟังชั่น compilePagination
 
*******************************************************************

ที่นี้ กลับมาพิจารณา
 $records = 200; ในที่นี้ คุณใส่เอาไว้เพื่อทดสอบ แต่นำไปใช้จริงไม่ได้
 ถ้าจะให้ใช้งานได้จริง เราต้องเขียนคำสั่ง เพื่อหาผลลัพภ์ว่า จริงๆแล้วมันมีเท่าไหร่กันแน่
 
 วิธีง่ายๆก็คือ  
 $result= mysqli_query($mysqli, "SELECT id FROM member ORDER BY id DESC) ;
 $records = mysqli_num_rows($result);
 แล้วนำค่า $records ไปแทนที่ 200
 
 แต่ผมไม่แนะนำ เพราะ SELECT * FROM member คือการค้นหาเร็คคอร์ดทั้งหมดในฐานข้อมูล
  ณ วันแรกๆ คุณอาจมีแค่ 200 เร็คคอร์ด แต่ลองคิดดู ถ้าคุณเพิ่มวันละ 20 คุณ 365 วัน. พอครบ 1 ปี คุณจะมี  7300
  แล้วลองคูณจำนวนปี ไปเรื่อยๆ และลองเพิ่มจาก 20 ต่อวัน เป็น 200 ต่อวันดู
 นี่จึงไม่ใช่เรื่องแปลก ที่ระบบจะเริ่มอืดเมื่อใช้ไปนานๆ เพราะมันมีข้อมูลจำนวนมากที่ถูกนำมาคำนวน
 
 วิธีที่ดีก็คือ $result = mysqli_query($mysqli, "SELECT id FROM member) ..... WHERE หรืออะไรอย่างอื่นก็แล้วแต่เพิ่มนะครับ
ผมเน้นตรง SELECT id โดย id ที่เราจะค้นนี้ ความจริงก็คือ ชื่อ ตอลัมน์ที่เป็น index หรือ primary key
มันจะจะช่วยลด การทำงานของระบบไปได้เยอะมาก เพราะมันจะค้นเพียงคอลมัน์เดียว และเป็นคอลัมน์ที่ได้มีการทำ index ไว้แล้ว
ต่างจาก SELECT * FROM member ที่มันจะค้นทุกคอลัมน์ ซึ่งเป็นการทำงานหนักเกินจำเป็นครับ

******************************************************************
จะเห็นได้ว่า เพียงแค่ คุณแทนค่า
 $records = 200; ด้วย  
 
 $result= mysqli_query($mysqli, "SELECT id FROM member ORDER BY id DESC") ;
 $records = mysqli_num_rows($result);

//เพิ่มส่วนนี้นะครับ เพื่อแก้ไข ส่วนอธิบายไม่ครบ
 1.
 ลบส่วนที่ไม่จำเป็นออก คือ
 for ($i = ((($current-1)*$perpage)+1);  $i <= $current*$perpage; $i++) {
$data[$i] = $i * 1001;
}

2.
 ในส่วนการแสดงผล ของเดิมคือ ตั้งแค่ while($res = mysqli_fetch_array($result)) ไปจนจบ while
คุณต้องแก้ไขด้วยการ เพิ่มคำสั่ง sql สำหรับการแสดงเนื้อหาคือ

ของเดิมคือ
   //print_r($data);
   echo "<table><tr><td>id</td><td>topic</td></tr>";
    while($res = mysqli_fetch_array($result)) {       
      echo "<tr>";
      echo "<td>".$res['id']."</td>";   
      echo "<td>".$res['topic']."</td>";
      echo "</tr>";      
   }
   
แก้เป็น

      if((isset($current))&&($current>1)){
         $start=$perpage*($current-1);
      }
      else{
         $current=1;
         $start=0;
      }
      
      $result2 = mysqli_query($mysqli, "SELECT id,topic FROM member ORDER BY id DESC LIMIT $start,$perpage") ;
      echo "<table><tr><td>id</td><td>topic</td></tr>";
      while($res = mysqli_fetch_array($result2)) {       
      echo "<tr>";
      echo "<td>".$res['id']."</td>";   
      echo "<td>".$res['topic']."</td>";
      echo "</tr>";      
      }
      echo "</table>";
   

//จบส่วนที่เพิ่งเพิ่มเติมครับ
 
 มันก็จะใช้งานจากตารางได้จริงแล้ว
 คุณเข้าใกล้มันเพียงแค่มือเอื้อมจริงๆเลยนะครับ

ส่วนการใช้งาน jQuery DataTable ผมขอแนะนำให้ download code จากลิ้งค์
https://codersfolder.com/2016/...trap-datatables-jquery-plugin/

มาลองปรับเปลี่ยนดูนะครับ จะเป็นจุดเริ่มต้นที่ดี
(ขอย้ำว่าเป็นจุดเริ่มต้นนะครับ)

หวังว่าจะเป็นประโยชน์นะครับ
« แก้ไขครั้งสุดท้าย: 26 สิงหาคม 2018, 14:29:58 โดย sputtaro » บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #24 เมื่อ: 26 สิงหาคม 2018, 20:36:04 »

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

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

ความจริงคุณก็เข้าใกล้ความสำเร็จนั้นแล้ว ผมดูจาก ในโพสท์ที่คุณถามคำถามนี้นะ http://www.thaiseoboard.com/index.php/topic,411740.0.html
เพียงแต่คุณยังเข้าใจรายละเอียดเกี่ยวกับไฟล์ต่างๆ ทั้ง index.php และ Pagination.class.php ไม่มากพอ

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



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

ในไฟล์ index.php

1. $records = 200;
 ตรงนี้ คือ จำนวนเร็คคอร์ดทั้งหมด ที่ได้มาจากคำสั่ง sql "SELECT * FROM member ORDER BY id DESC"

2. $current = $_REQUEST['p'] ? $_REQUEST['p'] : 1;
 การรับต่า $_REQUEST['p'] ซึ่งจะทำให้เรารู้ว่า ตัวแปร $current คือ หน้าที่เท่าไหร่
 โดยค่า $_REQUEST['p'] ก็มาจาก  index.php?p=x โดย x ก็คือเลขหน้า
 ความแตกต่าง ของ $_POST, $_GET, $_REQUEST What's the difference?
 อ่านจากนี่นะครับ https://stackoverflow.com/ques...t-request-whats-the-difference

 (โดยส่วนตัว ผมไม่ใช้ $_REQUEST เพราะต้องการตรวจสอบให้มันแน่นอน ชัดเจน ว่า มาจาก $_POST หรือ $_GET)

3. $perpage
  ก็คือ จำนวนเร็คคอร์ดที่ต้องการแสดงผลใน 1 หน้า
  
4. $pager = new Pagination($link, $records, $current, $perpage);
 ตรงนี้คือ การนำเอาตัวแปรต่างๆ   คือ $link, $records, $current, $perpage ไปเข้าระบบจัดการของไฟล์ Pagination.class.php
 ซึ่งแบ่งย่อย ให้ฟังชั่นต่างๆ ทำหน้าที่ของตัวเอง เช่น
 function __construct($link, $records, $curPage, $perPage) ทำหน้าที่กำหนดค่าตัวแปรสำหรับใช้ภายในไฟล์นี้
 function render() ทำหน้าที่แสดงผล โดยมีการเรียกใช้  function compilePagination อีกที เพื่อจัดรูปแบบ
 แต่ตัวฟังชั่นนี้เอง ทำหน้าที่เพียงแค่เช็คว่า ถ้า if(!$html = self::compilePagination()) ให้แสดง Error
 ถ้าไม่  Error ก็ให้แสดงผล จากฟังชั่น compilePagination
 
*******************************************************************

ที่นี้ กลับมาพิจารณา
 $records = 200; ในที่นี้ คุณใส่เอาไว้เพื่อทดสอบ แต่นำไปใช้จริงไม่ได้
 ถ้าจะให้ใช้งานได้จริง เราต้องเขียนคำสั่ง เพื่อหาผลลัพภ์ว่า จริงๆแล้วมันมีเท่าไหร่กันแน่
 
 วิธีง่ายๆก็คือ  
 $result= mysqli_query($mysqli, "SELECT id FROM member ORDER BY id DESC) ;
 $records = mysqli_num_rows($result);
 แล้วนำค่า $records ไปแทนที่ 200
 
 แต่ผมไม่แนะนำ เพราะ SELECT * FROM member คือการค้นหาเร็คคอร์ดทั้งหมดในฐานข้อมูล
  ณ วันแรกๆ คุณอาจมีแค่ 200 เร็คคอร์ด แต่ลองคิดดู ถ้าคุณเพิ่มวันละ 20 คุณ 365 วัน. พอครบ 1 ปี คุณจะมี  7300
  แล้วลองคูณจำนวนปี ไปเรื่อยๆ และลองเพิ่มจาก 20 ต่อวัน เป็น 200 ต่อวันดู
 นี่จึงไม่ใช่เรื่องแปลก ที่ระบบจะเริ่มอืดเมื่อใช้ไปนานๆ เพราะมันมีข้อมูลจำนวนมากที่ถูกนำมาคำนวน
 
 วิธีที่ดีก็คือ $result = mysqli_query($mysqli, "SELECT id FROM member) ..... WHERE หรืออะไรอย่างอื่นก็แล้วแต่เพิ่มนะครับ
ผมเน้นตรง SELECT id โดย id ที่เราจะค้นนี้ ความจริงก็คือ ชื่อ ตอลัมน์ที่เป็น index หรือ primary key
มันจะจะช่วยลด การทำงานของระบบไปได้เยอะมาก เพราะมันจะค้นเพียงคอลมัน์เดียว และเป็นคอลัมน์ที่ได้มีการทำ index ไว้แล้ว
ต่างจาก SELECT * FROM member ที่มันจะค้นทุกคอลัมน์ ซึ่งเป็นการทำงานหนักเกินจำเป็นครับ

******************************************************************
จะเห็นได้ว่า เพียงแค่ คุณแทนค่า
 $records = 200; ด้วย  
 
 $result= mysqli_query($mysqli, "SELECT id FROM member ORDER BY id DESC") ;
 $records = mysqli_num_rows($result);

//เพิ่มส่วนนี้นะครับ เพื่อแก้ไข ส่วนอธิบายไม่ครบ
 1.
 ลบส่วนที่ไม่จำเป็นออก คือ
 for ($i = ((($current-1)*$perpage)+1);  $i <= $current*$perpage; $i++) {
$data[$i] = $i * 1001;
}

2.
 ในส่วนการแสดงผล ของเดิมคือ ตั้งแค่ while($res = mysqli_fetch_array($result)) ไปจนจบ while
คุณต้องแก้ไขด้วยการ เพิ่มคำสั่ง sql สำหรับการแสดงเนื้อหาคือ

ของเดิมคือ
   //print_r($data);
   echo "<table><tr><td>id</td><td>topic</td></tr>";
    while($res = mysqli_fetch_array($result)) {       
      echo "<tr>";
      echo "<td>".$res['id']."</td>";   
      echo "<td>".$res['topic']."</td>";
      echo "</tr>";      
   }
   
แก้เป็น

      if((isset($current))&&($current>1)){
         $start=$perpage*($current-1);
      }
      else{
         $current=1;
         $start=0;
      }
      
      $result2 = mysqli_query($mysqli, "SELECT id,topic FROM member ORDER BY id DESC LIMIT $start,$perpage") ;
      echo "<table><tr><td>id</td><td>topic</td></tr>";
      while($res = mysqli_fetch_array($result2)) {       
      echo "<tr>";
      echo "<td>".$res['id']."</td>";   
      echo "<td>".$res['topic']."</td>";
      echo "</tr>";      
      }
      echo "</table>";
   

//จบส่วนที่เพิ่งเพิ่มเติมครับ
 
 มันก็จะใช้งานจากตารางได้จริงแล้ว
 คุณเข้าใกล้มันเพียงแค่มือเอื้อมจริงๆเลยนะครับ

ส่วนการใช้งาน jQuery DataTable ผมขอแนะนำให้ download code จากลิ้งค์
https://codersfolder.com/2016/...trap-datatables-jquery-plugin/

มาลองปรับเปลี่ยนดูนะครับ จะเป็นจุดเริ่มต้นที่ดี
(ขอย้ำว่าเป็นจุดเริ่มต้นนะครับ)

หวังว่าจะเป็นประโยชน์นะครับ


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

 wanwan017  :'(

  
« แก้ไขครั้งสุดท้าย: 28 สิงหาคม 2018, 13:52:32 โดย Fallen » บันทึกการเข้า

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