2011-10-23 135 views
0

我正在用這個打一個磚牆 這是我的代碼 - 它意味着有一個向前和向後的按鈕,允許我逐步通過一個數組。但是由於一些奇怪的原因,它只停留在兩個數字之間,並拒絕顯示數組中的下一個索引。查找陣列索引

//$someArray is an array of ten items. 
    $_SESSION['theResult'] = $someArray; 

    $prev = $_SESSION['theResult'] [0]--; 
    $next = $_SESSION['theResult'] [1]++; 

    echo "<div id='button_div'> 
    <form action='" . $_SERVER['PHP_SELF'] . "'> <input type='hidden' value='" . $prev. "' name=\"id\" /> <input style='float:left;' class='strong_bttn' type='submit' value='<< Previous'></form> 

      <form action='" . $_SERVER['PHP_SELF'] . "'><input type='hidden' value='" . $next. "' name='id' /><input style='float:right;' class='strong_bttn' type='submit' value='Next >>'></form></div>"; 

我要的是,當我按下旁邊的按鈕移動到下一個索引數組中,如果按上一個,它的動作backward.But它只是停留在1和0

我不知道這段代碼是否對任何人都有意義。我只是感到沮喪和疲憊,我只想放棄:(

+0

爲什麼有這麼多不同的縮進長度? –

+2

這有點難讀: – Ryan

+0

'$ prev'和'$ next'只是索引,對吧?爲什麼你將它們設置爲一個數組的值? – Ryan

回答

0

您是否試圖遍歷結果數組?如果是的話,也許這可以幫助:

<?PHP 
// is an array of ten items. 
$_SESSION['theResult'] = array('a','b','c','d','e','f','g'); 
$max = count($_SESSION['theResult']); 

if(isset($_GET['prevBttn'])) 
{ 
    $prev=($next=$_GET['previous'])-1; 
    if($next==0) 
     $prev=0; 
    echo $_SESSION['theResult'][$next]; 
} 
elseif(isset($_GET['nextBttn'])) 
{ 
    $next=($prev=$_GET['next'])+1; 
    if($next ==$max) 
     $next=$prev; 
    echo $_SESSION['theResult'][$next]; 
} 
else{ 
    (int)$prev=$next=key($_SESSION['theResult']); 
    echo array_shift($_SESSION['theResult']); 
} 
?> 
<div id='button_div'> 
    <form action="<?PHP echo $_SERVER['PHP_SELF'];?>"> 
     <input type='hidden' value="<?PHP echo $prev;?>" name="previous"/> 
     <input type='hidden' value="<?PHP echo $next;?>" name='next' /> 
     <input style='float:left;' name="prevBttn" class='strong_bttn' type='submit' value='<< Previous'> 
     <input style='float:right;' name="nextBttn" class='strong_bttn' type='submit' value='Next >>'> 
    </form> 
</div> 
+0

感謝您的代碼噸完全是我想要的100%......我不相信你花時間寫這些代碼。你是一位神派。保持祝福:) –

+0

好的,謝謝! – Melsi

0

我認爲問題在於:

action='" . $_SERVER['PHP_SELF'] . "' 

它既發送到當前頁面,這就是爲什麼你只會得到2值我認爲,在頁面開始,它只會顯示第一頁,並鏈接到第二頁

0

爲什麼在下面的代碼確定何時$上一頁和$下一次改變的值:

$prev = $_SESSION['theResult'] [0]--; 
$next = $_SESSION['theResult'] [1]++; 

你守LD只是基礎$上一頁值和$下一對用於當前頁面的價值,是這樣的:當你使用++

$prev = $currentPageId - 1; 
$next = $currentPageId + 1; 
0

我不知道這是否是問題,但還是 - 在變量之後,分配首先發生,然後變量增加。分配,然後遞增。變量之前 - 如果你想增加後的數目存儲到$上一頁/ $下一個變量,把++

$prev = $_SESSION['theResult'] [0]; 
$_SESSION['theResult'] [0]--; 
$next = $_SESSION['theResult'] [1]; 
$_SESSION['theResult'] [1]++; 

:那麼你基本上做的就是這個。

$prev = --$_SESSION['theResult'] [0]; 
$next = ++$_SESSION['theResult'] [1];