Retaining values passed at end of URL after form submission
4 posts by 2 authors in: Forums > CMS Builder
Last Post: October 9, 2013 (RSS)
Hi All,
To facilitate accessing archives on a blog that I’ve created I’m using the following to pass Values to my archive list page (blog3.php):
<?php
// get list of unique months and years with articles
$query = "SELECT DATE_FORMAT(date, '%M %Y') as dateAndYear, YEAR(date) as year, MONTH(date) as month FROM cms_blog GROUP BY dateAndYear ORDER BY date";
$result = mysql_query($query) or die("MySQL Error: ". htmlspecialchars(mysql_error()) . "\n");
while ($record = mysql_fetch_assoc($result)):
?>
<a href="blog3.php?date_year=<?php echo $record['year'] ?>&date_month=<?php echo $record['month'] ?>"><?php echo $record['dateAndYear']; ?></a>
I’m also allowing visitors to the main blog page to choose whether they want to view posts by ascending or descending dates with this code:
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<select name="order">
<option value="b">earliest date at the top</option>
<option value="a">most recent date at the top</option>
</select>
<input type="submit" name="submit" value="Click/Tap To Choose Display Order">
</form>
<?php $orderBy = "date";
if (@$FORM['order'] == 'b') { $orderBy = "date"; }
if (@$FORM['order'] == 'a') { $orderBy = "date DESC"; }
?>
<br>
<?php // load records from 'blog'
list($blogRecords, $blogMetaData) = getRecords(array(
'tableName' => 'blog',
'loadUploads' => true,
'allowSearch' => false,
'orderBy' => $orderBy,
));
?>
The problem is, when I try to use the same approach on the archive page (blog3.php), submitting the $order_by request form causes the date_year and date_month data to disappears from the end of the URL, resulting in errors.
How can I retain the data at the end of the URL after submitting the $order_by request on the archive page.
Thanks,
Jerry Kornbluth
Take advantage of a free 3 month trial subscription, only for CMSB users, at: http://www.thecmsbcookbook.com/trial.php
By Daryl - October 9, 2013
Hi Jerry,
What I would do is I will capture the date_year value and date_month value and put them in a hidden field in the $order_by request form.
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<input type="hidden" name="date_year" value="<?php echo @$_REQUEST['date_year']; ?>">
<input type="hidden" name="date_month" value="<?php echo @$_REQUEST['date_month']; ?>">
<select name="order">
<option value="b">earliest date at the top</option>
<option value="a">most recent date at the top</option>
</select>
<input type="submit" name="submit" value="Click/Tap To Choose Display Order">
</form>
Hope this helps.
Cheers!
PHP Programmer - interactivetools.com
By gkornbluth - October 9, 2013 - edited: October 9, 2013
Hi Daryl,
Thanks for the insight. I'll give it a try in the morning.
Jerry Kornbluth
Take advantage of a free 3 month trial subscription, only for CMSB users, at: http://www.thecmsbcookbook.com/trial.php
Well I couldn't wait and I gave it a try.
Worked like a charm
Thank you Daryl.
The code on blog 3 is now
<span class="heading_font">Have It Your Way</span><br />
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<select name="order">
<option value="b">earliest date at the top</option>
<option value="a">most recent date at the top</option>
</select>
<input type="submit" name="submit" value="Click/Tap To Choose Display Order">
</form>
<?php $orderBy = "date";
if (@$FORM['order'] == 'b') { $orderBy = "date"; }
if (@$FORM['order'] == 'a') { $orderBy = "date DESC"; }
?>
<?php $record_limit = $common_informationRecord['record_limit'] ?>
<?php if (@!$record_limit ) { $record_limit1 = ""; } ?>
<?php if (@$record_limit >=1 ) { $record_limit1 = $common_informationRecord['record_limit']; } ?>
<br>
<?php // load records from 'blog'
list($blogRecords, $blogMetaData) = getRecords(array(
'tableName' => 'blog',
'loadUploads' => true,
'allowSearch' => false,
'orderBy' => $orderBy,
'limit' => $record_limit1,
));
?>
Jerry Kornbluth
Take advantage of a free 3 month trial subscription, only for CMSB users, at: http://www.thecmsbcookbook.com/trial.php