2011-10-21 232 views
0

我怎樣才能最好地通過一個嵌套在'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]需要循環....我所得到的是$ frn [$ i]中'friend_added'的所有id的字符串....謝謝。

+2

將HTML發送到瀏覽器後,PHP將不會執行。 PHP將在服務器端和客戶端的JavaScript上執行! – ComFreek

回答

1

一旦這個HTML被髮送到瀏覽器,它不會再循環。它只是HTML。所以,你需要做的,或者是有它循環在JavaScript或簡單地一唱一和remdata():

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

該解決方案是唯一一個真正的選擇,如果你有$ FRN非常少的元素。

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在不同的列表,並以不同的方式三次。我完全不知道爲什麼。這是你要求幫助的嗎?

+0

嗨請參考我的答案toon81的解決方案... –

+0

我改變了我的答案給你的建議。 – mqsoh