ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: royyim ที่ 04 มิถุนายน 2017, 21:41:44



หัวข้อ: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 04 มิถุนายน 2017, 21:41:44
อยากให้หน้าค้นหาข้อมูลขึ้นข้อมูลประมาณนี้น่ะค่ะ
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>


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: 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 ?>

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


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


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: buakaew ที่ 05 มิถุนายน 2017, 14:25:07
ช่วยดันๆๆๆ  :'(


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 05 มิถุนายน 2017, 19:48:02
เอาข้อมูลมา 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


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 05 มิถุนายน 2017, 20:05:25
ช่วยดันๆๆๆ  :'(

ขอบคุณค่ะ :)


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 05 มิถุนายน 2017, 20:07:11
โค๊ด:
<?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 ?>

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

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


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


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 05 มิถุนายน 2017, 21:09:01
ลองปรับโดย ใช้ผ่านบราวเซอร์ดูหรือยังครับ
เปลี่ยนไปใช้อย่างอื่นก็เหมือนเดิมค่ะ


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


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


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 05 มิถุนายน 2017, 22:51:29
ดูจากคิวรี่คือ ต้องการค้นหา 1 ครั้ง จากอวัยวะหลายส่วนใช่ไหมครับ ถ้าไม่ใช่ คิวรี่น้องผิดนะครับ


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

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

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


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: royyim ที่ 06 มิถุนายน 2017, 00:08:33
 :'( :'( :'(


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: Sompon_lipoo ที่ 06 มิถุนายน 2017, 09:04:33
อยากช่วยนะ แต่ไม่เป็น 555555555555


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: chor_th ที่ 06 มิถุนายน 2017, 09:09:37
ใน sql ลองเปลี่ยนจาก left join เป็น inner join
และใช้คู่กับ group by ดูครับ


หัวข้อ: Re: ช่วยหน่อยค่ะ อยากให้ข้อมูลขึ้นแบบไม่ซ้ำ
เริ่มหัวข้อโดย: infamous ที่ 06 มิถุนายน 2017, 10:59:56
ดูแนวทางน่าจะเป็นน้องๆนศ.ครับ

ผมลองทำให้ดูเป็นตัวอย่างแล้วนะครับ โดยโครงสร้างของ 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
(&#39;Content-type: text/html;charset=utf8&#39;);

$link mysql_connect(&#39;localhost:3307&#39;, &#39;root&#39;, &#39;root&#39;);

if (!$link) {
   die(&
#39;Could not connect: &#39; . mysql_error());
}

mysql_select_db("dummy") or die(mysql_error());
mysql_query("SET NAMES &#39;utf8&#39;");

$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[&#39;ogid&#39;]])) {
$rows[$row[&#39;ogid&#39;]] = array(&#39;title&#39;=>$row[&#39;organs&#39;],&#39;children&#39;=>array());
}

$rows[$row[&#39;ogid&#39;]][&#39;children&#39;][] = $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[&#39;title&#39;]; ?></h2></th>
</tr>
<tr>
<th>DISEASE</th>
<th>INTRO</th>
<th>CAUSE</th>
</tr>

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

<?php endforeach; ?>
</table>

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

(https://www.img.in.th/images/26100b430c73b03b0464a2b4fa1e0d7a.png)

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

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