สอบถามการ select ข้อมูล

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามการ select ข้อมูล

สอบถามการ select ข้อมูล

จากโค้ดเป็นค้นหาข้อมูล โดยดึงข้อมูลของสมาชิก(friend_2)ที่เป็นเพื่อนกับผู้ใช้(member_id)
 

$strSQL = "SELECT a. * , b. * FROM friend b LEFT JOIN member a  ON a.member_id = b.friend_2 AND b.friend_1='$member_id' WHERE a.member_name LIKE '%$txtSearch%' ";

ถ้าเราต้องการดึงขอ้มูลของสมาชิกที่อยู่ในระบบเเละไม่ได้เป็นเพื่อนกับผู้ใช้ ไม่ทราบว่าเราสามารถเเก้ได้อย่างไรค่ะ
 



Nathakarn 180.183.116.xxx 19-12-2014 23:53:41

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ความสัมพันธ์ของตาราง
ตาราง member
friend_1=member_id  ผู้ใช้

member_id member_name
                 27 Mooo                   
                 28 NOO                    
                 29 Sooo                    

ตาราง friend
friend_1 ผูใช้  friend_2 เพื่อนผู้ใช้

friend_id friend_1 friend_2
47             28            27           
48             27            28           
39             27            29         


nathakarn 180.183.120.xxx 19-12-2014 23:54
 ความคิดเห็นที่ 2

ลองเเก้เป็นเเบบนี้เเต่ก็ยังไม่ได้ค่ะ คือต้องการค้นหา สมาชิกที่อยู่ในระบบเเละไม่ได้เป็นเพื่อนกับผู้ใช้ ต้องการผลลัพท์ (friend_1 ไม่เคยเป็นเพื่อนกับ friend_2 เเละ friend_2 ไม่เคยเป็นเพื่อนกับ friend_1)
เเต่ผลลัพธ์กลับออกตรงข้ามค่ะ เเล้วข้อมูลที่ค้นเจอจะเเสดงข้อมูลเดิมซ้ำสองรอบ ไม่ทราบต้องเเก้ไขยังไงค่ะ


$strSQL = "SELECT a. * , b. * FROM friend b LEFT JOIN member a  ON a.member_name LIKE '%$txtSearch%' WHERE a.member_id != b.friend_2 AND b.friend_1 != '$member_id'  ";


nathakarn 180.183.120.xxx 22-12-2014 01:36
 ความคิดเห็นที่ 3
ถ้าข้อมูลไม่เยอะ คงต้องใช้วิธีธรรมดา
ดูเป็นแนวทาง
<?php
$str_id="";
$q="
SELECT friend_2 FROM friend 
WHERE friend_1='29'
";
$qr=mysql_query($q);
if($qr){
	while($rs=mysql_fetch_array($qr)){
	 	$str_id.=$rs['friend_2'].",";
	}
	if($str_id!=""){
		$str_id=substr($str_id,0,-1);
	}
}
if($str_id!=""){
	$q="
	SELECT * FROM member WHERE memer_id NOT IN($str_id)
	";
}else{
$q="
	SELECT * FROM member WHERE member_id NOT IN(NULL)
	";
}
?>


ninenik 124.122.66.xxx 22-12-2014
 ความคิดเห็นที่ 4

1.ไม่เเน่ใจว่าเข้าใจถูกรึป่าวค่ะ  $str_id=""; คือ การดึงข้อมูลของคนที่เป็นเพื่อนกับผู้ใช้ใช่ป่าวค่ะ 
   ถ้า $str_id=""; คือ การดึงข้อมูลของคนที่เป็นเพื่อนกับผู้ใช้ ลองเเก้โค้ดเเล้วก็ยังไม่ได้ค่ะ ไม่ทราบว่าผิดตรงไหนค่ะ
   

2.เเล้วถ้าต้องการใส่การเเบ่ง page เข้าไปด้วย ไม่ทราบว่าดึงค่าจากตรงไหนมาใช้ในการเเบ่งเพจ รบกวนช่วยดูให้หน่อยนะค่ะ

 

  <div id="newsfeed_contain">
 <div class="newsfeed">
 <div class="block_friend_add">
 <form id="form1" name="form1" method="post" action="">
 <table width="660px">
 <tr>
 <td><input type="text" name="txtSearch" id="txtSearch" class="form-control" size="70" placeholder="พิมพ์ชื่อเพื่อนที่ต้องการค้นหา" />
 </td>
 <td width="150px" align="right">
 <button type="submit" name="button" id="button" class="btn btn-default" title="ค้นหาเพื่อน"><img src="images/search.png" width="20" height="20" align="absmiddle"/>&nbsp;ค้นหาเพื่อน</button> 
 </td>
 </tr>
 </table>
</form> 
</div>
</div> 
<form action="check_add_friend.php" method="post">
<?php
 $txtSearch = $_POST['txtSearch'];
$strSQLmember = "SELECT * FROM member WHERE member_id = '$member_id'";  
$str_id="SELECT a. * , b. * FROM friend b LEFT JOIN member a ON a.member_id = b.friend_2 WHERE b.friend_1='$member_id'";  
$strSQL="SELECT friend_2 FROM friend WHERE friend_1='$member_id'";  
$result=mysql_query($strSQL);  
if($result){			  
    while($row=mysql_fetch_array($result)){  
        $str_id.=$row['friend_2'].",";  
    }  
    if($str_id!=""){  
        $str_id=substr($str_id,0,-1);  
    } 
	$Num_Rows = mysql_num_rows($result);
				
				$Per_Page = 5;   // Per Page
				
				$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;
				}
				
				$strSQL .=" order by member_id DESC LIMIT $Page_Start , $Per_Page ";
				while ($row=mysql_fetch_array($result)){
			  	$mmerber_id = $row['member_id']; 
}  
if($str_id!=""){  
    $strSQL=" SELECT * FROM member WHERE memer_id NOT IN($str_id) WHERE member_name LIKE '%$txtSearch%' ";  
}else{  
	$strSQL=" SELECT * FROM member WHERE member_id NOT IN(NULL) WHERE member_name LIKE '%$txtSearch%' ";  
} 

?> 

<div class="newsfeed">

<div class="pic_newsfeed">            
 <?php if($row['member_pic'] == ''){?>
                    <img src="images/bgprofile1.jpg" width="50" height="50" />
                    <?php }else{?>
                    <img src="myfile/<?php echo $row["member_pic"];?>" width="50" height="50" />
                   <?php } ?>
</div>

<div class="text_newsfeed">                   
<?php echo $row['member_name'];?>
<span style="float:right">
<button type="button" name="button" id="button" class="btn btn-default" title="เพิ่มเพื่อน" onclick="window.location='check_add_friend.php?idMem=<?php echo $row['member_id'];?>'"><img src="images/add_friend.png" width="20" height="20" align="absmiddle"/>&nbsp;เพิ่มเพื่อน
</button>
</div>

</div> 
<?php			  
		}
	?>
</form>
<br>
<!--div button next page--> 
<div style="float:left"> 
        จำนวนเพื่อน
        <?= $Num_Rows;?>
        &nbsp;คน 
        <br/>

		<!--: หน้าที่ -->
	<?
		//$Num_Pages;
	?> 
	<?
		if($Prev_Page)
		{
		echo "<span style="float:left">
<nav>
    <ul class="pagination">
    <li class="disabled"><a href="$_SERVER[SCRIPT_NAME]?Page=$Prev_Page"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li>
    </ul>
</nav>
</span> ";
		}
              
		for($i=1; $i<=$Num_Pages; $i++){
		$Page1 = $Page-2;
		$Page2 = $Page+2;
		if($i != $Page && $i >= $Page1 && $i <= $Page2)
		{
		echo "<span style="float:left">
<nav>
    <ul class="pagination">
    <li class="disabled"><a href="$_SERVER[SCRIPT_NAME]?Page=$i">$i</a></li>
    </ul>
</nav>
</span>";
		}
			elseif($i==$Page)
			{
			echo "<span style="float:left">
<nav>
    <ul class="pagination">
    <li class="active"><a href="#">$i<span class="sr-only">(current)</span></a></li>
    </ul>
</nav>
</span>";
			}
		}
		if($Page!=$Num_Pages)
		{
		echo "<span style="float:left">
<nav>
    <ul class="pagination">
    <li class="disabled"><a href="$_SERVER[SCRIPT_NAME]?Page=$Next_Page"><span aria-hidden="true">&raquo;</span><span class="sr-only">Next</span></a></li>
    </ul>
</nav>
</span>";
		}
	?>

</div>

</div>


nathakarn 180.183.135.xxx 23-12-2014 01:24
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ