ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ

เริ่มโดย royyim, 04 มิถุนายน 2017, 21:41:44

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

royyim

อยากให้หน้าค้นหาข้อมูลขึ้นข้อมูลประมาณนี้น่ะค่ะ
https://www.img.in.th/image/flEx

แต่ว่ามันขึ้นเป็นแบบนี้น่ะค่ะ
https://www.img.in.th/image/flEM

หนูจะให้รับค่าจากText Field หน้าแรกอ่ะค่ะ
https://www.img.in.th/image/fyB5

อันนี้เป็น ตารางdetail ค่ะ
https://www.img.in.th/image/fyBL

ส่วนอันนี้เป็น ตารางorgans ค่ะ
https://www.img.in.th/image/fyBt

ส่วนอันนี้ที่เชื่อมความสัมพันธ์ค่ะ
https://www.img.in.th/image/fyB1




ไม่รู้ว่าจะแก้ยังไง

อันนี้เป็นโค้ดค่ะ
<title>Expert shirt model</title>
<?php require_once('Connections/myconnection.php'); ?>
<?php $word1 =  $_POST["word1"];
$word2 =  $_POST["word2"];
$word3 =  $_POST["word3"];
$word4 =  $_POST["word4"];
$word5 =  $_POST["word5"];
//คำสั่งติดต่อฐานข้อมูล
$objConnect = mysql_connect("127.0.0.1","root","") or die("Error Connect to Database");
//ชื่อฐานข้อมูล
$objDB = mysql_select_db("diseasedb1");
mysql_query("SET NAMES UTF8"); //ให้แสดงภาษาไทย
$strSQL = "SELECT DISTINCT id_detail, tb_detail.id_organs, organs, disease, intro,cause, symptem,refer,pic_or
FROM `tb_detail`
LEFT JOIN tb_organs ON tb_detail.id_organs = tb_organs.id_organs  where tb_detail.id_organs in ('$word1','$word2','$word3','$word4','$word5')  ";
$objQuery = mysql_query($strSQL) or die (mysql_error()." [".$strSQL."]");

?>


<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
   <td><img src="หน้าปก.gif" width="1019" height="274"></td>
 </tr>
</table>
<p>&nbsp;</p>
<table width="285" height="195" border="0" align="center" cellpadding="0" cellspacing="0">
<?php
//ทำการเช็คว่ามีการอ่านข้อมูลหรือไม่ ถ้ามีให้แสดงข้อมูล
while($objResult = mysql_fetch_array($objQuery))
{
?>
 <tr>
   <td><div align="center"><img src="img/<?php echo $objResult["pic_or"];?>" width="200"></div></td>
 </tr>
</table>
<p>&nbsp;</p>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
   <td width="119">หมายเลขสำรวจ :</td>
   <td width="381"><?php echo $objResult["id_organs"];?></div></td>
 </tr>
</table>
<p>&nbsp;</p>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
   <td width="64">อวัยวะ :</td>
   <td width="436"><?php echo $objResult["organs"];?></div></td>
 </tr>
</table>
<p>&nbsp;</p>
<table width="404" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
   <td width="134">โอกาสที่จะเกิดโรค :</td>
   <td width="270"><?php echo $objResult["disease"];?></td>
 </tr>
 <?php
}
?>
</table>
<p>&nbsp;</p>

item

<?php while($objResult mysql_fetch_array($objQuery)) { ?>
<table>
  <tr>
    <th colspan="6">รูปภาพ</th>
  </tr>
  <tr>
    <td>ตำแหน่ง</td>
    <td colspan="5">1</td>
  </tr>
  <tr>
    <td>อวัยวะ</td>
    <td colspan="5">หลอดลม</td>
  </tr>
  <tr>
    <td colspan="2">โอกาสที่จะเกิดโรค</td>
    <td colspan="4"><ul><li>โรคกรดไหลย้อย</li><li>โรคหลอดลมอักเสบ</li><li>โรคหลอดลมอักเสบเสียบพลัน</li></ul></td>
  </tr>
</table>
<?php ?>


ประมาณนี้หรือเปล่าครับ น่าจะลองเขียนโค้ดให้สวยๆจะได้ดูง่ายครับ
[direct=http://www.google.com].[/direct]

navico

เอาข้อมูลมา join กัน มันเลยออกมา 5 row นะครับ
เป็นผม ปกติจะแยก 2 คิวรี่นะครับ คิวรี่แรกเอาข้อมูลหลัก คิวรี่2 เอา ราละเอียด (โอกาสที่จะเกิดโรค)
ยังไงเอา er มาประกอบด้วยจะดีกว่านะครับ จะได้เห็นความสัมพันธ์ของข้อมูล  จะคิวรี่ได้ถูก

buakaew

Affiliate ไทยจ่ายจริงกินหลายชั้นลึกหลากหลายผลิตภัณฑ์[direct=https://affiliateinthai.blogspot.com/]Affiliate ไทย[/direct]
รีวิว คูปองฟรี Hosting ไทยและเทศ[direct=https://www.hostingdee.com/]รีวิว Hosting[/direct]
ดูดวงออนไลน์ฟรี[direct=https://duduangfree.com/]ดูดวง[/direct]
พระเครื่องออนไลน์[direct=http://www.siampraboran.com/]พระเครื่อง[/direct]


royyim

อ้างถึงจาก: navico ใน 05 มิถุนายน 2017, 04:08:47
เอาข้อมูลมา join กัน มันเลยออกมา 5 row นะครับ
เป็นผม ปกติจะแยก 2 คิวรี่นะครับ คิวรี่แรกเอาข้อมูลหลัก คิวรี่2 เอา ราละเอียด (โอกาสที่จะเกิดโรค)
ยังไงเอา er มาประกอบด้วยจะดีกว่านะครับ จะได้เห็นความสัมพันธ์ของข้อมูล  จะคิวรี่ได้ถูก

หนูเขียนโค้ดไม่ค่อยเป็นน่ะค่ะ ส่วนมากก็ลองมั่วๆ แล้วก็ดูจากในอินเตอร์เน็ตน่ะค่ะ :)
แยกคิวรี่ยังไงค่ะที่พี่บอก
หนูจะให้รับค่าจากText Field หน้าแรกอ่ะค่ะ
https://www.img.in.th/image/fyB5
อันนี้เป็น ตารางdetail ค่ะ
https://www.img.in.th/image/fyBL

ส่วนอันนี้เป็น ตารางorgans ค่ะ
https://www.img.in.th/image/fyBt

ส่วนอันนี้ที่เชื่อมความสัมพันธ์ค่ะ
https://www.img.in.th/image/fyB1

royyim


royyim

อ้างถึงจาก: item ใน 05 มิถุนายน 2017, 02:07:29
<?php while($objResult mysql_fetch_array($objQuery)) { ?>
<table>
  <tr>
    <th colspan="6">รูปภาพ</th>
  </tr>
  <tr>
    <td>ตำแหน่ง</td>
    <td colspan="5">1</td>
  </tr>
  <tr>
    <td>อวัยวะ</td>
    <td colspan="5">หลอดลม</td>
  </tr>
  <tr>
    <td colspan="2">โอกาสที่จะเกิดโรค</td>
    <td colspan="4"><ul><li>โรคกรดไหลย้อย</li><li>โรคหลอดลมอักเสบ</li><li>โรคหลอดลมอักเสบเสียบพลัน</li></ul></td>
  </tr>
</table>
<?php ?>


ประมาณนี้หรือเปล่าครับ น่าจะลองเขียนโค้ดให้สวยๆจะได้ดูง่ายครับ

ขอบคุณค่ะ แต่ว่ามันต้องเชื่อมกับฐานข้อมูล หนูอยากให้หน้าค้นหาแสดงผลแบบนั้นน่ะค่ะ แค่ว่ามันขึ้นซ้ำ

oob2528

ลองปรับโดย ใช้ผ่านบราวเซอร์ดูหรือยังครับ

royyim

อ้างถึงจาก: oob2528 ใน 05 มิถุนายน 2017, 20:34:40
ลองปรับโดย ใช้ผ่านบราวเซอร์ดูหรือยังครับ
เปลี่ยนไปใช้อย่างอื่นก็เหมือนเดิมค่ะ

navico

ดูจากคิวรี่คือ ต้องการค้นหา 1 ครั้ง จากอวัยวะหลายส่วนใช่ไหมครับ ถ้าไม่ใช่ คิวรี่น้องผิดนะครับ


ถ้ายังไม่ได้ทักข้อความมานะครับ

royyim

อ้างถึงจาก: navico ใน 05 มิถุนายน 2017, 22:36:44
ดูจากคิวรี่คือ ต้องการค้นหา 1 ครั้ง จากอวัยวะหลายส่วนใช่ไหมครับ ถ้าไม่ใช่ คิวรี่น้องผิดนะครับ


ถ้ายังไม่ได้ทักข้อความมานะครับ

ใช่ค่ะ ค้นหา 1 ครั้ง แต่สามารถหาอวัยวะได้หลายตำแหน่งค่ะ

หนูไม่รู้ว่าจะแก้ตรงไหน ให้มันแสดงอย่างที่หนูต้องการได้อ่ะค่ะ  :-X


Sompon_lipoo

อยากสร้างบ้านแต่หาผู้รับเหมาไม่ได้ ======>[direct=http://www.9building.com/home/]คลิกที่นี่[/direct]
ออกแบบบ้านง่ายๆตามสไตล์คุณโดยสถาปนิกมืออาชีพ======>[direct=http://www.9building.com/design/]คลิกที่นี่[/direct]
รับสร้างบ้านในแบบที่คุณต้องการ======>[direct=http://www.9building.com/]คลิกที่นี่[/direct]
อ่านบล๊อกเกี่ยวกับเรื่องบ้าน,ที่ดิน,อสังหาได้ที่======>[direct=http://asanghaland.blogspot.com/]คลิกที่นี่[/direct]
[direct=http://www.9building.com/]รับสร้างบ้าน[/direct]

chor_th

ใน sql ลองเปลี่ยนจาก left join เป็น inner join
และใช้คู่กับ group by ดูครับ
[direct=https://www.9developer.com]9Developer | รับพัฒนา PHP, Android Cordova, IBM Notes XPages[/direct]
[direct=https://www.dofollow.in.th]SEO เบื้องต้น[/direct]

infamous

ดูแนวทางน่าจะเป็นน้องๆนศ.ครับ

ผมลองทำให้ดูเป็นตัวอย่างแล้วนะครับ โดยโครงสร้างของ DB ผมจำลองให้ คล้าย กับของน้องมากที่สุด
ดูตัวอย่างโครงสร้างได้ที่ http://sqlfiddle.com/#!9/2859c6/4

sql command:


select og.id_organs AS ogid, og.*, odt.*
from tb_organs og
left join tb_detail odt on (odt.id_organs=og.id_organs)
where og.id_organs IN (1,2);


หมายเหตุ:

ในส่วนของ IN (id1,id2) นั้นจะเป็น id_organs ที่อยู่ในตาราง tb_organs นะครับ(รองรับแบบหลายอวัยวะ)
ส่วนเวลาค้นหา ก็ให้ user ใส่ id ของ อวัยวะ(ปอด,หัวใจ,ม้าม,ตับ) ได้เลย แล้วค่อยไป left join หาโรคของแต่ละอวัยวะอีกทีหนึ่ง(tb_detail)

Simple PHP code: (TESTED!)

<?php 

header
('Content-type: text/html;charset=utf8');

$link mysql_connect('localhost:3307''root''root');

if (!
$link) {
   die(
'Could not connect: ' mysql_error());
}

mysql_select_db("dummy") or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

$query "select og.id_organs AS ogid, og.*, odt.* from tb_organs og left join tb_detail odt on (odt.id_organs=og.id_organs) where og.id_organs IN (1,2)";

$results mysql_query($query);

$rows = array();

if (
$results) {
while($row mysql_fetch_array($resultsMYSQL_ASSOC)) {
if (! isset($rows[$row['ogid']])) {
$rows[$row['ogid']] = array('title'=>$row['organs'],'children'=>array());
}

$rows[$row['ogid']]['children'][] = $row;
}
}

?>


<table style="text-align:left;" cellpadding="5" cellspacing="0" border="1">
<?php foreach($rows as $row) : ?>
<tr>
<th colspan="3"><h2>อวัยวะ: <?php echo $row['title']; ?></h2></th>
</tr>
<tr>
<th>DISEASE</th>
<th>INTRO</th>
<th>CAUSE</th>
</tr>

<?php if($row['children']) : ?>
<?php foreach($row['children'] as $key=>$child) : ?>
<tr>
<td><?php echo ($key+1?>. <?php echo $child['disease']; ?></td>
<td><?php echo $child['intro']; ?></td>
<td><?php echo $child['cause']; ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>

<?php endforeach; ?>
</table>


หน้าตัวอย่างผลลัพธ์ จากตัวอย่าง php code ด้านบน



แค่นี้ผมคิดว่าคงเห็นภาพแล้วนะครับ แต่ถ้ายังงงอยู่ PM มาครับ ถ้าว่างจะช่วยดูให้

ปล. ของพวกนี้มั่ว(ถาม/ตอบ)ไม่ได้นะครับ ต้องเข้าใจคอนเซ็ปต์แต่ละอย่างด้วย