2014-01-06 57 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(); 
} 
?>