2011-10-23 46 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];