มีวิธี select 3 ตาราง โดยรับค่า $_GET บ้างไหมค่ะ ? //หรือพอจะมีวิธีไหนที่แสดงข้อมูลที่รับมาได้บ้าง ?
ตอนนี้ติดเรื่องการ select ข้อมูลสามตารางค่ะ
ซึ่งตอนนี้ดึงข้อมูลออกมาได้แค่ตารางเดียวค่ะ
ลองทำการ JOIN , LEFT JOIN ดูก็ยังทำไม่ได้ค่ะ
เพราะต้อง where ตัวแปรที่รับมาน่ะคะ
เลยไม่รู้จะทำยังไง ทำมาสองวันแล้วก็ยังทำไม่ได้เลยค่ะ จนปัญญา
#พอจะช่วยแนะนำการ select สามตาราง โดยรับค่าหน่อยได้ไหมค่ะ ?
Code (PHP)
<? require_once('Connections/durable_connect.php'); ?>
<?php
ob_start();
date_default_timezone_set('UTC');
define('FPDF_FONTPATH','fpdf/font/');
require('fpdf/fpdf.php');
////////////////////////////////////////////// ฟังก์ชั่นการแสดงเวลาเป็นของไทย
$thai_day_arr=array("อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์");
$thai_month_arr=array(
"0"=>"",
"1"=>"มกราคม",
"2"=>"กุมภาพันธ์",
"3"=>"มีนาคม",
"4"=>"เมษายน",
"5"=>"พฤษภาคม",
"6"=>"มิถุนายน",
"7"=>"กรกฎาคม",
"8"=>"สิงหาคม",
"9"=>"กันยายน",
"10"=>"ตุลาคม",
"11"=>"พฤศจิกายน",
"12"=>"ธันวาคม"
);
function thai_date($time)
{
global $thai_day_arr,$thai_month_arr;
$thai_date_return="วัน".$thai_day_arr[date("w",$time)];
$thai_date_return.= "ที่ ".date("j",$time);
$thai_date_return.=" เดือน".$thai_month_arr[date("n",$time)];
$thai_date_return.= " พ.ศ.".(date("Y",$time)+543);
//$thai_date_return.= " ".date("H:i",$time)." น.";
return $thai_date_return;
}
/////////////////////////////////////////// จบฟังก์ชั่นการแสดงเวลาเป็นของไทย
class PDF extends FPDF
{
function Header()
{
$this->SetMargins(10,20,10);
$this->AddFont('angsa','','angsa.php'); //เพิ่มฟอนท์เข้ามาในเอกสาร
$this->Image('img/galacy.jpg',64,0,80); //โลโก้หัวกระดาษ
$this->Cell(0,10,iconv('UTF-8','cp874',''),0,1); //ขึ้นบรรทัดใหม่
$this->SetFont('angsa','',14); //กำหนดแบบและขนาดตัวอักษร
$this->Cell(0,10,iconv('UTF-8','TIS-620',' เลขที่ใบขอยืม '.$_GET['drb_or_id'].' '),0,0,'R');
$this->SetFont('angsa','',18);
$this->Cell(0,10,iconv('UTF-8','TIS-620',''),0,1);
$this->Cell(0,10,iconv('UTF-8','TIS-620','แบบฟอร์มขอยืมครุภัณฑ์'),0,1,"C");
$this->SetFont('angsa','','14');
$this->Cell(0,15,iconv('UTF-8','TIS-620',''.thai_date(time()).''),0,1,"R"); //เพิ่มวันที่ทำเอกสารมุมขวา
// ส่วนข้อมูลผู้ยืม //
$this->SetFont('angsa','',16);
$this->Cell(100,10,iconv('UTF-8','cp874',' ชื่อ-นามสกุล : '.$_POST['emp_name'].' '),0,0);
$this->Cell(100,10,iconv('UTF-8','cp874',' ตำแหน่ง : '.$_POST['emp_posi'].' '),0,1);
$this->Cell(100,10,iconv('UTF-8','cp874',' สังกัด : '.$_POST['emp_org'].' '),0,0);
$this->Cell(100,10,iconv('UTF-8','cp874',' โทร : '.$_POST['emp_tel'].' '),0,1);
$this->Ln(5);
//$header = array('ชื่อหมวด','รหัส','ชื่อครุภัณฑ์','ราคา(บาท/หน่วย)','จำนวนที่ยืม'); //การกำหนดหัวตาราง
}
function Footer()
{
$this->SetMargins(20,10,20);
$this->AddFont('angsa','','angsa.php');
$this->SetFont('angsa','',12);
$this->SetY(-15);
$this->Cell(0,10,iconv( 'UTF-8','TIS-620','ฝ่ายส่งเสริมการรังสรรค์ผลิตภัณฑ์อวกาศ'),'T',0,'L');
$this->Cell(0,10,iconv( 'UTF-8','TIS-620','page '.$this->PageNo().' of tp' ),'T',0,'R');
}
function table1($header,$data)
{
$this->AddFont('angsa','B','angsa.php');
$this->SetFont('angsa','B',16);
$this->SetFont('');
$this->Ln('1');
$w=array(10,45,45,45,15,15);//Column widths
for($i=0;$i<count($header);$i++)//Header
$this->Cell($w[$i],10,iconv('UTF-8','TIS-620',$header[$i]),1,0,'C');
$this->Ln();
//Data
$rang = 1;
foreach ($data as $eachdata)
{
$this->Cell(10,7,iconv('UTF-8','TIS-620',$rang++),1,0,'LR');
$this->Cell(45,7,iconv('UTF-8','TIS-620',$eachdata["drb_cg_name"]),1,0,'LR');
$this->Cell(45,7,iconv('UTF-8','TIS-620',$eachdata["drb_cg_idshow"].$eachdata["drb_pd_code"]),1,0,'LR');
$this->Cell(45,7,iconv('UTF-8','TIS-620',$eachdata["drb_pd_name"]),1,0,'LR');
$this->Cell(15,7,iconv('UTF-8','TIS-620',$eachdata["drb_pd_price"]),1,0,'LR');
$this->Cell(15,7,iconv('UTF-8','TIS-620',$eachdata["drb_ord_Qty"]),1,0,'LR');
$this->Ln();
}
}
}
$pdf = new PDF;
$pdf->AliasNbPages( 'tp' ); //แสดงเลขหน้า
//Column titles
$header=array ('ลำดับ','ชื่อหมวด','รหัสครุภัณฑ์','ชื่อครุภัณฑ์','ราคา','จำนวน');
//*** Load MySQL Data ***//
$drb_or_id = $_GET['drb_or_id'];
//$strSQL1 = " SELECT drb_cataloge.drb_cg_idshow , drb_cataloge.drb_cg_name , drb_product.drb_pd_code , drb_product.drb_pd_name ,
// drb_orders_detail.drb_or_id FROM drb_orders_detail
// INNER JOIN drb_cataloge ON drb_cataloge.drb_cg_id = drb_orders_detail.drb_cg_id
// INNER JOIN drb_product ON drb_product.drb_pd_id = drb_orders_detail.drb_pd_id
// ORDER BY drb_orders_detail.drb_or_id = '".$drb_or_id."' ";
//$strSQL1 = " SELECT * FROM drb_product
// INNER JOIN drb_orders_detail ON drb_product.drb_pd_id = drb_orders_detail.drb_or_id
// LEFT JOIN drb_cataloge ON drb_product.drb_pd_id = drb_cataloge.drb_cg_id
// WHERE drb_orders_detail.drb_or_id = '$drb_or_id' ";
$strSQL1 = " SELECT * FROM drb_orders_detail WHERE drb_or_id = '".$drb_or_id."' "; //ลอง select ทั้งสามตาราง ก็โชว์ข้อมูล ในตาราง drb_orders_detail ทั้งหมดเลยค่ะ แล้วก็วนข้อมูลซ้ำด้วย
$objQuery = mysql_query($strSQL1);
$resultData = array();
for ($x=0;$x < mysql_num_rows($objQuery);$x++)
{
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
/////////////////////////////////////////////
$pdf->AddPage(); //เพิ่มหน้า
$pdf->AddFont('angsa','','angsa.php'); //เพิ่มfontเข้ามาในเอกสาร
$pdf->SetMargins(20,10,20);
$pdf->Cell(100,10,iconv('UTF-8','cp874',' รายละเอียดของครุภัณฑ์ที่ขอยืม'),0,1);
$pdf->table1($header,$resultData); //โชว์ตาราง
// การแสดงข้อมูลที่ผู้ยืม ยืมครุภัณฑ์ โดยไม่ได้อยู่ในตาราง (*แสดงนอกตารางได้ปกติค่ะ แต่ในตารางยังแสดงได้แค่ตารางเดียว*)
$drb_or_id = $_GET['drb_or_id'];
$sql = "select * from drb_orders_detail where drb_or_id = '".$drb_or_id."'";
$qr = mysql_query($sql);
while ($arr = @mysql_fetch_array($qr))
{
$sql1 = "select * from drb_product where drb_pd_id = '".$arr['drb_pd_id']."'";
$qr1 = mysql_query($sql1);
$arr1 = mysql_fetch_array($qr1);
//-----------------------------//
$sql2 = " SELECT * FROM drb_cataloge WHERE drb_cg_id = '".$arr1['drb_cg_id']."'";
$qr2 = mysql_query($sql2);
$arr2 = mysql_fetch_array($qr2);
$pdf->Cell(100,10,iconv('UTF-8','cp874','- ชื่อหมวด : '.$arr2['drb_cg_name'].' '),0,1);
$pdf->Cell(100,10,iconv('UTF-8','cp874','- รหัสครุภัณฑ์ : '.$arr2['drb_cg_idshow'].''.$arr1['drb_pd_code'].' '),0,0);
$pdf->Cell(100,10,iconv('UTF-8','cp874','- ชื่อครุภัณฑ์ : '.$arr1['drb_pd_name'].' '),0,1);
$pdf->Cell(100,10,iconv('UTF-8','cp874','- จำนวนที่ขอยืม : '.$arr['drb_ord_Qty'].' '),0,0);
$pdf->Cell(100,10,iconv('UTF-8','cp874','- มูลค่า/ราคา : '.$arr1['drb_pd_price'].' บาท/หน่วย '),0,1);
$pdf->Cell(100,2,iconv('UTF-8','cp874',''),0,1);
}//--------------------------------สิ้นสุดการวนรายการครุภัณฑ์
$pdf->Cell(85,10,iconv('UTF-8','cp874',''),0,0);
$pdf->Cell(85,10,iconv('UTF-8','cp874',' มูลค่ารวมทั้งสิ้น '.$_POST['total_sum'].' บาท-.'),0,1);
$pdf->MultiCell(0,10,iconv('UTF-8','cp874',''),'T',1);
$pdf->MultiCell(0,10,iconv('UTF-8','cp874','- สำหรับเจ้าหน้าที่ -'),0,1);
$pdf->MultiCell(0,10,iconv('UTF-8','cp874','สถานะการรับครุภัณฑ์ : [ ] รับของแล้ว เมื่อวันที่ ............/........../............'),0,1);
$pdf->MultiCell(0,10,iconv('UTF-8','cp874','สภาพก่อนยืม : .........................'),0,1);
$pdf->MultiCell(0,10,iconv('UTF-8','cp874','กำหนดการคืนครุภัณฑ์ : ............/........../............'),0,1);
$pdf->MultiCell(0,10,iconv('UTF-8','cp874',''),0,1);
$pdf->SetLeftMargin(21);
$pdf->Cell(100,10,iconv('UTF-8','cp874','ลงชื่อ.............................................เจ้าหน้าที่'),0,0);
$pdf->Cell(100,10,iconv('UTF-8','cp874','ลงชื่อ.............................................ผู้ยืม'),0,1);
$pdf->SetLeftMargin(29);
$pdf->Cell(100,10,iconv('UTF-8','cp874','(...........................................)'),0,0);
$pdf->Cell(100,10,iconv('UTF-8','cp874','(...........................................)'),0,1);
$pdf->SetLeftMargin(33);
$pdf->Cell(100,10,iconv('UTF-8','cp874','............/........../............'),0,0);
$pdf->Cell(100,10,iconv('UTF-8','cp874','............/........../............'),0,1);
$pdf->Output();
mysql_close($durable_connect);
ob_end_flush();
?>
เป็นโค้ดที่ทำเป็นไฟล์ PDF โดยรับค่า drb_or_id ที่ลูกค้ายืมครุภัณฑ์ออกมาแสดงในตาราง
คือ พอจะมีวิธีไหนที่จะแสดงข้อมูลจากทั้งสามตาราง มาแสดงในตารางอันเดียวกัน โดยอ้างอิงมาจาก id ของ order detail ที่ลูกค้ายืมครุภัณฑ์บ้างไหมค่ะ ??Tag : PHP, MySQL
ประวัติการแก้ไข 2015-10-13 16:46:34
Date :
2015-10-13 16:39:15
By :
hiyingzha
View :
1634
Reply :
2
$sql = "select * from drb_orders_detail where drb_or_id = '".$drb_or_id."'";
$sql1 = "select * from drb_product where drb_pd_id = '".$arr['drb_pd_id']."'";
$sql2 = " SELECT * FROM drb_cataloge WHERE drb_cg_id = '".$arr1['drb_cg_id']."'";
รวมเป็น statement เดียว
Code (PHP)
$sql = "
select *
from drb_orders_detail a, drb_product b, drb_cataloge c
where a.drb_or_id = '$drb_or_id'
and b.drb_pd_id = a.drb_pd_id
and b.drb_cg_id = c.drb_cg_id
";
/// หรือ
$sql = "
select *
from drb_orders_detail a
left join drb_product b on a.drb_pd_id = b.drb_pd_id
left join drb_cataloge c on b.drb_cg_id = c.drb_cg_id
where a.drb_or_id = '$drb_or_id'
";
ยังไงก็ลองเทสต์บน phpmyadmin ดูก่อนนะครับ จะได้เห็นหน้าตาข้อมูล
และอย่าลืมเปลี่ยนตัวแปร $drb_or_id ของ PHP ด้วยนะครับ
ประวัติการแก้ไข 2015-10-13 19:19:39
Date :
2015-10-13 19:17:14
By :
NewbiePHP
ขอบคุณ คุณ NewbiePHP มากค่ะ
ตอนนี้ลองทำการ select ข้อมูล ตามที่แนะนำมาได้แล้วค่ะ ^_^
Date :
2015-10-14 09:41:41
By :
hiyingzha
Load balance : Server 01