外部循环变量

时间:2011-10-21 19:04:38

标签: php javascript

我怎样才能通过嵌套在'while'循环中的变量来最好地循环数据,但是在它之外调用它?就像在这个例子中一样:

PHP:

 $fr_q2 = mysqli_query($connect,"SELECT * FROM friends WHERE username ='".$_SESSION['user']."'   
 ORDER BY id DESC");
 while ($rowsPicFr2 = mysqli_fetch_array($fr_q2)) {

 $friends_q2[] = $rowsPicFr2['added_friend'];
 $frn[] = $rowsPicFr2['added_friend'];
 $frn2 = $rowsPicFr2['added_friend'];
 }

 $rowscheck = mysqli_num_rows($fr_q2);
 for ($i=0; $i<$rowscheck; $i++)

HTML:

 <a href="#" onclick="remdata(<?php echo $frn[$i]; ?>)">YES</a>

所以我需要将$ frn [$ i]传递给remdata()函数 - 但是$ frn [$ i]需要循环....所有我得到的是来自'friend_added'的所有id的字符串$ FRN [$ i]于....谢谢。

2 个答案:

答案 0 :(得分:1)

将此HTML发送到浏览器后,它将不再循环。它只是HTML。所以你需要做的是让它在JavaScript中循环或者只是回显每个remdata():

<a href="#" onclick="<?php foreach($frn as $f) echo "remdata({$f});"; ?>">YES</a>

如果你在$ frn中只有很少的元素,这个解决方案真的是一个选项。

答案 1 :(得分:1)

你的问题令人困惑;我认为你需要HTML输出的循环

<?php foreach ($frn as $i => $friend_id){ ?>
    <a href="#" onclick="remdata(<?php echo $friend_id; ?>)">YES</a>
<?php } ?>

根据你在toon81的回答中的评论,你的输出中有几个循环处理数据库查询中的相同结果集似乎有问题。我不确定。我建议您将来尝试让您的问题更容易理解。例如,我们是否需要知道它是一个社交网络应用程序?您的变量名称本身并不容易理解; $ frn和$ frn2之间有什么区别?大概是那个'朋友',但我一直把它当作'蕨'。您也只提供了一行输出,但您的问题似乎与它与其他输出的交互有关。您的代码被截断 - rowscheck循环没有定义。

那就是说,这是对我如何以不同方式处理你的工作的高级建议。数据准备:

$connection = ...;
$user = $_SESSION['user'];
$sql = "
    SELECT added_friend
    FROM friends
    WHERE username = '$user'
    ORDER BY id DESC
";
$response = mysql_query($sql, $connection);

$added_friends = array();
while ($row = mysql_fetch_object($response)){
    $added_friends[] = $row->added_friend;
}

输出处理:

// With one loop if the markup can be ouput all at once.
foreach ($added_friends as $friend){
    // Your 'friends_q2', whatever that is.
    echo "Friends_q2: $friend";

    // Your 'frn2' output, whatever that is.
    echo "Frn2: $friend";

    // Your 'frn' output.
    echo "<a href=\"#\" onclick=\"remdata($friend)\">YES</a>";
}


// ...or multiple loops if it can't.
foreach ($added_friends as $friend){
    // Your 'friends_q2', whatever that is.
    echo "Friends_q2: $friend";
}

foreach ($added_friends as $friend){
    // Your 'frn2' output, whatever that is.
    echo "Frn2: $friend";
}

foreach ($added_friends as $friend){
    // Your 'frn' output.
    echo "<a href=\"#\" onclick=\"remdata($friend)\">YES</a>";
}

在任何情况下,您在不同的列表中以不同的方式处理相同的ID三次。我不确定为什么。这是你要求帮助的吗?