สอบถามการดึงข้อมูลมาคำนวนจาก sql แล้วแสดงผลครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามการดึงข้อมูลมาคำนวนจาก sql แล้วแสดงผลครับ

สอบถามการดึงข้อมูลมาคำนวนจาก sql แล้วแสดงผลครับ

โดย sql เก็บข้อมูลดังนี้ครับ

ID Serial Type Description
1 V802 COPY 5xA4/D/C
2 V801 PRINT 1xA4/C
3 V802 COPY 5xA3
4 V802 PRINT 2xA4;1xA3
5 V803 COPY 1xA4;2xA3

*ช่อง Description สูตรคำนวนดังนี้ (A4=1 , A3=2 , D=Duplex , ไม่มีC=B&W , C=Colour , ;=ขั้น )


ผมต้องการให้ผลลัพธ์ออกมาเป็นแบบนี้ครับ

Serial Type A4 A3 Duplex B&W Colour
V801 PRINT 1 0 0 0 1
V802 COPY 5 0 1 0 1
V802 COPY 0 10 0 1 0
V802 PRINT 2 2 0 1 0
V803 COPY 1 4 0 1 0

รบกวนทีนะครับ


Hanakobz112 119.46.21.xxx 08-06-2015 10:21:39

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
วนลูป คิวรี่แสดงค่าปกติ แล้วเอาค่าจาก description ไปใช้ เช่น หาว่ามี C ไหม หรือมี D ไหม .ใช้ 

strpos ใช้ preg_replace แทนค่าเพื่อตัดคำ

ลองเอาโค้ดนี้ไปศึกาษาดู

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
<?php
$data=array(
  "5xA4/D/C",
    "1xA4/C",
    "5xA3",
    "2xA4;1xA3",
    "1xA4;2xA3"
);
?>
<pre>
A4 A3 Duplex B&W Color
<?php
$colVal=array();
foreach($data as $val){
    $val1=preg_replace("@\/C@","",$val);
    $val1=preg_replace("@\/D@","",$val1);
    if(strpos($val1,";")){
        $numArr=explode(";",$val1);
        $colVal["A4"]=preg_replace("@xA4@","",$numArr[0])*1;
        $colVal["A3"]=preg_replace("@xA4@","",$numArr[1])*2;
    }else{
        if(strpos($val1,"A4")){
            $colVal["A4"]=preg_replace("@xA4@","",$val1)*1;
            $colVal["A3"]=0;
        }else{
            $colVal["A3"]=preg_replace("@xA3@","",$val1)*2;
            $colVal["A4"]=0;
        }
    }    
    echo $colVal["A4"];
    echo "&nbsp;&nbsp;";
    echo $colVal["A3"];
    echo "&nbsp;&nbsp;";
    echo $colVal["D"]=(strpos($val,"D"))?1:0;
    echo "&nbsp;&nbsp;";
    echo $colVal["BW"]=(strpos($val,"C"))?0:1;
    echo "&nbsp;&nbsp;";
    echo $colVal["C"]=(strpos($val,"C"))?1:0;
    echo "&nbsp;&nbsp;";
    echo "<br>";
}
?>

</pre>   
    
</body>
</html>


ninenik 122.155.35.xxx 08-06-2015
 ความคิดเห็นที่ 2

ขอบคุนครับ

แล้วตรง $data=array ผมจะ select ข้อมูลขึ้นมายังไงให้มันเรียงเป็น array ดีครับ

ข้อมูลมีเป็นล้าน Record เลยครับ T^T



hanakobz112 202.183.201.xxx 08-06-2015 13:52
 ความคิดเห็นที่ 3
 โค้ดที่แนะนำเป็นแค่ตัวอย่าง เวลาใช้ เราใช้กับ array ของการคิวรี่ฐานข้อมูลได้เลย

<?php
$q="
SELECT * FROM table ORDER BY ......
";    
$qr=mysql_query($q);    
while($rs=mysql_fetch_array($qr)){    
    $val1=preg_replace("@\/C@","",$rs['description']);
    $val1=preg_replace("@\/D@","",$val1);
    if(strpos($val1,";")){
        $numArr=explode(";",$val1);
        $colVal["A4"]=preg_replace("@xA4@","",$numArr[0])*1;
        $colVal["A3"]=preg_replace("@xA4@","",$numArr[1])*2;
    }else{
        if(strpos($val1,"A4")){
            $colVal["A4"]=preg_replace("@xA4@","",$val1)*1;
            $colVal["A3"]=0;
        }else{
            $colVal["A3"]=preg_replace("@xA3@","",$val1)*2;
            $colVal["A4"]=0;
        }
    }    
    echo $colVal["A4"];
    echo "&nbsp;&nbsp;";
    echo $colVal["A3"];
    echo "&nbsp;&nbsp;";
    echo $colVal["D"]=(strpos($rs['description'],"D"))?1:0;
    echo "&nbsp;&nbsp;";
    echo $colVal["BW"]=(strpos($rs['description'],"C"))?0:1;
    echo "&nbsp;&nbsp;";
    echo $colVal["C"]=(strpos($rs['description'],"C"))?1:0;
    echo "&nbsp;&nbsp;";
    echo "<br>";
}
?>








ninenik 122.155.35.xxx 08-06-2015
 ความคิดเห็นที่ 4

โอ้ววว ได้แล้วครับบ ขอบคุนครับ

รบกวนพี่ เพิ่ม Serial กับ Type ให้ผมที ผมใส่ไป มันไปขึ้น ทุกตัวเหมือนกันหมดเลยครับ




hanakobz112 119.46.21.xxx 08-06-2015 14:29
 ความคิดเห็นที่ 5

รบกวนอีกทีครับ

แล้วผมต้องการที่จะเอา TYPE มารวมกันครับเช่น

 

SERIAL TYPE DESCRIPTION
V801 PRINT 3xA4;1xA3
V801 PRINT 2xA4;5xA3

 

ผลลัพธ์

SERIAL TYPE A4 A3
V801 PRINT 5 12


 



hanakobz112 119.46.21.xxx 11-06-2015 08:42
 ความคิดเห็นที่ 6

คิวรี่มาแสดงปกติไม่น่าจะได้ ทำไมไม่ใช้วิธีเก็บฟิลด์ข้อมูลเพิ่มไปเลยแต่แรก เช่น เก็ย A4 A3 ค่าที่เป็นตัวเลขไปเลย

SERIAL TYPE DESCRIPTION A4 A3
V801 PRINT 3xA4;1xA3 3 2
V801 PRINT 2xA4;5xA3 2 10

เก็บแบบนี้ง่ายกว่า แล้วค่อย คิวรี่มาใช้งาน
ถ้าวางโครงสร้างฐานข้อมูลครอบคลุม โค้ดหรือการคิวรี่ก็จะง่ายขึ้น


ninenik 183.88.76.xxx 11-06-2015
 ความคิดเห็นที่ 7

มันเป็นข้อมูล Excel ที่ Export ออกมาจากโปรแกรมอะครับ

ผมต้องเอาข้อมูลในนั้นมาแยกครับ T^T

ก็เลยไม่รุ้จะทำวิธีไหนครับ ..

 



hanakobz112 202.183.201.xxx 11-06-2015 10:54
 ความคิดเห็นที่ 8
ถ้าเป็น Excel ยิ่่งง่ายเลย แต่เราต้องเข้าใจคำสั่ง การจัดการข้อมูล ของ Excel
อันนี้น่าจะแนะนำอะไรไม่ได้ 


ninenik 183.88.76.xxx 11-06-2015
 ความคิดเห็นที่ 9

ขอบคุนครับ ยังไงติดตรงไหนผมจะมาถามไหม่ ครับ



hanakobz112 119.46.21.xxx 11-06-2015 13:12
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ