ขอคำแนะนำด้วย ครับ คือว่าผมอยาก กำหนดสถานะ เปนสี ครับ ทำได้ แต่ไม่ตรง ครับ
Code (PHP)
$sqq="SELECT * FROM `order` WHERE idcode_pb='$idcode_pb2' ";
$mm=mysql_query($sqq);
while($ss=mysql_fetch_array($mm)){
$idcode_pb=$ss['idcode_pb'];
$order_ID=$ss['order_ID'];
$check_status=$ss['check_status'];
echo $idcode_pb." ".$check_status ."<br>";
}
if($check_status==0) {
echo "<img src='immage/read.jpg' width='20' height='15' />"; // ถ้า check_status เป็น 0 ให้เปนสีแดง
} else if ( $check_status==0 || $check_status==1 || $check_status==2 ){
echo "<img src='immage/yellow.jpg' width='20' height='15' />";// ถ้า check_status เป็น 0 , 1, 2 ให้เปนสีเหลือง
} else if ($check_status==2){
echo "<img src='immage/geen.jpg' width='20' height='15' />"; // ถ้า check_status เป็น 2 ให้เปนเขียว
}
ลองเทสดูครับ
Date :
2013-02-20 10:52:30
By :
Ex-[S]i[L]e[N]t
1.กำหนด css ก่อน
tr.1 td{ background-color:yellow; }
tr.2 td{ background-color:green; }
tr.3 td{ background-color:red; }
2.ใช้ status ไปกำหนด class ของ tr ครับ เช่น
<tr class="1"><td> ...... </tr>
<tr class="2"><td> ...... </tr>
<tr class="3"><td> ...... </tr>
เรียบร้อยครับ คิดว่าเป็นวิธีที่สะดวกที่สุดครับ
ประวัติการแก้ไข 2013-02-20 11:03:23
Date :
2013-02-20 10:59:02
By :
sakuraei
ขอแก้น่ะ ครับ ^^ เช่น ใบสั่ง ที่ KP-201302-2552 มีรายการที่สั่ง 6 รายการ ถ้า สถานะ ขึ้น 2 ทั้งหมด ก็แสดง ว่า เสร็จแล้ว ให้ขึ้นสีเขียว ถ้า มี 1 หรือ 0 อยู่ ก็ให้เปน สีเหลือง เพราะ สินค้าทุกตัว ยังไม่เสร็จครบ ครับ
ประวัติการแก้ไข 2013-02-20 11:26:41
Date :
2013-02-20 11:00:34
By :
TonsoR
ใช้ array ช่วยครับ
ถ้า 0 ให้ใช้อันนี้ 1 ให้ใช้อันนี้ ...
การโปรแกรม หรือข้อมูลแบบนี้เรียกว่า map ครับ
// เวลาจะเปลี่ยนชื่อไฟล์ภาพ หรือเพิ่มการ map status ก็แก้ไขตรงนี้ ไม่ต้องไปแก้ไขที่โค้ดตรงอื่น
$status_images = array(
0 => 'yellow.jpg',
1 => 'yellow.jpg',
2 => 'green.jpg',
);
เวลาใช้ก็
echo "<img src='{$status_images[$ss['check_status']]}' width='20' height='15' />";
ประวัติการแก้ไข 2013-02-20 11:46:31
Date :
2013-02-20 11:45:56
By :
cookiephp
ลองศึกษาพวกการกำหนดดปรแกรม counter ที่นับคนใช้งานดูน่ะครับ
พวก ssession น่ะครับ 1 อาจจะกำหนดให้ล็อกอินใช้งานอยู่เปงสีเขียว
0 อาจกำหนดเปงแดงสีเทาก้อได้ครับ
ใช้ jquery ฟังก์ชั่น addclass ครับ
Date :
2013-02-20 12:04:59
By :
dannan882
ผมว่า push statusid ลง $array แล้วใช้ฟังก์ชั่น array_count_values($array) เพื่อนับจำนวน สถานะในตอนท้าย(ใน td ช่องสุดท้าย 'เสร็จ') แล้วเอาเข้าเงื่อนไขใน if เพื่อแสดงสีครับ
Date :
2013-02-20 15:57:20
By :
sakuraei
ครับ ลองหลายวิธีมากเลย ยัง ไม่ได้ แต่ก็จะลองดูอีก ที ครับ
Date :
2013-02-20 16:22:56
By :
TonsoR
ขอตัวอย่างได้ รึป่่าว ครับ
Date :
2013-02-20 16:24:56
By :
TonsoR
ลอง ใช้คำสั่ง group by ใน sql เพื่อ แยกสถานะดูครับ หลังจากนั้นค่อยใช้ if เช็ค
คล้ายๆแรป6 แต่คนละวิธี
รูปเป็นโครงข้อมูล ,ข้อมูลหลัง group , คำสั่ง sql
หลังจากนั้น ให้ นับแถวครับ
if row =1
if status = 0
สีแดง
if status = 1
สีเหลือง
if status = 2
สีเขียว
if row > 1
สีเหลือง
ลองดุครับ งงนิดๆ
ประวัติการแก้ไข 2013-02-20 16:45:25 2013-02-20 16:46:24
Date :
2013-02-20 16:33:14
By :
MrAeker
ลองเอาโค้ดนี้ไปรันดูน่ะครับ แล้วเอาผลลัพธ์มาวางครับ
select idcode_pb,check_status,count(*) from ....
group by idcode_pb,check_status
Date :
2013-02-20 17:07:22
By :
sakuraei
$sqq="SELECT * ,count(*) FROM `order` WHERE idcode_pb='$idcode_pb2' group by check_status ";
เพิ่มเติมจากของเดิมน้องต้นซอน่ะครับ
count(*) เพื่อนับจำนวน status ที่มีค่าเหมือนๆกันครับ
Date :
2013-02-20 17:16:02
By :
sakuraei
2 โดดๆ เป็นเขียว
2 ผสม 0 หรือ 1 เป็นเหลือง
1 ผสม 0 เป็นเหลือง
0 โดดๆ เป็นแดง
ที่พี่สรุปถูกมั๊ย
Date :
2013-02-20 17:36:00
By :
sakuraei
เดี๋ยวคืนนี้จะกลับมาตอบน่ะครับ
Date :
2013-02-20 17:52:49
By :
sakuraei
ครับ งั้น กลับ บ้าน ก่อน เดว พรุ่งนี้ ผม มาดูน่ะ คับ
Date :
2013-02-20 17:54:06
By :
TonsoR
ยังไม่ได้เหมือนเดิม ครับ
ประวัติการแก้ไข 2013-02-23 08:52:13
Date :
2013-02-23 08:40:53
By :
TonsoR
รบกวน ช่วย ด้วย คับ
Date :
2013-02-25 18:12:20
By :
TonsoR
Code (PHP)
if($check_status==0) {
echo "<img src='immage/read.jpg' width='20' height='15' />";
} else if ( $check_status==0 || $check_status==1 || $check_status==2){
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
} else if ($check_status==2){
echo "<img src='immage/geen.jpg' width='20' height='15' />";
}
จาก if แปรเป็นไทยนะครับ
ถ้าสถานะ =0 =red
ถ้าสถานะ =0 หรือ =1 หรือ =2 = yellow
ถ้าสถานะ =2 =green
เห็นหรือเปล่าครับ อะไรทำให้สีไม่ตรง โค๊ดมันก็ทำงานตามเราสั่งแล้วครับ
Date :
2013-02-26 11:40:19
By :
MrAeker
เพิ่มเติม
ให้นับแถวหลังคิวรี่ตามรหัส ว่าได้กี่แถว
แล้วเช็คก่อน ถ้า 1 แถว โอกาสที่จะเป็นก็คือ สถานะ = 0 หรือ 1 หรือ 2 ซึ่งเป็นค่าโดด
แต่ถ้า2หรือ3แถวก็สีเหลืองเลย
ประมาณนี้ลองดูครับ
Code (PHP)
if($numrow = 1){
if($check_status==0) {
echo "<img src='immage/read.jpg' width='20' height='15' />";
} else if ( $check_status==1 {
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
} else if ($check_status==2){
echo "<img src='immage/geen.jpg' width='20' height='15' />";
}
}else{
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
}
Date :
2013-02-26 11:47:26
By :
MrAeker
ผมลองทำดู ได้แบบนี้ครับ ผลตรงบ้างไม่ตรงบ้าง
โค๊ด ครับ
Code (PHP)
$sqq="SELECT * FROM `order` WHERE idcode_pb='$idcode_pb2' ";
$mm=mysql_query($sqq);
$numrow =mysql_num_rows($mm);
while($ss=mysql_fetch_array($mm)){
$idcode_pb=$ss['idcode_pb'];
$order_ID=$ss['order_ID'];
$check_status=$ss['check_status'];
echo "รายการ".$order_ID." =".$check_status ."<br>";
}
if($numrow=1){
if($check_status==0) {
echo "<img src='immage/read.jpg' width='20' height='15' />";
} else if ( $check_status==1 ){
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
} else if ($check_status==2){
echo "<img src='immage/geen.jpg' width='20' height='15' />";
}else{
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
}
}
ประวัติการแก้ไข 2013-02-26 17:07:12 2013-02-26 17:37:18 2013-02-26 17:51:47 2013-02-26 18:28:51
Date :
2013-02-26 17:00:28
By :
TonsoR
ตอบให้สองกระทู้เลยล่ะกันครับ จะได้รู้กันว่าได้คำตอบไปแล้ว
ผมจัดรูปแบบให้ดูง่ายๆ นะครับ
เส้นผมบังภูเขามากเลยครับ
<?php
$sqq = "SELECT * FROM `order` WHERE idcode_pb='$idcode_pb2' ";
$mm = mysql_query($sqq);
$numrow = mysql_num_rows($mm);
while ($ss = mysql_fetch_array($mm)) {
$idcode_pb = $ss['idcode_pb'];
$order_ID = $ss['order_ID'];
// ตรงนี้ครับ $check_status แม้จะมีหลายรายการ
// ยังไง $check_status มันก็จะเป็นของรายการสุดท้ายเสมอ ใช่มั้ยครับ คิดตามครับ คิดตาม
$check_status = $ss['check_status'];
echo "รายการ" . $order_ID . " =" . $check_status . "<br>";
}
// แล้วตรงนี้ครับ ยังไงก็เป็นจริงครับ เพราะคุณกำหนด $numrow = 1
// ไม่ใช่การเปรียบเทียบ $numrow == 1
if ($numrow = 1) {
if($check_status == 0) {
echo "<img src='immage/read.jpg' width='20' height='15' />";
} else if ( $check_status==1 ){
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
} else if ($check_status==2){
echo "<img src='immage/geen.jpg' width='20' height='15' />";
}else{
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
}
}
?>
วิธีแก้ครับ
ให้มอง $check_status เป็น "คะแนน" แทนที่จะมองเป็น "สถานะ"
ให้ $check_status คอยเก็บ "ผลรวม" ของ $ss['check_status']
แล้วสุดท้าย เอามาเช็คกับ จำนวนรายการทั้งหมด x 2 (คะแนนเต็ม)
<?php
$sqq = "SELECT * FROM `order` WHERE idcode_pb='$idcode_pb2' ";
$mm = mysql_query($sqq);
$numrow = mysql_num_rows($mm);
if ($numrow > 0) { // ถ้ามีรายการ ก็ให้ทำต่อ ถ้าไม่มีก็ไม่ทำ จบเลย ง่ายๆ ไม่เปลืองแรง
$full_score = $numrow * 2; // คะแนนเต็ม
$check_status = 0; // ให้มันเป็น 0 ก่อน
while ($ss = mysql_fetch_array($mm)) {
$idcode_pb = $ss['idcode_pb'];
$order_ID = $ss['order_ID'];
$check_status += $ss['check_status']; // เพิ่มคะแนน
echo "รายการ" . $order_ID . " =" . $check_status . "<br>";
}
if($check_status == 0) { // ถ้ามีแต่รายการที่เป็น 0 ผลรวมย่อมเป็น 0 แสดงสีแดง
echo "<img src='immage/read.jpg' width='20' height='15' />";
} else if ( $check_status < $full_score){ // ถ้ามีรายการหลายแบบ ทั้ง 0, 1 หรือ 2 แต่ไม่ใช่ 2 ทั้งหมด มันต้องน้อยกว่าคะแนนเต็มแน่นอน แสดงสีเหลือง
echo "<img src='immage/yellow.jpg' width='20' height='15' />";
} else { // นอกนั้นต้องได้คะแนนเต็มแน่นอน แสดงสีเขียว
echo "<img src='immage/geen.jpg' width='20' height='15' />";
}
}
?>
ประวัติการแก้ไข 2013-02-27 07:51:48
Date :
2013-02-26 19:38:59
By :
cookiephp
ขอบคุณ จิง ๆ คับ ยิ้ม ออกแล้ว หลังจากที่ ผมงมมาหลาย วัน ขอบคุณมาก ครับ
Date :
2013-02-27 09:00:24
By :
TonsoR
Load balance : Server 02