ขอสอบถามเรื่องการดึงข้อมูลจากฐานข้อมูลมาต่อกัน แบบหัวข้อหลักหัวข้อย่อย
ถ้าไม่หวง ตาราง export มาโพสต์...ผมจะลองทำถึงจะรู้...
หรือ ถ้า join ไม่เป็น....
ก็ต้อง order by group ก่อน
จัดกลุ่ม แล้วเอาหัวข้อใหญ่มา echo ก่อน แล้ว คิวรี่อีกรอบ ถ้า id สัมพันธ์ทุกอย่างก็ง่าย...
ตย.คล้าย ๆ มีไหม มีครับ แต่เมื่อ ตารางฐานข้อมูลไม่ตรงกันคุณเอาไปดูก็จะงงไปกันใหญ่
นี่ก็เคยทำไว้
คลิกดู
แต่ถ้าโพสต์ไปก็จะพาคุณ งง ไปอีก
Date :
2014-03-18 10:22:47
By :
apisitp
จะลองก็ได้ เพื่อคุณจะเข้าใจ
Code (PHP)
//การจัดกลุ่มว่ามีกี่กลุ่ม ถ้าไม่มีก็ไม่แสดง
$strGroup = "select * from tb_teacher group by `ref_id_dev` order by `ref_id_dev`";
$objGroup = mysql_query($strGroup);
$totalGroup = mysql_num_rows($objGroup); // หาจำนวน record ที่จัดกลุ่ม มีเท่าไรก็มาแสดงเท่านั้น
//echo $totalGroup;
while($rsGroup = mysql_fetch_array($objGroup))
{
$a[] = $rsGroup["ref_id_dev"];//จับยัดใส่อะเรย์
}
?>
<form id="form2" name="form2" method="post" action="">
<p>รายชื่ออาจารย์</p>
<?
$x=$totalGroup-1;//ต้องลบ 1 ไม่งั้นลูปจะเกิน
for($i=0;$i<=$x;$i++)//เอาค่าจากอะเรย์มาใช้
{
$strSQL01 = "SELECT * FROM tb_dev where id_dev= '$a[$i]' ";
$objQuery01 = mysql_query($strSQL01);
$rs = mysql_fetch_array($objQuery01);
$dev = $rs["id_dev"];
//echo $b[$i];
?>
?>
<table width="673" height="69" border="1">
<tr>
<td colspan="6"><?=$rs["dev_name"];?></td>
</tr>
<?PHP
$strSQL02 = "SELECT * FROM tb_teacher where ref_id_dev= '$dev' ORDER BY id_teacher ASC";
$objQuery02 = mysql_query($strSQL02);
$sqlquery=mysql_db_query($dbname, $strSQL02);
$total = mysql_num_rows($sqlquery); // หาจำนวน record
//echo $total ;
if($total==0){
}else{
while($objResuut02 = mysql_fetch_array($objQuery02))
{
?>
<tr>
<td width="125"><?=$objResuut02["teacherName"];?></td>
<td width="125"><?=$objResuut02["xxxxxxxxxxxx"];?>ค่า 1</td>
<td width="125"><?=$objResuut02["xxxx"];?>ค่า 2</td>
</tr>
<?PHP
}}
?>
</table>
<?PHP
}
?>
</form>
Date :
2014-03-18 10:24:14
By :
apisitp
ขอบคุณ คุณ Doctor K
ผมอัพโหลดไฟล์ฐานข้อมูลมาแล้วครับ ลบกวนคุณอีกครั้งนะครับ
http://www.one2up.com/view_content.php?content_ID=756345
ผมลองเขียน Join table แล้วครับแต่มันเออเร่อ หัวข้อหลักก็หายไปหมดเลย ผมเลยไม่กล้าเขียนต่อกลัวงานพังอ่าครับ
ขอบคุณล่วงหน้านะครับ
Date :
2014-03-18 10:57:44
By :
rabbitkn
ผมรอคุณ Doctor K มาตอบอยู่นะครับ
ขอดันกระทู้หน่อยนะครับ
Date :
2014-03-18 12:38:01
By :
rabbitkn
ผมโหลดไฟล์แล้วมัน Failed - ลอง Zip ไฟล์ก่อน
ไม่งั้นเอาเฉพาะ ข้อมูลย่อ ๆ ที่ Export มา มาโพสต์ลงที่กระทู้เลยก็ได้
Date :
2014-03-18 15:17:10
By :
apisitp
-- phpMyAdmin SQL Dump
-- version 4.0.9
-- http://www.phpmyadmin.net
--
-- โฮสต์: 127.0.0.1
-- เวลาในการสร้าง:
-- เวอร์ชั่นของเซิร์ฟเวอร์: 5.5.34
-- รุ่นของ PHP: 5.4.22
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- ฐานข้อมูล: `rattanakosin`
--
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `tour_th`
--
CREATE TABLE IF NOT EXISTS `tour_th` (
`Tour_Id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
`Type_Name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`Tour_Name` text COLLATE utf8_unicode_ci NOT NULL,
`Tour_Detail` text COLLATE utf8_unicode_ci NOT NULL,
`Tour_Bus` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`Tour_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ;
--
-- dump ตาราง `tour_th`
--
INSERT INTO `tour_th` (`Tour_Id`, `Type_Name`, `Tour_Name`, `Tour_Detail`, `Tour_Bus`) VALUES
(00008, 'วัดในศาสนาพุทธ', 'วัดพระแก้ว', '<p>วัดพระแก้ว</p>\r\n', '123456789011111'),
(00009, 'อนุสาวรีย์', 'เสาชิงช้า', '<p>เสาชิงช้า</p>\r\n', '121212'),
(00010, 'สถานที่พักผ่อน', 'สวนสันติชัยปราการ', '<p>สวนสันติชัยปราการ</p>\r\n', '1234567890'),
(00011, 'วัดในศาสนาพุทธ', 'วัดมหาธาตุ', '<p>12345</p>\r\n', '12345678'),
(00012, 'โบราณสถานสำคัญ', 'วัดเบญจมบพิตร', '<p>วัดเบญจมบพิตร</p>\r\n', '1123477889'),
(00013, 'อนุสาวรีย์', 'อนุาวรีย์ประชาธิปไตย', '<p>อนุาวรีย์ประชาธิปไตย</p>\r\n', '1123477889'),
(00014, 'สถานที่พักผ่อน', 'สวนลุมพินี', '<p>สวนลุมพินี</p>\r\n', '121212');
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `type_th`
--
CREATE TABLE IF NOT EXISTS `type_th` (
`Type_Id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
`Type_Name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`Type_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
--
-- dump ตาราง `type_th`
--
INSERT INTO `type_th` (`Type_Id`, `Type_Name`) VALUES
(00001, 'อนุสาวรีย์'),
(00002, 'โบราณสถานสำคัญ'),
(00003, 'วัดในศาสนาพุทธ'),
(00004, 'สิ่งก่อสร้างสาธารณูปโภค'),
(00005, 'สถานที่พักผ่อน'),
(00006, 'สถานที่สักการะบูชา'),
(00007, 'ป้อมกำแพงเมือง');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
นี่เป็นฐานข้อมูลที่ผมสร้างไว้นะครบ
และผมลองอัพโหลดใหม่สำรองไว้ เผื่อใช้ไม่ได้
http://www.mediafire.com/download/53i6fzm955z0919/rattanakosin+%281%29.rar
Date :
2014-03-18 15:25:44
By :
rabbitkn
ระหว่างที่ผมกำลังช่วยอยู่ อาจจะมีคนเก่ง ๆ ใจดีช่วยให้ผ่านไปแล้ว....
แต่ถ้าไม่มีรอหน่อย ผมไม่เก่งแต่ขอเวลา 555+
ฝาก แต่สิ่งที่อยากให้ปรับ คือ ที่ ตาราง tour_th แทนที่จะเก็บเป็น Type_Name เอา id ของ Type_Id มาเก็บดีกว่า
Date :
2014-03-18 16:00:44
By :
apisitp
หลักการนะ จากรูปแรก
https://www.thaicreate.com/upload/stock/20140318015514.png?v=1001
ฟิลด์ tour_id ให้เก็บเป็นเลข 1, 2 ,3 ไม่ต้องใส่เลข 0
ต่อมารูปสอง
https://www.thaicreate.com/upload/stock/20140318015537.png?v=1001
type_id คุณหมายถึง tour_id หรือเปล่า
ดีบีสองน่าจะต้องใช้แบบนี้นะ
no | tour_id | name
แล้วใช้โค้ดคิวรี่ 2 จุด(บางคนอาจใช้ join ก็จะใช้ 1 จุด) แต่ผมขอพูดถึง SELECT 2 ครั้งตามที่ผมถนัดละกัน
query หมวดหลัก
query หมวดหย่อย
mysql_close query หมวดหย่อย
mysql_close query หมวดหลัก
Date :
2014-03-18 16:11:12
By :
phun
อะไรไม่เอาไปปรับเองครับ
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<?php
$host="localhost";
//ส่วนนี้คุณดึงของคุณมาใช้ได้เลย แล้วลบไม่เกี่ยวออก
$user="";
$pw="";
$dbname="";
mysql_connect($host,$user,$pw) or die("ติดต่อ Host ไม่ได้");
mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_query("SET character_set_results=tis620");
mysql_query("SET character_set_client='tis620'");
mysql_query("SET character_set_connection='tis620'");
mysql_query("collation_connection = tis620_thai_ci");
mysql_query("collation_database = tis620_thai_ci");
mysql_query("collation_server = tis620_thai_ci");
// ลบถึงตรงนี้
//การจัดกลุ่มว่ามีกี่กลุ่ม ถ้าไม่มีก็ไม่แสดง
$strGroup = "select * from tour_th group by Type_Name order by Type_Name";
$objGroup = mysql_query($strGroup);
$totalGroup = mysql_num_rows($objGroup); // หาจำนวน record ที่จัดกลุ่ม มีเท่าไรก็มาแสดงเท่านั้น
//echo $totalGroup;
while($rsGroup = mysql_fetch_array($objGroup))
{
$a[] = $rsGroup["Type_Name"];//จับยัดใส่อะเรย์
}
$x=$totalGroup-1;//ต้องลบ 1 ไม่งั้นลูปจะเกิน
for($i=0;$i<=$x;$i++)//เอาค่าจากอะเรย์มาใช้
{
$strSQL01 = "SELECT * FROM type_th where Type_Name= '$a[$i]' ";
$objQuery01 = mysql_query($strSQL01);
$rs = mysql_fetch_array($objQuery01);
//echo $rs["Type_Name"];
?>
<table width="673" height="69" border="1">
<tr>
<td colspan="6"><?=$rs["Type_Name"];?></td>
</tr><br>
<?php
$strSQL02 = "SELECT * FROM tour_th where Type_Name ='".$rs["Type_Name"]."' ORDER BY `tour_th`.`Tour_Id` ASC ";
$objQuery02 = mysql_query($strSQL02);
$total = mysql_num_rows($objQuery02); // หาจำนวน record
//echo $total ;
if($total==0){
}else{
while($objResuut02 = mysql_fetch_array($objQuery02))
{
?>
<tr>
<td width="125"><?=$objResuut02["Tour_Name"];?></td>
</tr>
<?PHP
}}
?>
</table>
<?PHP
}
?>
ประวัติการแก้ไข 2014-03-18 16:26:58
Date :
2014-03-18 16:25:08
By :
apisitp
ขอบคุณมากนะครับคุณ Doctor K และความคิดเห็นที่ 8
ขอบคุณมากจริง ผมนั่ง งง มาหลายวัน ในที่สุดก็หาทางออกได้สักที
ขบคุณนะครับ
Date :
2014-03-18 17:04:02
By :
rabbitkn
Load balance : Server 03