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,037

HOME > PHP > PHP Forum > FPDF ตอนเปิดใน localhost เปิดได้ปกติ แต่พออัพโฮสจริง ขึ้นแบบนี้ครับ



 

FPDF ตอนเปิดใน localhost เปิดได้ปกติ แต่พออัพโฮสจริง ขึ้นแบบนี้ครับ

 



Topic : 136313



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



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




ตอนเปิดใน localhost เปิดได้ปกติ แต่พออัพขึ้นโฮสจริงขึ้นแบบนี้ครับ

Code
Notice: Trying to get property 'number' of non-object in /storage/ssd3/685/17318685/public_html/print_tel.php on line 70 Notice: Trying to get property 'first_name' of non-object in /storage/ssd3/685/17318685/public_html/print_tel.php on line 71 Notice: Trying to get property 'last_name' of non-object in /storage/ssd3/685/17318685/public_html/print_tel.php on line 72 Notice: Trying to get property 'position' of non-object in /storage/ssd3/685/17318685/public_html/print_tel.php on line 73


Code (PHP)
            $stmt = $db->query('select * from employee where work = "หัวหน้าส่วน" or work = "สารบรรณ" or work = "ขนส่งทั่วไป" and position <> "ลูกจ้างเหมา" order by case position when "%ห%" then 1 when "%พ%" then 2 when "จขร." then 3 when "ลูกจ้าง" then 4 when "ลูกจ้างเหมา" then 
        5 end');
        $stmt2 = $db->query('select * from employee where work = "ขนส่งวัสดุครุภัณฑ์" or position = "ลูกจ้างเหมา" order by case position when "%พ%" then 1 when "จขร." then 2 when "ลูกจ้าง" then 3 when "ลูกจ้างเหมา" then 
        4 end');
        $i = 0;
        //ork = "ขนส่งวัสดุครุภัณฑ์" or position = "ลูกจ้างเหมา"');
        while($data = $stmt->fetch(PDO::FETCH_OBJ)){$i++;
            $data2 = $stmt2->fetch(PDO::FETCH_OBJ);
            
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');

            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');




Tag : PHP, MySQL









ประวัติการแก้ไข
2021-08-06 22:53:02
2021-08-06 22:59:51
2021-08-06 23:33:12
2021-08-06 23:55:25
2021-08-07 00:34:04
2021-08-07 09:44:21
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2021-08-06 22:49:32 By : boomdaba View : 725 Reply : 19
 

 

No. 1



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



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


แปลว่าเรียกใช้ property ชื่อนั้นบนสิ่งที่ไม่ใช่ออพเจ็ค คือตัว $data ไม่ใช่ object แต่ไปเรียกแบบ object ($data->number)

ที่มันไม่ใช่ object ก็ต้องไปตรวจว่า $data มาจากไหน
เมื่อมันมาจากคำสั่ง fetch ก็ต้องเปิดเอกสารอ้างอิงดู https://www.php.net/manual/en/pdostatement.fetch.php

ในหน้าเอกสารบอกว่า


Quote:
Return Values ¶

The return value of this function on success depends on the fetch type. In all cases, false is returned on failure.


เนื่องจากมีหลายคห.ในเว็บอื่นๆบอกว่า ถ้ามันไม่มีผลลัพธ์ออกมาเลยก็จะ return false เช่นกัน
ด้วยความไม่แน่ใจดังนั้นก็ควรกำหนดให้มันแจ้ง error (throw exception) https://stackoverflow.com/a/46352628/128761

ที่ว่าบน localhost ได้นั้นมันได้จริงๆหรือเปล่า หรือมันไม่แจ้งอะไรเพราะแค่ไปปิด error เอาไว้?
ถ้าปิดเอาไว้ก็ไปเปิดด่วนเลย เพราะการแจ้ง error มันสำคัญอย่างนี้ เราต้องรู้ทุกอย่างแล้วแก้ก่อน upload server จริง ไม่ใช่ไปปิดเอาไว้ในขั้น development

และเนื่องจากี่หลายคห.ในเว็บอื่นๆบอกว่าถ้าไม่มีผลลัพธ์จะ return false ดังนั้นการนำมาใช้ต้องตรวจจนมั่นใจซะก่อน ไม่ใช่เรียกใช้ดุ่ยๆไปเลย มันก็เจ๊งสิ
ตรวจด้วย if ให้แน่ใจก่อนว่ามันเป็น object จริงๆ
Code (PHP)
if (is_object($data)) {
    // แสดงผล 
}


แต่ถ้าจะหาเหตุจริงๆก็เปิด exception ตามที่บอกว่าให้มันแจ้ง error แล้วก็เอา $data มาตรวจด้วย var_dump($data);exit(); ดูว่ามันเป็นอะไรกันแน่ ซึ่งผมเดาว่ามันได้ null ไม่น่าจะใช่ false

ดูตัวอย่างการ debug กระทู้นี้ประกอบ https://www.thaicreate.com/php/forum/136306.html#1








ประวัติการแก้ไข
2021-08-07 10:36:21
2021-08-07 10:36:52
2021-08-07 10:37:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 10:31:13 By : mr.v
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2021-08-07 10:31:13
รายละเอียดของการตอบ ::
ผมลองแล้วมันขึ้นแบบนี้อะครับ

Code
object(stdClass)#6 (13) { ["id"]=> string(2) "45" ["number"]=> string(6) "268570" ["first_name"]=> string(27) "นายสิปปกร" ["last_name"]=> string(30) "พงษ์ศุภกิจ" ["position"]=> string(11) "พขส.6" ["work"]=> string(54) "ขนส่งวัสดุครุภัณฑ์" ["job"]=> string(0) "" ["time"]=> string(18) "08.30 - 16.30 น." ["s_a"]=> string(0) "" ["time_s_a"]=> string(0) "" ["tel"]=> string(10) "0922728636" ["id_card"]=> string(1) "-" ["address"]=> string(1) "-" }



อันนี้คือปกติใช่มั้ยครับ แล้วผมไม่แน่ใจว่การเปิด exception ทำยังไง
จะเกี่ยวกับที่ผมดึงข้อมูลมาจากตารางเดียวกัน แต่ select ต่างกันมั้ยครับ



ประวัติการแก้ไข
2021-08-07 19:15:41
2021-08-07 19:27:10
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 19:15:17 By : boomdaba
 

 

No. 3



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



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


เมื่อกี้ผมลองเอา
if (is_object($data)) {
ใส่ไว้ด้านบน แบบนี้
Code (PHP)
if (is_object($data2)) {

                
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');

            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');
            }   


มันเปิดได้นะครับ แต่ข้อมูลฝั่งซ้ายถูกตัดออกไปเท่ากับฝั่งขวาเลย ความจริงข้อมูลฝั่งซ้ายต้องเยอะกว่าฝั่งขวาครับ
123
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 21:48:11 By : boomdaba
 


 

No. 4



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



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


ตัว data ไหนกันแน่ที่มันแจ้งว่าเรียกใช้โดยไม่ได้เป็น object น่ะ ให้ลอง var_dump ตัวนั้นออกมาดู จะได้รู้ก่อนว่ามันคืออะไร มันคือ null หรือ false
ที่มันว่างก็เพราะไม่เข้าเงื่อนไข ที่ไม่เข้าเงื่อนไข is_object เพราะมันไม่เป็น object ถึงบอกว่าต้อง var_dump ออกมาดู


การเปิด exception ก็ดูตัวอย่างลิ้งค์ที่ผมให้ดูข้างบน ดูเทียบจาก config pdo ของคุณ มันจะมี argument 4 ที่ให้ใส่ option ให้กำหนดตรงนั้น หรือดูตัวอย่างของผมที่นี่ https://www.thaicreate.com/php/forum/136316.html

พอเปิด exception แล้วเวลามีปัญหาอะไรมันจะร้องเตือนเลย จะหาจุดแก้ได้ง่าย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 22:06:12 By : mr.v
 


 

No. 5



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



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


เอางี้ ตัวอย่างการหาแบบเจาะจง

Code (PHP)
while {
    if (is_object($data2)) {
        // แสดงผล
    } else {
        var_dump($data2);// ตรงนี้ควรจะมีผลออกมา เอาตรงนี้แหละมาดู จะได้เจาะเข้าหาต้นเหตุ
    }
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 22:09:02 By : mr.v
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : mr.v เมื่อวันที่ 2021-08-07 22:09:02
รายละเอียดของการตอบ ::
ขึ้นแบบนี้อะครับ
Code
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)




ประวัติการแก้ไข
2021-08-07 22:24:36
2021-08-07 22:26:58
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 22:19:17 By : boomdaba
 


 

No. 7



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



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


ขึ้น false เป็นไปได้ว่าข้อมูลไม่มี ถ้าเปิด exception แล้วเปิดแสดง error ใน php.ini แล้วไม่มี error ก็คือ false ตรงนี้อย่างที่เขาบอก ไม่มีค่าออกมาใน loop รอบนั้น


อีกปัญหาที่เห็น

จากตัวอย่างมันมี 2 query ดังนั้นผลลัพธ์มันจะมี 2 ชุด แต่คุณเอาไป while ในชุดเดียวกัน คือ while($data = $stmt->fetch(PDO::FETCH_OBJ)){...}

ถ้าหาก $data มีน้อยกว่า $data2 มันก็กลายเป็น $data2 ออกมาไม่หมด
ถ้าหาก $data มีมากกว่า $data2 มันก็อาจจะมีอะไรแปลกๆเช่น วนลูปไปในสิ่งที่ไม่มี อาจจะเกิด error ออกมาหรือเปล่าไม่รู้เพราะไม่เคยทำแบบนี้

ทางที่ดีควรวนรอบของใครของมันแยกกันไป
การใช้ if (is_object()) ก็เช่นกัน ควรแยกของใครของมัน เพราะลองคิดดูถ้าเงื่อนไขเป็นจริงแต่ตัวแปรในเงื่อนไขเป็นคนละตัว ก็มีแต่สร้างปัญหาใหม่ขึ้นมาอีก


ประวัติการแก้ไข
2021-08-07 22:32:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 22:30:57 By : mr.v
 


 

No. 8



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



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


ถ้าตารางทางซ้ายขวาต่างกัน 6 บรรทัดเท่ากับจำนวน false นั่นแสดงว่า false ของ fetch() คือไม่มีค่าออกมาครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 22:33:15 By : mr.v
 


 

No. 9



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : mr.v เมื่อวันที่ 2021-08-07 22:30:57
รายละเอียดของการตอบ ::
ผมลองจัด while ใหม่แบบแยก ไม่ว่าจะลองวิธีไหน มันจะแสดงผลแปลกๆ ไม่ตรงตามที่ต้องการเลยครับ
แบบบางทีอีกฝั่งเรียงจากบนลงมาข้างล่าง (ปกติ) แต่อีกฝั่ง เรียงจากซ้ายไปขวา
9

Code (PHP)
while($data = $stmt->fetch(PDO::FETCH_OBJ)){$i++;
    
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');
        }
        while($data2 = $stmt2->fetch(PDO::FETCH_OBJ)){$i++;
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');
        }




ประวัติการแก้ไข
2021-08-07 22:42:39
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 22:41:30 By : boomdaba
 


 

No. 10



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



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


ถ้าเป็น mysql, mariadb มันจะใช้ rowCount() นับจำนวนข้อมูลได้
https://www.php.net/manual/en/pdostatement.rowcount.php

ก็ให้เอา rowCount() นี้มาใช้นับว่าอันไหนมีมากกว่า
Code (PHP)
$countStmt = $stmt->rowCount();
$countStmt2 = $stmt2->rowCount();

if ($countStmt > $countStmt2) {
    $useStmt = $stmt;
} else {
    $useStmt = $stmt2;
}
unset($countStmt, $countStmt2);



แล้วเอา $useStmt ไปใช้ในลูปรอบเดียวได้เลย เป็นการแก้ปัญหาแบบค่อนข้างมักง่ายแต่มันได้ผล
Code (PHP)
while ($useStmt->fetch(\PDO::FETCH_OBJ)) {
    $data = $stmt->fetch(\PDO::FETCH_OBJ);
    $data2 = $stmt2->fetch(\PDO::FETCH_OBJ);
    if (is_object($data )) {
        // แสดงผล $data->blabla
    }

    if (is_object($data2)) {
        // แสดงผล $data2->blabla
    }
}


อันนี้แบบคิดด่วนๆ น่าจะใช้ได้ ง่าย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:11:44 By : mr.v
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : mr.v เมื่อวันที่ 2021-08-07 23:11:44
รายละเอียดของการตอบ ::
8
ได้แบบนี้อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:24:57 By : boomdaba
 


 

No. 12



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



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


ตอบความคิดเห็นที่ : 11 เขียนโดย : boomdaba เมื่อวันที่ 2021-08-07 23:24:57
รายละเอียดของการตอบ ::
ไม่เห็นโค้ดบอกไม่ได้ เพราะไม่รู้ว่าลอกผิดหรือเปล่า

ไม่งั้นก็กลับไปใช้แบบเดิมแล้วแยก if ให้ตรงตัวแปรที่จะใช้



ประวัติการแก้ไข
2021-08-07 23:29:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:28:15 By : mr.v
 


 

No. 13



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



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


ตอบความคิดเห็นที่ : 12 เขียนโดย : mr.v เมื่อวันที่ 2021-08-07 23:28:15
รายละเอียดของการตอบ ::
Code (PHP)
$countStmt = $stmt->rowCount();
        $countStmt2 = $stmt2->rowCount();

        if ($countStmt > $countStmt2) {
        $useStmt = $stmt;
        } else {
        $useStmt = $stmt2;
        }
        unset($countStmt, $countStmt2);
      
   
        while ($useStmt->fetch(\PDO::FETCH_OBJ)) {
            $data = $stmt->fetch(\PDO::FETCH_OBJ);
            $data2 = $stmt2->fetch(\PDO::FETCH_OBJ);
            $i++;
            if (is_object($data )) {
            

                
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');
            }
            if (is_object($data )) {
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');
            }
        }


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:29:26 By : boomdaba
 


 

No. 14



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



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


คุณเอา if (is_object($data )) { ไปใช้ทั้ง 2 อันได้ไง
คุณไม่อ่านไม่ทำความเข้าใจโค้ดเลยนี่นา

การใช้ if ผมบอกอยู่ข้างบน
Quote:
การใช้ if (is_object()) ก็เช่นกัน ควรแยกของใครของมัน เพราะลองคิดดูถ้าเงื่อนไขเป็นจริงแต่ตัวแปรในเงื่อนไขเป็นคนละตัว ก็มีแต่สร้างปัญหาใหม่ขึ้นมาอีก


นั่นหมายความว่าถ้าเอา if (is_object($data)) มาใช้ ข้างในก็ควรเป็นการเรียกใช้ตัวแปรของ $data
ตัวอย่างผมก็เขียน คห 10 คุณลองไล่โค้ดทีละตัวอักษร ผมเอา $data และ $data2 มาใส่ในเงื่อนไข แล้วคอมเม้นท์ไว้ด้วย ลองอ่านดูละเอียดๆ โค้ดมีอยู่ไม่กี่บรรทัดหรอก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:33:37 By : mr.v
 


 

No. 15



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



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


if ล่างไม่ใช่ $data2 แต่ดันเรียกใช้ $data2 มันเลยไปเข้าเงื่อนไขผิดอัน สร้างปัญหาใหม่อย่างที่ผมบอกเลยใช่มั้ยล่ะ

ตกไปตัวนึง แก้ให้ถูกก็น่าจะได้แล้วมั้ง?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:39:07 By : mr.v
 


 

No. 16



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



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


ตอบความคิดเห็นที่ : 15 เขียนโดย : mr.v เมื่อวันที่ 2021-08-07 23:39:07
รายละเอียดของการตอบ ::
ออโทษทีครับ ผมพิมพ์ตกไป แต่พอใส่ 2 เข้าไปก็เป็นแบบนี้อยู่ดีครับ
Code (PHP)
$countStmt = $stmt->rowCount();
        $countStmt2 = $stmt2->rowCount();

        if ($countStmt > $countStmt2) {
        $useStmt = $stmt;
        } else {
        $useStmt = $stmt2;
        }
        unset($countStmt, $countStmt2);
      
   
        while ($useStmt->fetch(\PDO::FETCH_OBJ)) {
            $data = $stmt->fetch(\PDO::FETCH_OBJ);
            $data2 = $stmt2->fetch(\PDO::FETCH_OBJ);
            $i++;
            if (is_object($data)) {
            

                
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');
            }
            if (is_object($data2)) {
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');
            }
        }

7

แล้วก็ถ้ากลับไปใช้แบบเดิมแล้วแยก if ก็จะเป็นแบบนี้ครับ
Code (PHP)
while($data = $stmt->fetch(PDO::FETCH_OBJ)){$i++;
            $data2 = $stmt2->fetch(PDO::FETCH_OBJ); 
            
            if (is_object($data)) {
                
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');
            }
            
            if (is_object($data2)) {
            
            
            

            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');
            
        }
    }

5

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-07 23:53:53 By : boomdaba
 


 

No. 17



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



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


ไม่เข้าใจจะให้มันออกมายังไงแน่?

คือถ้าสมมุติว่าใช้วิธีของผม ข้อดีมันจะหาฝั่งที่มากกว่าแล้วเอามาวนลูปให้

การใช้ if (is_object()) ครอบไว้นั้นถูกแล้ว ไม่ควรเอาออก เพราะไม่งั้นมันจะเป้นการเรียก property บน false แล้วมันจะ error
ดังนั้นที่เหลือ.... ซึ่งผมก็ไม่รู้จะแนะนำตรงต้องการมั้ยเพราะไม่รู้จะให้มันออกมาเป็นยังไง

ที่เหลือก็คือ ทั้ง if ของ $data และ $data2 ทั้ง 2 เงื่อนไข ให้ใส่ else

Code (PHP)
if (is_object($data)) {
    //
} else {

}
if (is_object($data2)) {
    //
} else {

}


และใน else ให้ใช้คำสั่งของ fpdf เติม cell เข้าไปให้มันเต็ม โดยที่ไม่ต้องใส่ค่าอะไรลงไป
ตัวอย่าง
$this->Cell(6,5.1, '', 1,0, 'C');
เติมจำนวน cell ให้เท่าๆกันกับตอนที่คุณเรียกใช้นั่นแหละ แต่ให้มันเป็น cell ว่างๆ
ย้ำว่าจำนวนเท่าๆกัน ที่ผมเห็นแต่ละ loop แต่ละเงื่อนไข จะมี 6 cell ก็ใส่ลงไป

Code (PHP)
if (is_object($data)) {
    // เงื่อนไขที่ผ่าน
} else {
    // เติม cell ว่างๆ 6 ช่องเท่ากับในเงื่อนไขบน (เงื่อนไขที่ผ่าน)
}
if (is_object($data2)) {
    // เงื่อนไขที่ผ่าน
} else {
    // เติม cell ว่างๆ 6 ช่องเท่ากับในเงื่อนไขบน (เงื่อนไขที่ผ่าน)
}


แบบนี้ คงเข้าใจนะ พอเติมเซลล์ว่างๆลงไป มันน่าจะได้พอดีๆกันซ้ายขวาแต่ฝั่งที่ไม่มีข้อมูลจะว่างๆไปแค่นั้น
ไม่รู้ใช่แบบนี้เปล่าที่ต้องการ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-08 00:13:31 By : mr.v
 


 

No. 18



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



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


ตอบความคิดเห็นที่ : 17 เขียนโดย : mr.v เมื่อวันที่ 2021-08-08 00:13:31
รายละเอียดของการตอบ ::
ทำได้แล้วครับ ดีใจมาก ขอบคุณมากๆนะครับ
ผมลองทำแบบนี้
Code (PHP)
while($data = $stmt->fetch(PDO::FETCH_OBJ)){$i++;
            $data2 = $stmt2->fetch(PDO::FETCH_OBJ); 
            
            if (is_object($data)) {
                
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data->tel),1,0,'C');
            } else {
                $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', ''),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', ''),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            }
            
            if (is_object($data2)) {
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', $i),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', $data2->number),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', $data2->first_name),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', $data2->last_name),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', $data2->position),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', $data2->tel),1,1,'C');
            
        } else {
            $this->Cell(6,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            $this->Cell(14,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            $this->Cell(18,5.1,iconv('UTF-8', 'TIS-620', ''),'LB',0,'L');
            $this->Cell(17,5.1,iconv('UTF-8', 'TIS-620', ''),'RB',0,'L');
            $this->Cell(13,5.1,iconv('UTF-8', 'TIS-620', ''),1,0,'C');
            $this->Cell(27,5.1,iconv('UTF-8', 'TIS-620', ''),1,1,'C');
        }
    }


ได้แบบที่ต้องการเลย
222

ขอบคุณมากจริงๆครับ ที่พยายามช่วยผม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-08 00:32:51 By : boomdaba
 


 

No. 19



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



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


เวลาเติม cell ว่างๆ iconv ก็ไม่ต้องใช้แล้วเพราะมันว่างเปล่า เรียกใช้ไปก็เปลือง resource server
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-08-08 00:35:05 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : FPDF ตอนเปิดใน localhost เปิดได้ปกติ แต่พออัพโฮสจริง ขึ้นแบบนี้ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 05
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 อัตราราคา คลิกที่นี่