2014-01-06 56 views
-1

enter image description here我想顯示使用PHP和SQL的朋友列表,並且我的代碼部分工作。但是,它多次返回相同的結果,我希望它不會。停止PHP多次返回相同的結果

的SQL:

$sql = 
"SELECT ubuser.usr_firstname, ubuser.usr_lastname, ubuser.usr_DOB, 
ubuser2_1.usr_firstname & \" \" & ubuser2_1.usr_lastname 
AS UBFriend, ubFriendsLink.ub_lnkID1, ubFriendsLink.ub_lnkID2, ubuser.usr_ID, 
ubuser2_1.usr_ID 
FROM ubuser 
AS ubuser2_1 
INNER JOIN (ubFriendsLink INNER JOIN ubuser ON ubFriendsLink.ub_lnkID1 = ubuser.usr_ID) 
ON ubuser2_1.usr_ID = ubFriendsLink.ub_lnkID2 
WHERE (((ubFriendsLink.ub_lnkID1) = ".$_SESSION['usr_ID'] .")) 
OR (((ubFriendsLink.ub_lnkID2) = ".$_SESSION['usr_ID'] ."))"; 

的SQL工作(或似乎)。

顯示結果代碼:

<?php 
$nrecs=0; 
while (!$FriendsRs->EOF) { 
$nrecs++; 
?> 
<? php 
    if (.$SESSION['usr_ID'] == ['ub_lnkID1']) 
    { 
    echo <p>Name: <?php echo $FriendsRs->Fields['UBFriend']->Value ?><br/ > 
    <? php 
    else 
    echo <p>Name: <?php echo $FriendsRs->Fields['usr_firstname']->Value ?> <?php 
    echo $FriendsRs->Fields['usr_lastname']->Value ?><br /> 
<?php $FriendsRs->MoveNext() ?> 
<?php } ?> 

結果:

Name: Carl Smith 
Name: Rob Sanderson 
Name: Rob Sanderson 
Name: Tony Jackson 

的問題似乎是,我所得到的是與ub_lnkIDs,其中相關的名稱的列表我只想顯示個人的名字。 (僅供參考,Rob Sanderson不需要,但可以返回一次)。

編輯:

所需的輸出是

Name: Carl Smith 
Name: Tony Jackson 
+0

其不清楚,給出你想要的輸出的例子 – meda

+0

我的歉意,所需的輸出應該是:姓名:卡爾史密斯名稱:託尼傑克遜 –

+0

@羅布桑德森不,編輯(http://stackoverflow.com/posts/20952153/edit )你的問題,並將其添加到那裏。 –

回答

0

從描述中可以看出,您想要從列表中刪除重複項。

我不確定你想用會話檢查做什麼,但是你原來的if/else條件沒有意義,所以我根據你的查詢將它改爲正確的。

<?php 

    $Arrnames = array(); 

// Produces array containing all the names in the correct format 
while (!$FriendsRs->EOF) 
{ 
    if ($SESSION['usr_ID'] == $FriendsRs->Fields['ub_lnkID1']) 
    { 
     array_push($Arrnames, "<p>Name: ".$FriendsRs->Fields['UBFriend']->Value."<br />"); 
    } 
    else 
    { 
     array_push($Arrnames, "<p>Name: ".$FriendsRs->Fields['usr_firstname']->Value ." ". $FriendsRs->Fields['usr_lastname']->Value . "<br />"); 
    } 
    $FriendsRs->MoveNext(); 
} 

// Removes the duplicates from the array 
$ArrnamesDedupped = array_unique($Arrnames); 

// Loops the de-duplicated array and echos the result 
foreach ($ArrnamesDedupped as $value) 
{ 
    echo $value; 
} 
?> 
+0

謝謝你的回答。我試過這個,但得到了以下錯誤:解析錯誤:語法錯誤,意外的'['在H:\ STUDENT \ S0213628 \ part2 \ friendslist.php在線64 ...行64是行if($ _SESSION [ 'usr_ID'])== ['ub_lnkID1']) –

+0

if($ SESSION ['usr_ID'] == ['ub_lnkID1'])的問題在於它應該以對象爲前綴,例如$ FriendsRs-> Fields [ '' ub_lnkID1 '']。我已經相應地更新了答案。 – Nirav24x7

0
if (.$SESSION['usr_ID'] == ['ub_lnkID1']) 

我最好的猜測是單=導致您的if語句失敗

==手段是一樣的(並且可以返回false)鑑於=將始終返回true! (=用於設置值。)

此外,您打開<?php上面的if語句標籤 - 然後在您的<?php echo再次打開它們而不關閉它們?

<? php 
if (.$SESSION['usr_ID'] = ['ub_lnkID1']) 
{ 
echo <p>Name: <?php echo //HERE 
+0

我已經嘗試過,沒有區別,但謝謝你:) –

+0

沒問題 - 更新顯示的代碼,所以沒有人其他人認爲這是一個修復。 –

0

存在多個問題。 PHP的標籤,沒有結束}的if語句裏面開 PHP代碼,HTML段落(P)被打開而沒有關閉等

什麼,我認爲你想要做的(未測試):

<?php 
$nrecs = 0; 
while (!$FriendsRs->EOF) { 
    $nrecs++; 
    if ($SESSION['usr_ID'] !='ub_lnkID1') { 
     echo "<p>Name:" . $FriendsRs->Fields['usr_firstname']->Value . " " . $FriendsRs->Fields['usr_lastname']->Value . "</p>"; 
    } 
    $FriendsRs->MoveNext(); 
} 
?>