Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,036

HOME > PHP > PHP Forum > PHPWord เกี่ยวกับการ Loop เนื้อหาแสดงตามเทมเพลตที่กำหนด



 

PHPWord เกี่ยวกับการ Loop เนื้อหาแสดงตามเทมเพลตที่กำหนด

 



Topic : 137175



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์




ผมเขียนหน้าเว็บให้ส่งออกไฟล์ Word โดยใช้ PHPWord แล้วติดปัญหาเรื่องจะให้ดึงข้อมูลจากฐานมาแสดงเป็นข้อๆ
คำสั่งที่ผมใช้
Code (PHP)
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\TemplateProcessor;

    session_start();

    require_once('../../services/config.inc.php');
    require_once('../f_thaidate.php');

    $id = 3;
    $stmt = $conn->prepare("SELECT p.*,o.*,MIN(c.proceed_start) AS date_s, MAX(c.proceed_end) AS date_e FROM data_projects p INNER JOIN co_office o ON p.hospcode = o.off_id INNER JOIN data_proceeds c ON p.projectid = c.projectid WHERE p.projectid = :id");
    $stmt->bindParam('id', $id, PDO::PARAM_INT);
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

    $stmt = $conn->prepare("SELECT * FROM data_objects WHERE projectid = :id");
    $stmt->bindParam('id', $id, PDO::PARAM_INT);
    $stmt->execute();
    $robj = $stmt->fetchAll(PDO::FETCH_ASSOC);

    require_once('../../plugins/phpword/vendor/autoload.php');
    $phpWord = new PHPWord();
    $section = new TemplateProcessor('project_template.docx');

    $section->setValue('Value1', $result['projectname']);
    $section->setValue('Value2', $result['projectcode']);

    $i = 1;
    foreach($robj as $robj) {
    
    $section->setValues(array('Value4' => $i, 'Value5' => $robj['objectname']));
    $i++;
    };

   header("Content-Disposition: attachment; filename=project_word.docx");
    $section->saveAs('php://output');

คิวรี่ด้วย PDO
แต่พอแสดงออกมาจะแสดงออกมาแค่ 1 แถว โดยเนื้อหามี 2 แถวเหมือนรูปด้านล่างครับ
วิธีการ
ลำดับ

ไม่สามารถว่าต้องแก้ไขยังไง



Tag : PHP, MySQL, CSS, HTML5, Word (Word.Application), Bootstrap Framework









ประวัติการแก้ไข
2024-03-28 12:21:20
2024-03-30 08:02:16
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2024-03-28 10:57:07 By : pphat21 View : 315 Reply : 6
 

 

No. 1



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


foreach($robj as $robj) {

ตัวแปรมันซ้ำกัน สีแดง น่าจะต้องเป็น $robj_ro






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-03-29 07:49:25 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2024-03-29 07:49:25
รายละเอียดของการตอบ ::
ลองทำดูแล้วก็ยังออกหัวข้อเดียวเหมือนเดิม
$i = 1;
foreach($robj as $robj_row) {

$section->setValues(array('Value4' => $i, 'Value5' => $robj_row['objectname']));
$i++;
};

วัตถุประสงค์

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-03-29 11:19:58 By : pphat21
 

 

No. 3



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


จากบันทัดนี้ เข็คข้อมูลดูหน่อยว่ามาครบไหม

Code (PHP)
$stmt->execute();
$robj = $stmt->fetchAll(PDO::FETCH_ASSOC);
die( print_r( $robj, true));



ใส่ tag php ให้โค๊ดหน่อย จะได้อ่านง่าย
เหนือกล่องกรอกข้อความ ด้านขวา

ปล. อันนี้เดาเอา รู้สึกว่า $session->setValue();
น่าจะมีคำสั่ง ขึ้นรายการใหม่ หรือเปล่า
รายการที่แสดง เป็นรายการแรก หรือรายการสุดท้าย


ปล. อีกที ไปค้นตัวอย่างมา เพื่อจะได้ประโยชน์
https://github.com/DerekMarcinyshyn/phpword/blob/master/samples/Sample_09_Tables.php


ประวัติการแก้ไข
2024-03-29 20:05:00
2024-03-29 20:07:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-03-29 19:54:32 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2024-03-29 19:54:32
รายละเอียดของการตอบ ::
หลังจากที่ลองตามคำแนะนำ โดยใช้คำสั่งนี้
Code (PHP)
    $stmt->execute();
    $robj = $stmt->fetchAll(PDO::FETCH_ASSOC);
    die( print_r( $robj, true));

###### แล้วรันไฟล์ดูจะแสดงเป็น array 2 array ครบตามจำนวนข้อความ #######
Array ( [0] => Array ( [objectid] => 3 [projectid] => 3 [objectname] => ทำแบ่งหน้าด้วย PHP กับ MySQL ย่อจำนวนหน้า ในกรณีที่มีจำนวนหน้าเยอะ ๆ ตัวอย่างการเขียนแบ่งหน้าข้อมูลด้วย PHP กับ MySQL กรณีที่มีข้อมูลตัวเลขจำนวนหน้าเยอะ ๆ โดยตัวอย่าง Code นี้จะทำการย่อจำนวนหน้าให้ดูสวยงาม ไม่ยาวจนเกินไป [d_update] => 2024-02-09 11:07:27 ) [1] => Array ( [objectid] => 4 [projectid] => 3 [objectname] => กระบวนการ loop ควรคำนวนค่าต่างๆเอาไว้ก่อนเท่าที่ทำได้ เช่น for($x=0;$x < count($array);$x) เราควรเปลี่ยนมาใช้ $max = count($array); ก่อน ค่อยเอาค่า$max ไปใช้ เพราะว่ามันจะเสียเวลาคำนวนรอบเดียวเท่านั้น [d_update] => 2024-02-09 11:10:54 ) )

#################
ส่วนที่ถามว่ารายการแสดงรายการแรก หรือรายการสุดท้าย
ตอบ : แสดงรายการแรกครับ



ประวัติการแก้ไข
2024-03-30 07:58:28
2024-03-30 08:01:12
2024-03-30 08:01:28
2024-03-30 08:02:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-03-30 07:12:28 By : pphat21
 


 

No. 5



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


พอไม่ใส่แท็ก php เลยอ่านแล้วแยกไม่ออกว่าอันไหนโค้ด อันไหนผลลัพธ์ เหมือนกับอ่านคำบ่นเลย 555
ต้องย้อนไปดูข้างบนภาพถึงรู้ว่าอ้อนั่นเนื้อหาใน DB ล่ะมั้ง?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-03-30 07:41:37 By : mr.v
 


 

No. 6



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : mr.v เมื่อวันที่ 2024-03-30 07:41:37
รายละเอียดของการตอบ ::
ต้องขออภัยด้วยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-03-30 07:58:48 By : pphat21
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHPWord เกี่ยวกับการ Loop เนื้อหาแสดงตามเทมเพลตที่กำหนด
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่