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 > foreach ข้อมูลแสดงได้แค่ 1 แถว ที่เหลือไม่แสดง ขอรบกวนผู้รู้ด้วยครับ



 

foreach ข้อมูลแสดงได้แค่ 1 แถว ที่เหลือไม่แสดง ขอรบกวนผู้รู้ด้วยครับ

 



Topic : 137114



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



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




มาถูกทางหรือป่าวไม่รู้นะคับ ผมยังใหม่ เพราะห่างหายไปนานครับ
จากกระทู้เดิม
https://www.thaicreate.com/php/forum/137111.html

ตาราง
id........ ... topic
|74814 = นาย ก|
|74828 = นาย ข|
|74860 = นาย ค|
|74853 = นาย ง|



Code (PHP)
$name_departments=explode(",","74814,74828,74860,74853,"); //ตัด string ตาม , ใส่ array ไว้

//foreach ($name_departments as $gNAME){ echo $gNAME; }

$query_name_departments= \Model::createQuery()
->select()
->from('category') // ดึงฐานข้อมูลจาก ตาราง category
->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก name_departments เท่ากับ ข้อมูลตาราง category_id


foreach ($query_name_departments->execute() as $item_name_departments) { $gNAME=$item_name_departments->topic; }




ผลที่ได้คือ นาย ก อย่างเดียวครับ นาย ข ค ง ไม่ออกครับ

ผมต้องใช้คำสั่งอะไรเพิ่มเติมครับ while หรือ for หรืออื่นๆ ครับ



Tag : PHP, HTML5, Laravel Framework, Apache









ประวัติการแก้ไข
2023-10-28 15:46:26
2023-10-28 15:46:48
2023-10-28 15:48:34
2023-10-28 15:49:18
2023-10-28 15:49:40
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2023-10-28 15:46:00 By : steamlose View : 406 Reply : 11
 

 

No. 1



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



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


Code (PHP)
$gNAME=[];
foreach ($query_name_departments->execute() as $item_name_departments) { 
   $gNAME[]=$item_name_departments->topic; 
}
print_r($gNAME);







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-10-30 20:33:38 By : Chaidhanan
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-10-30 20:33:38
รายละเอียดของการตอบ ::
ขอบคุณครับ

แต่ก็ยังไม่ได้ครับไม่รู้ติดอะไร

ตรงโค๊ต '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$gNAME[0]

- ถ้าใส่ $gNAME[] จะแสดงว่า Array
- ถ้าใส่ $gNAME[0] จะแสดงว่า นาย ก ถ้าใส่ 1 ก็ แสดง นาย ข ตามลำดับครับ
- ถ้าใส่ print_r($gNAME); จะแสดงว่า 1 มันไม่เรียงตามเลขที่ต้องการ (74814,74828,74860,74853,)



Code (PHP)
 // ค้นหาชื่อแผนกรับข้อความ   
		
		      $names_departmentsS=$edocument['department']; // id ของแผนกรับข้อความ 
		     // $name_departments=explode(",",$names_departmentsS);
		      
			  $name_departments=explode(',',',74814,74828,74860,74853,'); //ตัด string ตาม , ใส่ array ไว้
				
				$query_name_departments= \Model::createQuery()
				->select()
				->from('category')  // ดึงฐานข้อมูลจาก ตาราง category
				->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก  name_departments เท่ากับ ข้อมูลตาราง category_id 


		
		$gNAME=[];
               foreach ($query_name_departments->execute() as $item_name_departments) { 
              
                  $gNAME[]=$item_name_departments->topic; }
		       
		
				
    
        // ข้อความที่แสดง หรือ ที่จะส่งไปทางเมล์
        $msg = array(
		
            '{LNG_E-Document}',
			'', // เว้นบรรทัด		
			 '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$gNAME[0].',',  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง
			 
			'', // เว้นบรรทัด			
            '{LNG_Document No.}: '.$edocument['document_no'],
            '{LNG_Document title}: '.$edocument['topic'],
            '{LNG_Date}: '.Date::format($edocument['last_update']),
           // '', // เว้นบรรทัด
			'{LNG_ผู้ส่ง ----->>>>}: '.$item_name->name,  // แสดงผู้ส่งโดยจะดึงจาก \modules\edocument\views (index.php)
			
			'', // เว้นบรรทัด
            '{LNG_มีเอกสารใหม่ถึงคุณแล้ว โปรดเข้าไปตรวจสอบ}'
         
        );





ประวัติการแก้ไข
2023-10-31 08:25:02
2023-10-31 08:26:13
2023-10-31 08:28:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-10-31 05:39:18 By : steamlose
 

 

No. 3



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



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


ก็เอาไปทำนอก ลูป มันก็ทำงานครั้งเดียว อยากให้มันทำหลายๆ ครั้ง ก็ต้องทำในลูป

Code (PHP)
foreach ($query_name_departments->execute() as $item_name_departments) {
	// ข้อความที่แสดง หรือ ที่จะส่งไปทางเมล์
	$msg = array(
		'{LNG_E-Document}',
		'', // เว้นบรรทัด		
		'{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$item_name_departments->topic.',',  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง

		'', // เว้นบรรทัด			
		'{LNG_Document No.}: '.$edocument['document_no'],
		'{LNG_Document title}: '.$edocument['topic'],
		'{LNG_Date}: '.Date::format($edocument['last_update']),
		// '', // เว้นบรรทัด
		'{LNG_ผู้ส่ง ----->>>>}: '.$item_name->name,  // แสดงผู้ส่งโดยจะดึงจาก \modules\edocument\views (index.php)
		'', // เว้นบรรทัด
		'{LNG_มีเอกสารใหม่ถึงคุณแล้ว โปรดเข้าไปตรวจสอบ}'
	);
	//เรียกใช้โค๊ดสงเมลตรงนี้
	send_mail( $msg ); // บันทัดนี้แค่ตัวอย่าง เรียกใช้ ฟังก์ชั่น ส่งเมล
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-10-31 20:09:17 By : Chaidhanan
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-10-31 20:09:17
รายละเอียดของการตอบ ::

เหมือนเดิมครับ ออก แค่ id --> 74814 | นาย ก ครับ ข ค ง ไม่วนออกครับ


Code (PHP)
// ค้นหาชื่อแผนกรับข้อความ   
		
		     // $names_departmentsX=$edocument['department']; // id ของแผนกรับข้อความ 
		    //  $name_departments=explode(',',$names_departmentsX);
		      
			  $name_departments=explode(',',',74814,74828,74860,74853,'); //ตัด string ตาม , ใส่ array ไว้
				// foreach ($name_departments as $gNAME){ echo $gNAME; }
		
				$query_name_departments= \Model::createQuery()
				->select()
				->from('category')  // ดึงฐานข้อมูลจาก ตาราง category
				->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก  name_departments เท่ากับ ข้อมูลตาราง category_id 
			
		//$gNAME=[];
               foreach ($query_name_departments->execute() as $item_name_departments) {      
               // $gNAME[]=$item_name_departments->topic;  } 
		       
        $ret = array();
        // ข้อความ
        $msg = array(
		
            '{LNG_E-Document}',
			'', // เว้นบรรทัด
           // '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$item_name_departments->topic,  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง
			
			 '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$item_name_departments->topic.',',  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง
			 
			'', // เว้นบรรทัด			
            '{LNG_Document No.}: '.$edocument['document_no'],
            '{LNG_Document title}: '.$edocument['topic'],
            '{LNG_Date}: '.Date::format($edocument['last_update']),
           // '', // เว้นบรรทัด
			'{LNG_ผู้ส่ง ----->>>>}: '.$item_name->name,  // แสดงผู้ส่งโดยจะดึงจาก e-doc-server\modules\edocument\views (index.php)
			//'{LNG_ผู้ส่ง ----->>>>}: '.$edocument['topic'],  // แสดงผู้ส่งโดยจะดึงจาก e-doc-server\modules\edocument\views (index.php)
			
			'', // เว้นบรรทัด
            '{LNG_มีเอกสารใหม่ถึงคุณแล้ว โปรดเข้าไปตรวจสอบที่}',
            'URL: '.WEB_URL.'index.php?module=edocument'
        );
		
		} //  foreach ($query_name_departments->execute() 







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-01 16:49:28 By : steamlose
 


 

No. 5



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



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


ตรงไหนคำสั่ง send_mail($msg); เอามาแสดงหน่อยสิ

$msg มันถูกทับ หรือเปล่า
ใส่ print_r($msg); หน่อย
Code (PHP)
while(....){
  $msg = array(
    //........
  );
  print_r($msg);
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-01 22:32:52 By : Chaidhanan
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-11-01 22:32:52
รายละเอียดของการตอบ ::

ในส่วนโคตนี้ ผมได้นำมาจาก เว็บ kotchasan ของ อ.กรกฎ ครับ
ในส่วนของการแสดงผลที่ส่งเข้าเมล์ ปกติ ตามภาพด้านล่างครับ

ข้อมูลที่ส่งไปเมล์

ยกเว้นส่วนที่สอบถามเข้ามา คือ ไม่สามารถแสดง ผู้รับหลายรายการที่เลือกได้
ซึ่งการดึงข้อมูลออกมาจากฐานข้อมูลออกมาก็ปกติ ข้อมูล id ส่วนที่ต้องการ เพื่อนำมาค้นหาข้อมุลของอีกตารางก็ออกปกติ
(ผลการดึงข้อมูลจะเป้นลักษณะนี้ครับ --->> ,74814,74828,74860,74853, ) เพียงแต่ ต้องนำมา
explode เพื่อ เอา เครื่องหมาย , ออก แล้วมาเก็บในตัวแปลก่อน แล้วจึงนำไปเทียบกับตารางที่มีชื่อแผนกครับ
ส่วนหนึ่งผมได้สอบถามไปทางเว็บบอร์ดของ อ. ท่านแล้ว ท่านก็แนะนำมาให้ ดีบัก ดู ข้อมุลก็ออกมาปกติ ครับ


จากคำสั่ง
$name_departments=explode(',',',74814,74828,74860,74853,'); //ตัด string ตาม , ใส่ array ไว้
$query_name_departments= \Kotchasan\Model::createQuery()
->select()
->from('category') // ดึงฐานข้อมูลจาก ตาราง category
->debug()
->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก name_departments เท่ากับ ข้อมูลตาราง category_id
foreach ($query_name_departments->execute() as $item_name_departments) { $gNAME=$item_name_departments->topic; }


--------------------------------------------------------------
ผลออก ที่ console ออกมาเป็น ตามนี้ครับ
....public_html/modules/edocument/models/write.php on line 248
SELECT * FROM `devrdco1_edoc`.`edoc_category` WHERE `category_id` IN ('', '74814', '74828', '74860', '74853', '')
{"alert":"\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27","location":"index.php?module=edocument-sent&count=100&sort=last_update%20DESC&urgency=-1&sender=0"}

หมายเหตุ ลอง เปลี่ยน ตัวแปล ใน
'{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$name_departments[3].',', // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง

$name_departments[0] ผลเป็นว่าง
$name_departments[1] ผลเป็น 74814
$name_departments[2] ผลเป็น 74828
$name_departments[3] ผลเป็น 74860 ซึ่งตรงกับ array ที่ต้องการให้แสดงครับ

ด่านล่างคือส่วนที่ส่งข้อมูลไปเมล์ ผลที่ได้ ตามภาพด้านบนครับ

Code (PHP)
  if (!empty($emails)) {
                // ส่งอีเมล
                $subject = '['.self::$cfg->web_title.'] '.Language::get('There are new documents sent to you.');
                $err = \Kotchasan\Email::send(implode(',', $emails), self::$cfg->noreply_email, $subject, nl2br($msg));
                if ($err->error()) {
                    // คืนค่า error
                    $ret[] = strip_tags($err->getErrorMessage());
                }
            }





แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-02 18:33:12 By : steamlose
 


 

No. 7



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



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


ดูความต้องการ จาก คห.5
คุณกำหนดค่าให้ $msg=array(); ในลูป
แล้ว วนลูปในนั้นจนครบ result row ที่มี
แต่มันเอาค่าไปใสในตัวแปรเดียว คือ $msg
โดยที่ไม่เห็นว่า $msg ส่งไปให้การ ออกเมลตรงไหน
พอหลุด ลูป $msg มันก็จะเป็นค่าสุดท้าย ของ result row สุดท้าย
มันจะส่งเมล หลายเมลไม่ได้ เพราะมันมีค่าของเมลสุดท้ายเมลเดียว

และคชสาร นี่ผมไม่เคยใช้ คงตอบยาก เพราะไม่รู้ที่มาที่ไปของ framework ตัวนี้
ซ้ำคุณยังเอาโค๊ดมาแสดงบางส่วน ไม่รู้อันไหน model อันไหน controller

จำไว้ครับ โค๊ด มันต้องมี ครบ input calculate output
ในลูป คุณมี แค่ input คือ $msg แต่ ไม่ได้เอา $msg ไป calculate อะไรเลย
มันต้องจัดลำดับการทำงานให้ครบ


ประวัติการแก้ไข
2023-11-02 20:08:48
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-02 20:06:46 By : Chaidhanan
 


 

No. 8



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-11-02 20:06:46
รายละเอียดของการตอบ ::
ขอบพระคุณครับสำหรับคำแนะนำครับผม ผมจะไปปรับปรุงแก้ไข และศึกษาให้ยิ่งขึ้นครับ
ผมอาจจะสื่อความหมายในสิ่งต้องการผิดไป และไม่เข้าใจในการทำงานของภาษามากพอ จึงสื่อให้ผู้มาคอมเม้นต์ให้คำตอบ ไม่เข้าใจไปด้วยครับ อันนี้ต้องขออภัยอย่างสูงครับ

ที่ผมต้องการ คืออยากให้ ค่า== ฝ่าย ก, ฝ่าย ข, ฝ่าย ค,

ที่ได้จากคำสั่ง
$name_departments=explode(',',',74814,74828,74860,74853,'); //ตัด string ตาม , ใส่ array ไว้
$query_name_departments= \Kotchasan\Model::createQuery()
->select()
->from('category') // ดึงฐานข้อมูลจาก ตาราง category
->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก name_departments เท่ากับ ข้อมูลตาราง category_id
foreach ($query_name_departments->execute() as $item_name_departments) { $gNAME=$item_name_departments->topic; }

$gNAME ที่ต้องการให้เก็บค่า เพื่อจะนำไปแสดงค่า คือ ฝ่าย ก, ฝ่าย ข, ฝ่าย ค, แต่มันออกมา 1 คือ ค่า 74814 ที่เท่ากับ ฝ่าย ก ครับ

แสดงในลักษณะแบบด้านล่าง เท่านั้นครับ

งานสารบรรณ
ส่งถึงฝ่าย / แผนก ----->>>>::: ฝ่าย ก, ฝ่าย ข, ฝ่าย ค, (ตัวแปร $gNAME)
เลขที่เอกสาร: ที่ 02-11-66/000012
เรื่อง: ตำราสอบ เลื่อนฐานะ เป็นนายตำรวจ
วันที่: 02 พ.ย. 2566 เวลา 20:16 น.
ผู้ส่ง ----->>>>: แอดมิน

มีเอกสารใหม่ถึงคุณแล้ว โปรดเข้าไปตรวจสอบที่
URL:





แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-02 21:10:51 By : steamlose
 


 

No. 9



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



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


Code
public function ?????-classname(){ $result=query(); // ต้วอย่างสมมติ while( $data=$result-row){ $msg = array( //........ ); ---- โค๊ดตรงนี้มันมีอะไรอีกไหม } ---- โค๊ดตรงนี้มันมีอะไรอีกไหม }

สีแดง มันชื่ออะไร controller ตัวไหนเรียก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-03 10:17:02 By : Chaidhanan
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-11-03 10:17:02
รายละเอียดของการตอบ ::
ครับ ส่วนที่ส่งเมล์ ทั้งหมดคับ

Code (PHP)
<?php
/**
 * @filesource modules/edocument/models/email.php
 *
 * @copyright 2016 Goragod.com
 * @license https://www.kotchasan.com/license/
 *
 * @see https://www.kotchasan.com/
 */

namespace Edocument\Email;

use Kotchasan\Date;
use Kotchasan\Language;

/**
 * ส่งอีเมลไปยังผู้ที่เกี่ยวข้อง
 *
 * @author Goragod Wiriya <[email protected]>
 *
 * @since 1.0
 */
class Model extends \Kotchasan\KBase
{
    /**
     * ส่งอีเมลแจ้งการทำรายการ
     *
     * @param string $receivers  ID ผู้รับ
     * @param array $departments แผนกผู้รับ
     * @param array  $edocument  ข้อมูล
     */
    public static function send($receivers, $departments, $edocument)
    {
	
	  // query อีเมลผู้ส่ง
	  
	       $name_sent=$edocument['sender_id'];  // id ของผู้ส่งข้อความ
		  				
				$query_view_name = \Kotchasan\Model::createQuery()
				->select()
				->from('user')  // ดึงฐานข้อมูลจาก ตาราง user
				->where(array('id', $name_sent));  // โดยที่ ข้อมูลจาก  $name_sent เท่ากับ ข้อมูลตาราง id 
				 foreach ($query_view_name->execute() as $item_name) {  }
				 // echo $item_name->id; 
                //echo $queryss->text();
				// จบ ค้นหาผู้ส่ง
		
		
	          // ค้นหาชื่อแผนกรับข้อความ   
		
		      $names_departmentsX=$edocument['department']; // id ของแผนกรับข้อความ 
		      $name_departments=explode(',',$names_departmentsX);
		      
			  //$name_departments=explode(',',',74814,74828,74860,74853,'); //ตัด string ตาม , ใส่ array ไว้
				// foreach ($name_departments as $gNAME){ echo $gNAME; }
		
				$query_name_departments= \Kotchasan\Model::createQuery()
				->select()
				->from('category')  // ดึงฐานข้อมูลจาก ตาราง category
				//->debug()
				->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก  name_departments เท่ากับ ข้อมูลตาราง category_id 
			//$gNAME=[];
               foreach ($query_name_departments->execute() as $item_name_departments) { $gNAME=$item_name_departments->topic;  }// $gNAME[]=$item_name_departments->topic;  } 
              
			   
			   
        $ret = array();
        // ข้อความ
        $msg = array(
		
            '{LNG_E-Document}',
			'', // เว้นบรรทัด
           // '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$item_name_departments->topic,  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง
			
			 '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$gNAME.',',  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง
			 
			'', // เว้นบรรทัด			
            '{LNG_Document No.}: '.$edocument['document_no'],
            '{LNG_Document title}: '.$edocument['topic'],
            '{LNG_Date}: '.Date::format($edocument['last_update']),
           // '', // เว้นบรรทัด
			'{LNG_ผู้ส่ง ----->>>>}: '.$item_name->name,  // แสดงผู้ส่งโดยจะดึงจาก e-doc-server\modules\edocument\views (index.php)
			//'{LNG_ผู้ส่ง ----->>>>}: '.$edocument['topic'],  // แสดงผู้ส่งโดยจะดึงจาก e-doc-server\modules\edocument\views (index.php)
			
			'', // เว้นบรรทัด
            '{LNG_มีเอกสารใหม่ถึงคุณแล้ว โปรดเข้าไปตรวจสอบที่}',
            'URL: '.WEB_URL.'index.php?module=edocument'
        );
		
		//} //  foreach ($query_name_departments->execute() 
		
        $msg = Language::trans(implode("\n", $msg));
        // ส่งอีเมลไปยังผู้ที่เกี่ยวข้อง
        $emails = array();
        $lines = array();
        if (!empty(self::$cfg->noreply_email) && (!empty($departments) || !empty($receivers))) {
            // query อีเมลผู้รับ
            $query = \Kotchasan\Model::createQuery()
                ->select('U.name', 'U.username', 'U.line_uid')
                ->from('user U')
                ->join('user_meta D', 'LEFT', array(array('D.member_id', 'U.id'), array('D.name', 'department')));
            if (!empty($departments)) {
                // ผู้รับในแผนกที่เลือก
                $query->where(array(
                    array('U.username', '!=', ''),
                    array('U.active', 1),
                    array('D.value', $departments)
                ));
            } elseif (!empty($receivers)) {
                // ผู้รับที่เลือก
                $query->where(array('id', $receivers));
            }
            foreach ($query->execute() as $item) {
                if ($item->username != '') {
                    $emails[$item->username] = $item->name.'<'.$item->username.'>';
                }
                if ($item->line_uid != '') {
                    $lines[] = $item->line_uid;
                }
            }
            if (!empty($emails)) {
                // ส่งอีเมล
                $subject = '['.self::$cfg->web_title.'] '.Language::get('There are new documents sent to you.');
                $err = \Kotchasan\Email::send(implode(',', $emails), self::$cfg->noreply_email, $subject, nl2br($msg));
                if ($err->error()) {
                    // คืนค่า error
                    $ret[] = strip_tags($err->getErrorMessage());
                }
            }
            // LINE ส่วนตัว
            if (!empty($lines) && !empty(self::$cfg->line_channel_access_token)) {
                $err = \Gcms\Line::sendTo($lines, $msg);
				
				//********************************************************************//
				
		         $error = \Gcms\Line::send($msg);  // ส่งไลน์  line notify  ในกลุ่ม+ที่ตั้งไว้  token
				 
			    //********************************************************************//
				
                if ($err != '') {
                    $ret[] = $err;
                }
            }
            return empty($ret) ? Language::get('Your message was sent successfully') : implode("\n", array_unique($ret));
        }
        return Language::get('Saved successfully');
    }
}



ส่วนไฟล์ที่เกี่ยวข้องกัน ก็ส่วนนี้ครับ

Code (PHP)
<?php
/**
 * @filesource modules/edocument/models/write.php
 *
 * @copyright 2016 Goragod.com
 * @license https://www.kotchasan.com/license/
 *
 * @see https://www.kotchasan.com/
 */

namespace Edocument\Write;

use Gcms\Login;
use Kotchasan\File;
use Kotchasan\Http\Request;
use Kotchasan\Language;
use Kotchasan\Number;

/**
 * module=edocument-write
 *
 * @author Goragod Wiriya <[email protected]>
 *
 * @since 1.0
 */
class Model extends \Kotchasan\Model
{
    /**
     * อ่านข้อมูลรายการที่เลือก
     * ถ้า $id = 0 หมายถึงรายการใหม่
     *
     * @param int   $id    ID
     * @param array $login
     *
     * @return object|null คืนค่าข้อมูล object ไม่พบคืนค่า null
     */
    public static function get($id, $login)
    {
        if (empty($id)) {
            // ใหม่
            return (object) array(
                'id' => 0,
                'document_no' => '',
                'sender_id' => (int) $login['id'],
                // ID ผู้รับเริ่มต้น
                'receiver' => [],
                // แผนกผู้รับเริ่มต้น
                'department' => [],
                'urgency' => 3, // บังคับให้เลือก 'URGENCIES' => ความเร่งด่วนเอกสาร 3 = ปกติ
                'topic' => '',
                'detail' => ''
            );
        } else {
            // แก้ไข อ่านรายการที่เลือก
            $result = static::createQuery()
                ->from('edocument E')
                ->join('edocument_download D', 'LEFT', array(array('D.document_id', 'E.id'), array('D.department_id', '')))
                ->join('user U', 'LEFT', array('U.id', 'D.member_id'))
                ->where(array('E.id', $id))
                ->groupBy('E.id')
                ->first('E.*', "SQL(GROUP_CONCAT(CONCAT(U.`id`,':',U.`username`) SEPARATOR ',') AS `receiver`)");
            if ($result) {
                $result->department = explode(',', trim($result->department, ','));
                $receiver = array();
                if ($result->receiver != '') {
                    foreach (explode(',', $result->receiver) as $item) {
                        $ds = explode(':', $item);
                        $receiver[$ds[0]] = isset($ds[1]) ? $ds[1] : $ds[0];
                    }
                }
                $result->receiver = $receiver;
            }
            return $result;
        }
    }

    /**
     * บันทึกข้อมูลที่ส่งมาจากฟอร์ม (write.php)
     *
     * @param Request $request
     */
    public function submit(Request $request)
    {
        $ret = array();
        // session, token, member, ไม่ใช่สมาชิกตัวอย่าง
        if ($request->initSession() && $request->isSafe() && $login = Login::isMember()) {
            if (Login::notDemoMode($login)) {
                try {
                    // ค่าที่ส่งมา
                    $save = array(
                        'document_no' => $request->post('document_no')->topic(),
                        // ผู้รับตามแผนก
                        'department' => $request->post('department', [])->topic(),
                        'urgency' => $request->post('urgency')->toInt(),
                        'topic' => $request->post('topic')->topic(),
                        'detail' => $request->post('detail')->textarea()
                    );
                    // ตรวจสอบรายการที่เลือก
                    $index = self::get($request->post('id')->toInt(), $login);
                    if ($index && ($index->id == 0 || $login['id'] == $index->sender_id || Login::checkPermission($login, 'can_upload_edocument'))) {
                        // Database
                        $db = $this->db();
                        // Table
                        $table_edocument = $this->getTableName('edocument');
                        if ($index->id == 0) {
                            $save['id'] = $db->getNextId($table_edocument);
                        } else {
                            $save['id'] = $index->id;
                        }
                        if ($save['document_no'] == '') {
                            // ไม่ได้กรอกเลขที่เอกสาร
                            $save['document_no'] = Number::printf(self::$cfg->edocument_format_no, $save['id']);
                        }
                        // ตรวจสอบเลขที่เอกสารซ้ำ
                        $search = $db->first($table_edocument, array('document_no', $save['document_no']));
                        if ($search && ($index->id == 0 || $index->id != $search->id)) {
                            $ret['ret_document_no'] = Language::replace('This :name already exist', array(':name' => 'Document No.'));
                        }
                        if ($save['detail'] == '') {
                            // ไม่ได้กรอก detail
                            $ret['ret_detail'] = 'Please fill in';
                        }
                        // รายชื่อผู้รับ
                        $receiver = [];
                        // รายชื่อผู้รับ (ตามแผนกที่เลือก)
                        if (!empty($save['department'])) {
                            // query สมาชิกตามแผนกที่เลือก
                            $where = array(
                                array('U.active', 1),
                                array('U.id', '!=', $login['id']),
                                array('D.value', $save['department'])
                            );
                            $query = $this->db()->createQuery()
                                ->select('U.id', 'D.value department')
                                ->from('user U')
                                ->join('user_meta D', 'LEFT', array(array('D.member_id', 'U.id'), array('D.name', 'department')))
                                ->where($where);
                            foreach ($query->execute() as $item) {
                                $receiver[$item->id] = $item->department;
                            }
                        }
                        // รายชื่อผู้รับ (รายบุคคล)
                        foreach ($request->post('receiver', [])->toInt() as $receiver_id) {
                            $receiver[$receiver_id] = '';
                        }
                        if (empty($receiver)) {
                            // ไม่ได้ระบุผู้รับ
                            $ret['ret_department'] = Language::get('The recipient was not found. or no recipients found in the selected department.');
                        }
                        if (empty($ret)) {
                            $mktime = time();
                            // อัปโหลดไฟล์
                            $dir = ROOT_PATH.DATA_FOLDER.'edocument/';
                            foreach ($request->getUploadedFiles() as $item => $file) {
                                /* @var $file \Kotchasan\Http\UploadedFile */
                                if ($file->hasUploadFile()) {
                                    if (!File::makeDirectory($dir)) {
                                        // ไดเรคทอรี่ไม่สามารถสร้างได้
                                        $ret['ret_'.$item] = Language::replace('Directory %s cannot be created or is read-only.', DATA_FOLDER.'edocument/');
                                    } elseif (!$file->validFileExt(self::$cfg->edocument_file_typies)) {
                                        // ชนิดของไฟล์ไม่ถูกต้อง
                                        $ret['ret_'.$item] = Language::get('The type of file is invalid');
                                    } elseif ($file->getSize() > self::$cfg->edocument_upload_size) {
                                        // ขนาดของไฟล์ใหญ่เกินไป
                                        $ret['ret_'.$item] = Language::get('The file size larger than the limit');
                                    } else {
                                        $save['ext'] = $file->getClientFileExt();
                                        $file_name = str_replace('.'.$save['ext'], '', $file->getClientFilename());
                                        if ($file_name == '' && $save['topic'] == '') {
                                            $ret['ret_topic'] = 'Please fill in';
                                        } else {
                                            // อัปโหลด
                                            $save['file'] = $mktime.'.'.$save['ext'];
                                            while (file_exists($dir.$save['file'])) {
                                                ++$mktime;
                                                $save['file'] = $mktime.'.'.$save['ext'];
                                            }
                                            try {
                                                $file->moveTo($dir.$save['file']);
                                                $save['size'] = $file->getSize();
                                                if ($save['topic'] == '') {
                                                    $save['topic'] = $file_name;
                                                }
                                                if (!empty($index->file) && $save['file'] != $index->file) {
                                                    @unlink($dir.$index->file);
                                                }
                                            } catch (\Exception $exc) {
                                                // ไม่สามารถอัปโหลดได้
                                                $ret['ret_'.$item] = Language::get($exc->getMessage());
                                            }
                                        }
                                    }
                                } elseif ($file->hasError()) {
                                    // ข้อผิดพลาดการอัปโหลด
                                    $ret['ret_'.$item] = Language::get($file->getErrorMessage());
                                } elseif ($index->id == 0) {
                                    // ใหม่ ต้องมีไฟล์
                                    $ret['ret_'.$item] = 'Please browse file';
                                }
                            }
                        }
                        if (empty($ret)) {
                            $save['last_update'] = $mktime;
                            $department = $save['department'];
                            $save['department'] = ','.implode(',', $department).',';
                            $save['topic'] = preg_replace('/[,;:_]{1,}/', '_', $save['topic']);
                            if ($index->id == 0) {
                                // ใหม่
                                $save['sender_id'] = $login['id'];
                                $db->insert($table_edocument, $save);
                            } else {
                                // แก้ไข
                                $db->update($table_edocument, $save['id'], $save);
                            }
                            // แอเรย์เก็บรายชื่อผู้รับ
                            $receivers = [];
                            // รายชื่อผู้รับที่เลือก
                            foreach ($receiver as $receiver_id => $department_id) {
                                $receivers[$receiver_id] = array(
                                    'document_id' => $save['id'],
                                    'member_id' => $receiver_id,
                                    'department_id' => $department_id,
                                    'downloads' => 0,
                                    'last_update' => 0
                                );
                            }
                            // ตาราง
                            $table_download = $this->getTableName('edocument_download');
                            // query ผู้รับเดิม
                            foreach ($this->db()->select($table_download, array('document_id', $save['id'])) as $item) {
                                if (isset($receivers[$item['member_id']])) {
                                    $receivers[$item['member_id']]['member_id'] = $item['member_id'];
                                    $receivers[$item['member_id']]['downloads'] = $item['downloads'];
                                    $receivers[$item['member_id']]['last_update'] = $item['last_update'];
                                }
                            }
                            // ลบ ผู้รับเดิม
                            $this->db()->delete($table_download, array('document_id', $save['id']), 0);
                            // บันทึกผู้รับใหม่ลงในตาราง
                            foreach ($receivers as $item) {
                                $this->db()->insert($table_download, $item);
                            }
                            // log
                            \Index\Log\Model::add($save['id'], 'edocument', 'Save', '{LNG_Send Document} ID : '.$save['id'], $login['id']);
                            // คืนค่า
                            if ($request->post('send_mail')->toInt() == 1) {
                                // ส่งอีเมล
                                $ret['alert'] = \Edocument\Email\Model::send(array_keys($receivers), $department, $save);
                            } else {
                                // ไม่ต้องส่งอีเมล
                                $ret['alert'] = Language::get('Saved successfully');
                            }
                            $ret['location'] = $request->getUri()->postBack('index.php', array('module' => 'edocument-sent'));
                        }
                    }
                } catch (\Kotchasan\InputItemException $e) {
                    $ret['alert'] = $e->getMessage();
                }
            }
        }
        if (empty($ret)) {
            $ret['alert'] = Language::get('Unable to complete the transaction');
        }
        // คืนค่าเป็น JSON
        echo json_encode($ret);
    }
}





ประวัติการแก้ไข
2023-11-03 10:28:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-03 10:23:05 By : steamlose
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-11-03 10:17:02
รายละเอียดของการตอบ ::
ขอบคุณครับ ทำได้แล้วครับ
ผมใช้ $XX = implode($...) เอาครับ
ข้อมูล ออกตามที่ต้องการแล้วครับ (ฝ่าย ก, ฝ่าย ข, ฝ่าย ค, ฝ่าย ง,)

จาก code ด้านล่าง

Code (PHP)
                     // จากฐานข้อมูล
                    // $names_departmentsX=$edocument['department']; // id ของแผนกรับข้อความ 
		    //  $name_departments = explode(',', trim($names_departmentsX, ','));
			
                     // กำหนดข้อมูลเพื่อทดสอบ
	              $datass = ',74814,74828,74860,74853,'; 
		      $name_departments = explode(',', trim($datass, ','));
			   
			 // $name_departments=explode(',', ',74814,74828,74860,74853,'); //ตัด string ตาม , ใส่ array ไว้
		        // foreach ($name_departments as $gNAME){ $gNAME;  } // foreach ($name_departments ออกปกติ
				
				// $arrssss = print_r($name_departments);   
				
		 
				$query_name_departments= \Kotchasan\Model::createQuery()
				->select()
				->from('category')  // ดึงฐานข้อมูลจาก ตาราง category
				//->debug()
				->where(array('category_id',$name_departments));// โดยที่ ข้อมูลจาก  name_departments เท่ากับ ข้อมูลตาราง category_id 
			
			//$gNAME = array();
			//$gNAME=[];
            foreach ($query_name_departments->execute() as $item_name_departments) { 
			
			                 $gNAME[]=$item_name_departments->topic; 
					  $new_gNAME = implode($gNAME).','; 
					  
					  }  // $gNAME[]=$item_name_departments->topic;  } 
			        			
	   
        $ret = array();
        // ข้อความ
        $msg = array(
		
            '{LNG_E-Document}',
			'', // เว้นบรรทัด
           // '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$item_name_departments->topic,  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง

			 '{LNG_ส่งถึงฝ่าย / แผนก ----->>>>}::: '.$new_gNAME,  // แสดงผู้รับ แผนก หรือผู้ที่ต้องการส่ง
			
			'', // เว้นบรรทัด			
            '{LNG_Document No.}: '.$edocument['document_no'],
            '{LNG_Document title}: '.$edocument['topic'],
            '{LNG_Date}: '.Date::format($edocument['last_update']),
           // '', // เว้นบรรทัด
			'{LNG_ผู้ส่ง ----->>>>}: '.$item_name->name,  // แสดงผู้ส่งโดยจะดึงจาก e-doc-server\modules\edocument\views (index.php)
			//'{LNG_ผู้ส่ง ----->>>>}: '.$edocument['topic'],  // แสดงผู้ส่งโดยจะดึงจาก e-doc-server\modules\edocument\views (index.php)
			
			'', // เว้นบรรทัด
            '{LNG_มีเอกสารใหม่ถึงคุณแล้ว โปรดเข้าไปตรวจสอบที่}',
            'URL: '.WEB_URL.'index.php?module=edocument'
        );






ประวัติการแก้ไข
2023-11-05 20:46:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-11-05 20:45:44 By : steamlose
 

   

ค้นหาข้อมูล


   
 

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