Pavel
Pavel

Reputation: 13

Submit button send value on same php script, trying to use session

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>';
}    

Upvotes: 0

Views: 615

Answers (1)

Debflav
Debflav

Reputation: 1151

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;
}

Upvotes: 1

Related Questions