0

I have searched a lot but cannot find a solution yet. Hope anyone can help me with it, I will really appreciate.

I use a php news page with session. PHP script displays 10 news and if there is more news, visitor suppose to click "Next" button (I try to make it work with tag, but it doesn't work with usual submit button either). Page refresh using same script adding a value to page. Everything seemed to work except session. $_SESSION['page'] does not add value. I always come back to Page1.

<?php session_start();?>
<?php
if(isset($_SESSION['page']) && isset($_POST['next'])){
   $_SESSION['page']++;
}
if(isset($_SESSION['page']) && isset($_POST['previous'])){
   $_SESSION['page']--;
}
else{
   $_SESSION['page']=1;
}

....//code reading file with news, counting values etc. that work good
//I tried several options:

//Option:1
if ($l == "en") {
   echo '<p class="sider_link">Page: '.$_SESSION['page'].'. Unread news: '.$news_left;
   echo '<form action="../en/news.php" method="post">';
   echo '<a class="sider_link" href="#" name="next" onclick="this.form.submit()">Next Page</a></form></p>';
}

//Option:2
if ($l == "en") {
   echo '<p class="sider_link">Page: '.$_SESSION['page'].'. Unread news: '.$news_left;
   echo '<form action="../en/news.php" method="post">'
   echo '<input type="hidden" name="next" value="yes" />';
   echo '<a class="sider_link" href="#" onclick="this.form.submit()">Next Page</a></form></p>';
}    
anurupr
  • 2,294
  • 2
  • 20
  • 28
Pavel
  • 13
  • 2
  • the session code is in a separate file right? – anurupr Mar 07 '14 at 08:33
  • No the session is in same file.The part in middle that I scipped it is a part of a function that read file with stored news and select the language required. I didn't include it because it doesn't work with session. – Pavel Mar 07 '14 at 08:50

1 Answers1

1

Your first statement works, page is increment. But after the second statement is false, the else condition is called. Page is set to one. To sum up you have an error in your condition.

if(isset($_SESSION['page']) && isset($_POST['next'])){
   $_SESSION['page']++;
}
if(isset($_SESSION['page']) && isset($_POST['previous'])){
   $_SESSION['page']--;
}
else{
   $_SESSION['page']=1;
}

To

if(isset($_SESSION['page']) && isset($_POST['next'])){
   $_SESSION['page']++;
}
else if(isset($_SESSION['page']) && isset($_POST['previous'])){
   $_SESSION['page']--;
}
else{
   $_SESSION['page']=1;
}
Debflav
  • 1,131
  • 7
  • 17
  • What if a user simply refresh the current page without posting? (he'll be back on page 1), please check about an existing session before setting page to 1. – Loïc Mar 07 '14 at 08:30
  • It's an another problem, maybe he has his reasons. I've found the current bug, but it's a good remark. – Debflav Mar 07 '14 at 08:37
  • @Debflav thank you for remark about refresh, i will work on it more. I've changed code, it makes total sense but it still didn't work. I have a feeling that something is wrong with `` tag, that it doesn't send the value properly. – Pavel Mar 07 '14 at 08:46
  • @Pavel Try [this way](http://stackoverflow.com/questions/4286466/use-a-normal-link-to-submit-a-form)(Set an id to your form...).I have no more clue. – Debflav Mar 07 '14 at 09:16