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>