|
|
|
ต้อการ query ข้อมูลจาก Table เก็บใส่ใน array 2 มิติเขียนยังไงคะ |
|
|
|
|
|
|
|
แบบนี้ป่ะคับ
Code (PHP)
$data = array(
array(
'id' => 1,
'name' => 'A',
'group' => 1,
'day' => '01',
),
array(
'id' => 2,
'name' => 'B',
'group' => 1,
'day' => '01',
),
// ...
);
http://www.pjgunner.com
|
|
|
|
|
Date :
2011-07-04 13:38:49 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ค่ะ ถ้าแบบใส่ข้อมูลตรงๆ แต่ต้องการแบบวนรับค่าจาก TB ตามนี้ค่ะ เอาเฉพาะค่า $dsID : $dFrom ใส่ใน array 2 มิติ
Code (PHP)
$sql="select * from insertstaff,disease where(insertstaff.dsID=disease.dsID)";
$result = mysql_db_query($dbname,$sql);
$num_rows = mysql_num_rows($result);
while($record = mysql_fetch_array($result)) {
$stID = $record[stID]; // ID
$dsID = $record[dsID]; // Group
$dFrom = $record[dFrom]; // Day
}
|
|
|
|
|
Date :
2011-07-04 13:57:17 |
By :
CS541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้เขียนโปรแกรมนานเล่นเอามึนเหมือนกัน พอดีตอนแรกไม่เข้าใจคำถาม
Code (PHP)
$data = array(
array(
'id' => 1,
'name' => 'A',
'group' => 1,
'day' => '01',
),
array(
'id' => 2,
'name' => 'B',
'group' => 1,
'day' => '01',
),
array(
'id' => 3,
'name' => 'C',
'group' => 1,
'day' => '02',
),
array(
'id' => 4,
'name' => 'D',
'group' => 2,
'day' => '01',
),
// ...
);
$udg = $group = array();
// หากรุ็บที่มี
foreach ($data as $row)
$groups[] = $row['group'];
$groups = array_unique($groups);
sort($groups);
// แต่ละ group
foreach ($groups as $group)
{
foreach ($data as $row)
{
if ($row['group'] != $group)
continue;
if ( ! in_array(array('group' => $group, 'day' => $row['day']), $udg))
$udg[] = array('group' => $group, 'day' =>$row['day']);
}
}
// ตัวแปร udg คือรายการไม่ซ้ำ unique day group
// คราวนี้ เอามาหาจำนวจากข้อมูลทั้งหมดอีกที
foreach ($udg as &$unique)
{
$tmp = 0;
foreach ($data as $row)
{
if ($row['group'] === $unique['group'] AND $row['day'] === $unique['day'])
++$tmp;
}
$unique['size'] = $tmp;
}
// แสดงผลลัพท์
foreach ($udg as $result)
echo 'Group: '.$result['group'].' Day: '.$result['day'].' = '.$result['size'], '<br />';
Result
Group: 1 Day: 01 = 2
Group: 1 Day: 02 = 1
Group: 2 Day: 01 = 1
|
|
|
|
|
Date :
2011-07-04 14:42:07 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โทษทีพอดียังไม่ได้ refactor นะ คงพออ่านเข้าใจ
|
|
|
|
|
Date :
2011-07-04 14:46:58 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณค่ะ อ่านแล้วก็พอเข้าใจ เดี๋ยวจะลองเขียนประยุกต์ข้อมูลส่วนนี้ ให้ดึงผลออกมาจากตารางจริงค่ะ ... ได้หรือไม่ได้ จะแจ้งให้ทราบอีกที ขอบคุณสำหรับคำตอบนะคะ ^^
Code (PHP)
$data = array(
array(
'id' => 1,
'name' => 'A',
'group' => 1,
'day' => '01',
),
array(
'id' => 2,
'name' => 'B',
'group' => 1,
'day' => '01',
),
array(
'id' => 3,
'name' => 'C',
'group' => 1,
'day' => '02',
),
array(
'id' => 4,
'name' => 'D',
'group' => 2,
'day' => '01',
),
// ...
);
|
|
|
|
|
Date :
2011-07-04 15:00:06 |
By :
CS541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code ที่ให้มา ลองประยุกต์โดยดึงจาก TB จริงได้แล้วค่ะ ตามนี้ ต่อด้วยส่วนท้ายที่คุณ @เอี่ยว ให้มา
Code (PHP)
$sql="select disease.dsID,insertstaff.dFrom from insertstaff,disease where(insertstaff.dsID=disease.dsID)";
$result = mysql_query($sql);
$arr = array();
$i = 1;
while ($show = mysql_fetch_array($result))
{
$data[$i] = array('dsID' => $show['dsID'],'dFrom' => $show['dFrom']);
$i++;
}
ผลลัพธ์ ที่ได้ //เปลี่ยนตัวแปรนิดหน่อยให้เหมือน DB จริงค่ะ
dsID: 1 dFrom: 01 = 2
dsID: 1 dFrom: 04 = 1
dsID: 2 dFrom: 02 = 1
ทีนี้ ต้องการเอาค่าที่ได้ไปใส่ในตารางเพื่อแสดงผลให้ user ดู
โดยให้แสดงข้อมูล ให้ตรงกับ "รหัสโรค และ วันที่" เช่น จากผลลัพธ์ข้างบน
1.รหัสโรค(dsID)=1 วันที่ (dFrom)=01 มีจำนวน 2 คน
2.รหัสโรค(dsID)=1 วันที่ (dFrom)=04 มีจำนวน 1 คน
3.รหัสโรค(dsID)=2 วันที่ (dFrom)=02 มีจำนวน 1 คน
ให้แสดงตารางเป็นแบบนี้
|
|
|
|
|
Date :
2011-07-04 15:54:25 |
By :
cs541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ค่อยๆ คิดทำไปนะคับ ผมคิดว่าคงไม่ยากหรอก เดี๋ยวก็คิดออกเอง
|
|
|
|
|
Date :
2011-07-04 16:11:49 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วค่ะ คุณเอี่ยว ใส่แบบบ้านๆ เลย แทรกไว้ใน td ของแต่ละ column เหอๆ ตอนแรกก็เขียนให้มันวนค่าเอาค่ะ แต่ไม่ออก เลยลองอัดแบบไร้อัลกอ อย่างที่เห็นนี้แหล่ะค่ะ ไล่ตั้งแต่ 01 ยัน 31 เลย
ขอบคุณ คุณเอี่ยวอีกครั้งค่ะ ถึงจะเขียนต่อได้ไม่ดีเท่าไหร่ แต่ผลลัพธ์ออกมาถูกต้องก็พอใจล่ะค่ะ ไว้สเตปดีกว่านี้ค่อยมาปรับปรุงอีกที
Code (PHP)
<? foreach ($udg as $result) if($result['dsID']==$dspdsID and $result['dFrom']==01) { echo $result['size'];} ?>
|
|
|
|
|
Date :
2011-07-04 16:21:02 |
By :
CS541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ติดปัญหาคล้ายๆกันเลย ขอบคุณสำหรับความรู้นะคะ ^^
|
|
|
|
|
Date :
2011-11-26 10:18:53 |
By :
Kwun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|