Page 1 of 1
Variable access
Posted: Thu Jan 21, 2010 5:57 pm
by michaelk46
I have a script that stores the code necessary to generate a table that is taken directly from a MySQL database in a variable labeled $pagetable. What I am trying to do is to display the page with the table on it as it is and then display a message to tell whether or not it exported correctly. The way I have done this type of thing in the past is to make a second page that retains the form field information through the use of echo statements.
The problem I am having is that when the submit button is clicked, the $pagetable variable comes up undefined when I try to reload the page. Can someone tell me how to retain that variable after the submit button is clicked.
Re: Variable access
Posted: Thu Jan 21, 2010 5:59 pm
by AbraCadaver
Don't know, can't say, need code.
Re: Variable access
Posted: Thu Jan 21, 2010 6:03 pm
by JakeJ
Well, $_POST['field_name'] retains the variable when you submit it to your script.
Therefore, you can do anything you want as that variable data including pushing it as a $_GET['field_name'] to another page.
$_POST is taken from a form, $_GET puts something in output (including another form field).
Re: Variable access
Posted: Thu Jan 21, 2010 6:20 pm
by michaelk46
Here is the relevant code:
Code: Select all
switch (true)
{
case (isset($_POST['search'])):
$result = NULL;
$pagetable = NULL;
$pageinfo = array();
if(!empty($_POST['searchid']) || (!empty($_POST['pagename']))) //Looks to see if either search field is populated
{
//Generates search string
$sql = "SELECT pages.id, category.cat, manufacturer.manu, pages.pagename FROM pages
INNER JOIN category ON pages.categoryid = category.id
INNER JOIN manufacturer ON pages.manufactureid = manufacturer.id WHERE ";
if(!empty($_POST['searchid']))
{
$searchid = ($_POST['searchid']);
$sql .= "pages.id = ".$_POST['searchid']."";
}
if(!empty($_POST['searchid']) && (!empty($_POST['pagename'])))
{
$sql .= " and ";
}
if(!empty($_POST['pagename']))
{
$sql .= "pages.pagename = ".$_POST['pagename']." ";
$pagename = ($_POST['pagename']);
}
$result = mysqli_query($link, $sql);
if (!$result)
{
include 'searchres.html.php';
$error = 'No Pages Found.';
include 'error.html.php';
exit();
}
$pagetable = "<div>Click Checkbox(es) to Export Record(s) to CSV or Click Appropriate Edit Button to Edit Single Record</div> <table border='1'><TR><TD></TD><TD WIDTH=75 BGColor='#00FF00'>Page ID
</TD><TD WIDTH=150 BGColor='#00FF00'>Pagename</TD> <TD WIDTH=150 BGColor='#00FF00'>Category</TD><TD WIDTH=150 BGColor='#00FF00'>Manufacturer</TD></TR>";
while ($row = mysqli_fetch_array($result))
{
$pagetable .= ('<TR>' . '<TD>' . '<input type="checkbox" name="check[]" value="'. ($row['id']) . '" /> '. '</TD>' . '<TD>' .($row['id']) . '</TD>' . '<TD>' . ($row['pagename']) . '</TD>' .
'<TD>' . ($row['cat']) . '</TD>' . '<TD>' . ($row['manu']) . '</TD>' . '<TD>' . '<form action="?" method="POST">' . '<input type="submit" name="Edit" value="Edit Record #' .
($row['id']) . '"/>' . '</form>' . '</TD>' . '</TR>');
}
$pagetable .= '</table>' . '<p></p>' . 'Select Fields to be Exported' . '<p></p>' . '<input type="checkbox" name="fields[]" value="id" /><label for="fields[]">id</label><div></div>' .
'<input type="checkbox" name="fields[]" value="category" /> <label for="fields[]">category</label><div></div>' .
'<input type="checkbox" name="fields[]" value="manufacturer" /> <label for="fields[]">manufacturer</label><div></div>' .
'<input type="checkbox" name="fields[]" value="pagename" /> <label for="fields[]">pagename</label><div></div>' .
'<input type="checkbox" name="fields[]" value="retailprice" /> <label for="fields[]">retailprice</label><div></div>' .
'<input type="checkbox" name="fields[]" value="salesprice" /> <label for="fields[]">salesprice</label><div></div>' .
'<input type="checkbox" name="fields[]" value="upc" /> <label for="fields[]">upc</label><div></div>' .
'<input type="checkbox" name="fields[]" value="sku" /> <label for="fields[]">sku</label><div></div>' .
'<input type="checkbox" name="fields[]" value="caption" /><label for="fields[]">caption</label><div></div>' .
'<input type="checkbox" name="fields[]" value="image" /> <label for="fields[]">image</label><div></div>' . '<p></p>' .
'<input type="submit" name="export" value="Export to CSV"/>';
include "searchres.html.php";
}
break;
case (isset($_POST['check'])) && (isset($_POST['fields'])):
$check = $_POST['check'];
$fields = $_POST['fields'];
$number = count($check);
$a=0;
$fp = fopen('C:/wamp/www/Work/Upload/Files/csv/export/' . ' ' . date('Y-m-d') . '.csv', 'w');
fputcsv($fp, $fields);
while ($a < $number)
{
$sql = 'SELECT pages.id, category.cat, manufacturer.manu, pages.pagename, pages.retailprice,
pages.salesprice, pages.upc, pages.sku, pages.caption, image.name FROM pages
INNER JOIN category ON pages.categoryid = category.id
INNER JOIN image ON pages.imageid = image.id
INNER JOIN manufacturer ON pages.manufactureid = manufacturer.id WHERE pages.id = "'. $check[$a] .'"';
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_row($result);
fputcsv($fp, $row);
++$a;
}
fclose($fp);
include 'searchres.html.php';
break;
default:
$error = "You must enter search terms"; //Runs if neither search field is populated
break;
}
break;
here is the search.html.php
Code: Select all
<form action="?" method="POST">
<div>
<label for="searchid">Page ID Number:</label>
<div></div>
<input type="text" name="searchid" id="searchid" size="30"/>
</div>
<p></p>
<div>
<label for="pagename">Page Name:</label>
<div></div>
<input type="text" name="pagename" id="pagename" size="30"/>
</div>
<p></p>
<div>
<input type="submit" name="search" value="Generate"/>
</div>
</form>
and finally the searchres.html.php
Code: Select all
<form action="?" method="POST">
<div>
<label for="searchid">Page ID Number:</label>
<div></div>
<input type="text" name="searchid" id="searchid" value="<?php
if(!empty($_POST['searchid'])) echo htmlspecialchars($searchid, ENT_QUOTES, 'utf-8');?>" size="30"/>
</div>
<p></p>
<div>
<label for="pagename">Page Name:</label>
<div></div>
<input type="text" name="pagename" id="pagename" value="<?php
if(!empty($_POST['pagename'])) echo htmlspecialchars($pagename, ENT_QUOTES, 'utf-8');?>" size="30"/>
</div>
<p></p>
<div>
<input type="submit" name="search" value="Generate"/>
</div>
<p></p>
<?php
if(empty($sql)) include 'error.html.php';
else echo ($pagetable);
?>
</form>