 |
ขอสอบถามหน่อยค่ะถ้าโชว์ชื่อ ของหมายเลขนี้ทั้งหมด โดยถ้ามีชื่อ @Loading ให้ไปดึงชื่ออีกเทเบิ้ลมาโชว์ แต่พอดึงมากลับเปลี่ยนชื่ออื่นหมด แต่เราอยากเปลี่ยนแค่ชื่อนี้ต้องเขียนยังไงค่ะ |
|
 |
|
|
 |
 |
|
เอาโค๊ดมาแก้ให้ ขีเกียจเขียนใหม่
|
 |
 |
 |
 |
Date :
2018-10-22 13:12:32 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองใช้ IF ELSE ดูครับ
|
 |
 |
 |
 |
Date :
2018-10-22 13:33:36 |
By :
Jatmentz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
<?
<?php
|
 |
 |
 |
 |
Date :
2018-10-23 11:50:29 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$sqlgdt="SELECT d.PalletCode, o.CusCode,
d.DocNo, d.SerialCode , d.LogDate , o.DeliveryDate,
case when o.CusCode like '%@Loading%' then tmp_replace.field_replace else o.CusCode end as new_cuscode
FROM dbo.t_GiOrder as o
INNER JOIN dbo.t_GiDetail as d ON o.DocNo = d.DocNo
left join [ตารางที่ต้องการเอามาแทน] as tmp_replace on ........
WHERE( SerialCode LIKE '%".addslashes($_POST["txtKeyword"])."%')
ORDER BY SerialCode";
escape ข้อมูลพวก ตัวแปร request ด้วย หรือหันไปใช้ prepare function ป้องกัน sql injection
|
 |
 |
 |
 |
Date :
2018-10-23 14:00:17 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-10-23 14:00:17
รายละเอียดของการตอบ ::
อันนี้โค๊ดที่ใช้เรียกจริงๆ Code (PHP)
<?php
if($_POST["txtKeyword"] != ""){
$sqlgdt="SELECT dbo.t_GiDetail.PalletCode, dbo.t_GiOrder.CusCode,
dbo.t_GiDetail.DocNo, dbo.t_GiDetail.SerialCode ,
dbo.t_GiDetail.LogDate , dbo.t_GiOrder.DeliveryDate
FROM dbo.t_GiOrder INNER JOIN
dbo.t_GiDetail ON dbo.t_GiOrder.DocNo = dbo.t_GiDetail.DocNo WHERE
( SerialCode LIKE '%".$_POST["txtKeyword"]."%') ORDER BY SerialCode";
$querygdt=odbc_exec($link,$sqlgdt);
while($rowgdt=odbc_fetch_array($querygdt)){
$Doc = $rowa['DocNo'];
$PalletCode = $rowgdt['PalletCode'];
$SerialCode = $rowgdt['SerialCode'];
$LogDate = $rowgdt['Logdate'];
$CusCode = $rowgdt['CusCode'];
$DeliveryDate = $rowgdt['DeliveryDate'];
$num5 = count ($SerialCode);
if($rowgdt['CusCode'] = "@Loading"){
$sqlgw=" SELECT dbo.t_GiDetail.SerialCode AS Expr1, dbo.t_GiDetail.PalletCode AS Expr2,
dbo.t_GiOrder.CusCode, dbo.t_GiOrder.DocNo, KKC_Loading.dbo.tran_JobDo.CustomerName
FROM dbo.t_GiDetail INNER JOIN
dbo.t_GiOrder ON dbo.t_GiDetail.DocNo = dbo.t_GiOrder.DocNo INNER JOIN
KKC_Loading.dbo.tran_Job ON dbo.t_GiOrder.DocNo = KKC_Loading.dbo.tran_Job.JobNo INNER JOIN
KKC_Loading.dbo.tran_JobDo ON KKC_Loading.dbo.tran_Job.ID = KKC_Loading.dbo.tran_JobDo.JobID
WHERE( SerialCode LIKE '%".$_POST["txtKeyword"]."%') ORDER BY SerialCode";
$queryw=odbc_exec($link,$sqlgw);
$rowgw=odbc_fetch_array($queryw);
$CusCode = $rowgw["CustomerName"];
}
?>
พอเอาไปตามที่ K.Chaidhanan แล้วเออเรอ
|
 |
 |
 |
 |
Date :
2018-10-23 15:51:17 |
By :
mewhappy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอา message error มาด้วยสิครับ
โค๊ดที่ผมให้ไป เอาไปแก้ไขยังไง เอามาดูด้วย จะได้แก้ไขถูก
คุณเอาไปโมฯ แบบไหน ทำไมถีงเออเร่อร์
และโค๊ดที่ผมให้ไป เป็นการคิวรี่ครั้งเดียว
|
 |
 |
 |
 |
Date :
2018-10-23 16:26:22 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จบข่าวบายล่ะครับไม่อยากช่วยแล้ว
ผมให้ไปเป็น text copy ไปทำอะไรก็ง่าย ไว้วันหลัง ช่วยใคร เอาเป็นรูปลงบ้างดีกว่า
|
 |
 |
 |
 |
Date :
2018-10-24 14:54:24 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
SELECT dbo.t_GiDetail.PalletCode,
CASE WHEN dbo.t_GiOrder.CusCode = '@Loading' THEN 'AD' ELSE dbo.t_GiOrder.CusCode END CusCode,
dbo.t_GiDetail.DocNo, dbo.t_GiDetail.SerialCode ,
dbo.t_GiDetail.LogDate , dbo.t_GiOrder.DeliveryDate
FROM dbo.t_GiOrder
INNER JOIN dbo.t_GiDetail ON dbo.t_GiOrder.DocNo = dbo.t_GiDetail.DocNo
WHERE ( SerialCode LIKE '%".$_POST["txtKeyword"]."%') ORDER BY SerialCode
|
 |
 |
 |
 |
Date :
2018-10-24 17:29:17 |
By :
Jatmentz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 11 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-10-24 14:54:24
รายละเอียดของการตอบ ::
ขอโทษค่ะพอดีลืมลงที่ติดบัก
โค๊ดประมาณนี้ค่ะ
Code (PHP)
<?php
if($_POST["txtKeyword"] != ""){
$sqlgdt="SELECT d.PalletCode, o.CusCode,
d.DocNo, d.SerialCode , d.LogDate , o.DeliveryDate,
case when o.CusCode like '%@Loading%' then tmp_replace.field_replace else o.CusCode end as new_cuscode
FROM dbo.t_GiOrder as o
INNER JOIN dbo.t_GiDetail as d ON o.DocNo = d.DocNo
left join [dbo.t_GiDetail.SerialCode, dbo.t_GiDetail.PalletCode ,
dbo.t_GiOrder.CusCode, dbo.t_GiOrder.DocNo, KKC_Loading.dbo.tran_JobDo.CustomerName
FROM dbo.t_GiDetail INNER JOIN
dbo.t_GiOrder ON dbo.t_GiDetail.DocNo = dbo.t_GiOrder.DocNo INNER JOIN
KKC_Loading.dbo.tran_Job ON dbo.t_GiOrder.DocNo = KKC_Loading.dbo.tran_Job.JobNo INNER JOIN
KKC_Loading.dbo.tran_JobDo ON KKC_Loading.dbo.tran_Job.ID = KKC_Loading.dbo.tran_JobDo.JobID] as tmp_replace on
WHERE( SerialCode LIKE '%".addslashes($_POST["txtKeyword"])."%')
ORDER BY SerialCode";
$querygdt=odbc_exec($link,$sqlgdt);
while($rowgdt=odbc_fetch_array($querygdt)){
$Doc = $rowgdt['DocNo'];
$PalletCode = $rowgdt['PalletCode'];
$SerialCode = $rowgdt['SerialCode'];
$LogDate = $rowgdt['Logdate'];
$CusCode = $rowgdt['CusCode'];
$DeliveryDate = $rowgdt['DeliveryDate'];
$num5 = count ($SerialCode);
?>
|
 |
 |
 |
 |
Date :
2018-10-24 17:39:28 |
By :
mewhappy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
<?php
$sqlgdt="
SELECT d.PalletCode, o.CusCode, d.DocNo, d.SerialCode , d.LogDate , o.DeliveryDate
, case
when o.CusCode like '%@Loading%'
then tmp_replace.field_replace #### ตรงนี้เป็น field_replace คือค่าไหนใน sub query ( tmp_replace )
else o.CusCode
end as new_cuscode
FROM dbo.t_GiOrder as o
INNER JOIN dbo.t_GiDetail as d ON o.DocNo = d.DocNo
left join ( #### ส่วนนี้คือ sub query ฟีลด์ไหนไม่ได้ใช้ ก็ไม่ต้องใส่ใน select clause ก็ได้
select dbo.t_GiDetail.SerialCode, dbo.t_GiDetail.PalletCode
, dbo.t_GiOrder.CusCode, dbo.t_GiOrder.DocNo
, KKC_Loading.dbo.tran_JobDo.CustomerName
FROM dbo.t_GiDetail
INNER JOIN dbo.t_GiOrder ON dbo.t_GiDetail.DocNo = dbo.t_GiOrder.DocNo
INNER JOIN KKC_Loading.dbo.tran_Job ON dbo.t_GiOrder.DocNo = KKC_Loading.dbo.tran_Job.JobNo
INNER JOIN KKC_Loading.dbo.tran_JobDo ON KKC_Loading.dbo.tran_Job.ID = KKC_Loading.dbo.tran_JobDo.JobID
) as tmp_replace on ................ #### ส่วนนี่จะอ้างอิง กับ main query กำหนดไว้ด้วย
WHERE SerialCode LIKE '%".addslashes($_POST["txtKeyword"])."%'
ORDER BY SerialCode";
หัดใช้ alias name บ้างจะทำให้โค๊ดดูสอาด และเข้าใจมากขึ้น
|
 |
 |
 |
 |
Date :
2018-10-24 18:05:17 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$sqlgdt="
SELECT d.PalletCode, o.CusCode, d.DocNo, d.SerialCode , d.LogDate , o.DeliveryDate
, case
when o.CusCode like '%@Loading%'
then kj.CustomerName
else o.CusCode
end as new_cuscode
FROM dbo.t_GiOrder as o
inner join dbo.t_GiDetail as d ON o.DocNo = d.DocNo
left join (
select j.JobNo, jd.CustomerName
from KKC_Loading.dbo.tran_Job j , KKC_Loading.dbo.tran_JobDo jd
where j.ID = jd.JobID
) kj ON o.DocNo = kj.JobNo
WHERE d.SerialCode LIKE '%".addslashes($_POST["txtKeyword"])."%'
ORDER BY d.SerialCode";
|
 |
 |
 |
 |
Date :
2018-10-24 20:35:26 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|