Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > การใช้ group_concat ครับ อยากให้ชื่อผู้ที่ login ขึ้นเป็นตัวหนา



 

การใช้ group_concat ครับ อยากให้ชื่อผู้ที่ login ขึ้นเป็นตัวหนา

 



Topic : 109573



โพสกระทู้ ( 361 )
บทความ ( 1 )



สถานะออฟไลน์




เรื่อง group_concat นะครับ

สมมุติข้อมูลแสดงแบบนี้นะครับ

สมชาย, สมหญิง, สมจิตร

ตอน login ผมเก็บ ชื่อเป็น $_SESSION['per_name'] ไว้ สมมุติว่า สมชาย login เข้ามา ผมต้องการให้เป็นแบบนี้ครับ

สมชาย, สมหญิง, สมจิตร

ให้มันเป็นตัวหนาไว้อะครับ สามารถทำได้หรือไม่ครับ

Code (PHP)
<?PHP
                if(empty($_GET["selDuration"])){
                    $selectedYear = "(SELECT MAX(dur_year) FROM duration WHERE dur_sector = '0')";
                    $selectedTerm = "(SELECT MAX(dur_term) FROM duration WHERE dur_year = {$selectedYear})";
                }else{
                    list($selectedYear,$selectedTerm) = explode(' / ',$_GET["selDuration"]);
                }

                    $sql  = "SELECT *, GROUP_CONCAT(DISTINCT per_name SEPARATOR ', ') AS as_per_name FROM favor";
                    $sql .= " LEFT JOIN duration ON favor.dur_id = duration.dur_id";
                    $sql .= " LEFT JOIN location ON favor.loc_id = location.loc_id";
                    $sql .= " LEFT JOIN supervision_teacher ON location.loc_id = supervision_teacher.loc_id";
                    $sql .= " LEFT JOIN personnel ON supervision_teacher.per_id = personnel.per_id";
                    $sql .= " WHERE dur_year = {$selectedYear} AND dur_term = {$selectedTerm}";
                    $sql .= " GROUP BY location.loc_id";
                    $result = mysql_query($sql);

                // ส่วนแบ่งเพจ (ส่วนแรก)
                    $Num_Rows = mysql_num_rows($result);
                    $Per_Page = 15; //จำนวนที่แสดง
                    $Page = $_GET["Page"];
                if(!$_GET["Page"]){
                    $Page = 1;
                }
                    $Prev_Page = $Page -1;
                    $Next_Page = $Page +1;
                    $Page_Start = (($Per_Page*$Page) - $Per_Page);
                if($Num_Rows <= $Per_Page){
                    $Num_Pages = 1;
                }
                else if(($Num_Rows % $Per_Page) == 0){
                    $Num_Pages = ($Num_Rows/$Per_Page);
                }else{
                    $Num_Pages = ($Num_Rows/$Per_Page) +1;
                    $Num_Pages = (int)$Num_Pages;
                }
                    $sql .= " ORDER BY loc_name ASC LIMIT $Page_Start , $Per_Page";
                    $result = mysql_query($sql);
                ?>
                <table width="100%" cellpadding="0" cellspacing="1" class="tct">
                    <tr align="center">
                        <th width="40%">สถานประกอบการ</th>
                        <th width="50%">อาจารย์นิเทศก์</th>
                        <th width="10%" colspan="2">รายละเอียด</th>
                    </tr>
                    <?PHP
                    $i=0;
                    if(mysql_num_rows($result) >0 ){ //เช็คว่ามีข้อมูลหรือไม่
                        while($show = mysql_fetch_array($result)){
                    $i++;
                    if($i%2==0){ $bg = "#EEEEEE"; }else{ $bg = "#FFFFFF"; } // $i สลับสีตาราง
                    ?>
                    <tr bgcolor="<?=$bg;?>">
                        <td style="padding-left: 5px"><?=$show['loc_name'];?><br/><?PHP if($show['loc_suborder'] == ""){ echo "(ไม่มีหน่วยงานย่อย)"; }else{ echo "<font color=\"gray\">".$show['loc_suborder']."</font>"; }?></td>
                        <td style="padding-left: 5px"><?=$show['as_per_name'];?></td>
                        <td width="5%" align="center"><a href="locationDetail.php?loc_id=<?=$show['loc_id']?>"><img src="images/pin.png" alt="" title="แผนที่"/></a></td>
                        <td width="5%" align="center"><a href="visionStuView.php?loc_id=<?=$show['loc_id']?>"><img src="images/detail.png" alt="" title="รายละเอียด"/></a></td>
                    </tr> <?PHP } } else { ?>
                    <tr align="center">
                        <td colspan="3">ไม่พบตารางการนิเทศในปีการศึกษานี้</td>
                    </tr> <?PHP } ?>
                </table>


พ

ำ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-06-30 10:36:14 By : sabaitip View : 1085 Reply : 6
 

 

No. 1



โพสกระทู้ ( 1,666 )
บทความ ( 0 )



สถานะออฟไลน์


ดัก output และเพิ่มแถวๆนี้เหละครับลักษณะคล้ายๆกันกับสลับสีตาราง
Code (PHP)
<?PHP
                    $i=0;
                    if(mysql_num_rows($result) >0 ){ //เช็คว่ามีข้อมูลหรือไม่
                        while($show = mysql_fetch_array($result)){
                    $i++;
                   if(เซสซั่นตัวนั้นเหละ ==  $show['loc_id']) { $B1="<B>"; $B2="</B>" } else { $B1=""; $B2=""   }
//ขึ้นอยู่กับว่าเซสซั่นเก็บชื่อหรือ id ไว้เก็บอะไรก็นำไปเปรียบเทียบกับฟิลนั้น
                    if($i%2==0){ $bg = "#EEEEEE"; }else{ $bg = "#FFFFFF"; } // $i สลับสีตาราง
                    ?>



ส่วนโค้ดเสร็จก็ไปทำต่อส่วนของ html ผมสมมุตินะ

Code (PHP)
<table>
<tr><td>
<?=$B1> <?= $show['xxxxxxxxx']?> <?=$B2>
</td></tr>
<table>



**แต่ถ้าเก้บข้อมูลยาวเป็นอาเรยย์ไว้ต้องใช้ in array เช็คอีกทีนะครับว่าตรงกันหรือไม่ ถ้าตรงก็แทรก<b> เข้าหน้าอาเรย์ตัวที่ไช่และ </b> ด้านหลังของมัน








ประวัติการแก้ไข
2014-06-30 11:16:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-30 11:14:18 By : meannerss
 


 

No. 2



โพสกระทู้ ( 361 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : meannerss เมื่อวันที่ 2014-06-30 11:14:18
รายละเอียดของการตอบ ::
มันแสดงรายชื่อออกมาแบบ group_concat อะครับ

$_SESSION['per_name'] เก็บชื่อคนที่ login มา แต่ as_per_name มันเก็บหลายชื่อหรือป่าวครับ มันเลยมีค่าไม่เหมือนกัน

ถ้าจะใช้เป็น per_name กลับเป็นแบบในภาพครับ

กด


Code (PHP)
<?PHP
   $i=0;
   if(mysql_num_rows($result) >0 ){ //เช็คว่ามีข้อมูลหรือไม่
      while($show = mysql_fetch_array($result)){
   $i++;
   if($i%2==0){ $bg = "#EEEEEE"; }else{ $bg = "#FFFFFF"; } // $i สลับสีตาราง
                    
   if($_SESSION['per_name'] == $show['per_name']){ $b1 = "<b>"; $b2 = "</b>"; }else{ $b1 = ""; $b2 = ""; }
?>
<tr bgcolor="<?=$bg;?>">
   <td style="padding-left: 5px"><?=$show['loc_name']?><br/><?PHP if($show['loc_suborder'] == ""){ echo "(ไม่มีหน่วยงานย่อย)"; }else{ echo "<font color=\"gray\">".$show['loc_suborder']."</font>"; }?></td>
   <td style="padding-left: 5px"><?=$b1.$show['as_per_name'].$b2;?></td>
   <td width="5%" align="center"><a href="locationDetail.php?loc_id=<?=$show['loc_id']?>"><img src="images/pin.png" alt="" title="แผนที่"/></a></td>
   <td width="5%" align="center"><a href="visionStuView.php?loc_id=<?=$show['loc_id']?>"><img src="images/detail.png" alt="" title="รายละเอียด"/></a></td>
</tr>



ประวัติการแก้ไข
2014-06-30 12:16:16
2014-06-30 12:17:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-30 12:15:29 By : sabaitip
 

 

No. 3



โพสกระทู้ ( 361 )
บทความ ( 1 )



สถานะออฟไลน์


ลองทำแบบนี้แล้ว เหมือนว่ามันเช็คเฉพาะชื่อแรกอย่างเดียว จะทำไงให้มันเช็คได้ทั้งหมดครับ

อิอิ

Code (PHP)
<?PHP
   $i=0;
   if(mysql_num_rows($result) >0 ){ //เช็คว่ามีข้อมูลหรือไม่
      while($show = mysql_fetch_array($result)){
   $i++;
   if($i%2==0){ $bg = "#EEEEEE"; }else{ $bg = "#FFFFFF"; } // $i สลับสีตาราง
?>
   <tr bgcolor="<?=$bg;?>">
      <td style="padding-left: 5px"><?=$show['loc_name']?><br/><?PHP if($show['loc_suborder'] == ""){ echo "(ไม่มีหน่วยงานย่อย)"; }else{ echo "<font color=\"gray\">".$show['loc_suborder']."</font>"; }?></td>
   <td style="padding-left: 5px">
      <?php
      $exp = explode(',',$show['as_per_name']);

         foreach($exp as $value){

            if($_SESSION['per_name'] == $value){ echo "<b>".$value."</b>"."<br>"; }else{ echo $value."<br>"; }
                                
         }
      ?>
   </td>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-01 03:13:18 By : sabaitip
 


 

No. 4



โพสกระทู้ ( 361 )
บทความ ( 1 )



สถานะออฟไลน์


ได้แล้วครับ (เหนื่อย)

แต่มันออกมาแบบนี้ครับ

สมชาย, สมหญิง, สมจิตร,

ทำยังให้ , ตัวสุดท้ายมันหายไปครับ หรือมีวิธีไหน ที่แบ่งตาม , แล้ว อันเก่ามันไม่หายมั่งครับ

คือ แบ่งเมื่อเจอ , แต่ไม่ต้องตัดออก

รายชื่อไม่ตายตัวนะครับ อาจมี 1, 2, 3 ก็ได้

Code (PHP)
<?PHP
                            
   $e = split(',',$show['as_per_name']);

   foreach($e as $value){

   if(ereg($_SESSION['per_name'],$value)){

      echo "<b>".$value."</b>".",";

   }else{

      echo $value.",";

   }
                            
}
?>



ประวัติการแก้ไข
2014-07-01 13:17:19
2014-07-01 13:18:47
2014-07-01 13:26:02
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-01 12:47:33 By : sabaitip
 


 

No. 5



โพสกระทู้ ( 1,666 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้ามันติดมาด้วยเสมอ แบบว่ายังไงก็มา 100% เมื่อได้ผลลัพท์สุดท้ายแล้ว แล้ว เราก็แค่ substr ตัดตัวหลังสุด 1 ตำแหน่ง เป็นอันจบพิธีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-01 15:40:04 By : meannerss
 


 

No. 6



โพสกระทู้ ( 361 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : meannerss เมื่อวันที่ 2014-07-01 15:40:04
รายละเอียดของการตอบ ::
มันไม่ได้ติดมาด้วยอะครับ ที่เห็นว่ามันมี คอมม่า อยู่เพราะผมใส่ตรง echo อ่ะครับ

ปกติมันเรียงมาแบบนี้เลยครับ

สมชาย สมหญิง สมจิตร

ผมอยากใส่ คอมม่าคั่นไว้ แต่ไม่อยากให้มีตัวหลังครับ

สมชาย, สมหญิง, สมจิตร,



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-01 16:43:21 By : sabaitip
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การใช้ group_concat ครับ อยากให้ชื่อผู้ที่ login ขึ้นเป็นตัวหนา
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่