Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New Coder
    Join Date
    Dec 2010
    Posts
    37
    Thanks
    4
    Thanked 0 Times in 0 Posts

    $_REQUEST Help to $_GET My Form $_POSTed

    Great forum! This looks like the place to be for PHP help. I'm a novice, but I've been muddling around in my Zen Cart store for over a year, so I probably know just enough to be dangerous.

    I'm trying to create a mod related to gift certificates. More like face lift and expand on an old one. I'm ready to go except for one thing, a really silly thing, that I can't seem to resolve. Before you say, "Why aren't you asking them?" I did. Several times. Either no one knows or cares enough to impart their wisdom. I've searched high and low for a cure! Even here, with innumerable threads about very similar issues, nothing has yet to do the trick.

    I didn't know it even had a name until I came across a remote blog post about "The Empty $_POST Bug." Which immediately made me feel better because at least I know I'm not crazy. Then I wanted to smack all of the people in the comments section who piped up with what had worked for them when none of it worked for me. I'm teasing, of course!

    Code to follow below, including PHP form generation, relevant actions, and HTML output.

    Here's the scenario: The script creates its own page, where the form will be located in the Info box. The form's goal is to enable bypassing of the gift certificate redemption process by allowing direct entry into the database of a new customer and the amount of "cash" they should have. The form consists of the email customer drop down, coded the same way as the regular "mail gift certificate" page where it came from, and a text input for the amount.

    I have no trouble submitting the amount into the database. On the other hand, I can't get the customer selection from the drop down menu to be passed to the server even if I put it on a silver platter.

    When the method of both code and form is set to post, I communicate with the server, but it only recognizes the amount. When everything is on get, I can see the URL values in my address bar, but they won't pass to the server. It's like the lights are on, but no one will answer the door. $_REQUEST does nada too.

    I've tried using java a multitude of ways to no avail. I've tried so many things I'm not even sure I can remember them all, from crafty inputs to additional form controls, storing in sessions, trying to get "the get" and decode it afterward, changing/decoding the charset, file_get_content, more functions, moving the action to a different page, even checking my php.ini file for recommendations from the blog post. NOTHING has worked. It would seem I'm not coding correctly except the same thing happens when I create a "dummy" menu by hand using only HTML.

    Pretty sure I'm the dummy here, which doesn't help when I'm so lost and frustrated I could scream. Praying one of you wise folk will have the cure!

    PHP Form - Info Box Arrays

    PHP Code:
        $heading = array();
        
    $contents = array();
        switch (
    $_GET['action']) {

        case 
    'new':

        
    $heading[] = array('text' => '<b>' TEXT_GV_NEW '</b>');
        
    $heading[] = array('text' => TEXT_GV_NEW_CUSTOMER);

        
    $customers get_audiences_list('email');
        
        
    $contents =   array('form' => html_entity_decode(zen_draw_form('mail" enctype="multipart/form-data'FILENAME_GV_ADMIN_CASH_MGR'action=addnew''post')));
        
    $contents[] = array('text' =>  html_entity_decode(zen_draw_pull_down_menu('customers_email_address'$customers) . '<input type="submit" value="" style="display: none"><input type="hidden" name="customers_email_address" value="'$customers_email_address .'">'));
        
    $contents[] = array('align' => 'left''text' => '<br>' TEXT_GIFT_VOUCHER_NEW_AMOUNT '<br>' zen_draw_input_field('amount'number_format(0.002'.''') ));
        
    $contents[] = array('align' => 'center''text' => '<br>' zen_image_submit('button_update.gif'IMAGE_UPDATE) . '&nbsp;<a href="' zen_href_link(FILENAME_GV_ADMIN_CASH_MGR) . '">' zen_image_button('button_cancel.gif'IMAGE_CANCEL) . '</a>');
        break; 
    Form Action - Add New

    PHP Code:
     $action = (isset($_GET['action']) ? $_GET['action'] : '') or (isset($_POST['action']) ? $_POST['action'] : '');

      if (
    zen_not_null($action)) {
        switch (
    $action) {

          case 
    'addnew':  
            
    $customers_email_address $_POST['customers_email_address'];
            
    $customer_select $db->Execute("select 'customers_id' from " TABLE_CUSTOMERS " where 'customers_email_address' = '" $customers_email_address "' and  'customers_id' = '" . (int)$customers_id "'");
            
    $customers_id zen_db_prepare_input($_POST['customer_select']);
            
    $amount zen_db_prepare_input($_POST['amount']);

        
    // needs input customer and amount
        
    if ($customers_id =="") {
            
    $messageStack->add_session(ERROR_CUSTOMER_NOT_SELECTED'error');
            }
        if (
    $amount == 0.00) {
            
    $messageStack->add_session(ERROR_AMOUNT_NOT_SELECTED'error');
            }
        if (
    $customers_id =="" or $amount == 0.00) {
            
    zen_redirect(zen_href_link(FILENAME_GV_ADMIN_CASH_MGR'page=' $_GET['page'] . '&action=new'));
            }

          
    // say adios if customer is already in the register
            
    $gv_existing $db->Execute("select customer_id from " TABLE_COUPON_GV_CUSTOMER "
                            where customer_id = '" 
    . (int)$customers_id "' ");

        if (
    $gv_existing->RecordCount() > 0) {
                
    $messageStack->add_session(ERROR_CUSTOMER_EXISTS $customers_id 'error');
        } else {
            
    // add new customer record
            
    $insert_query $db->Execute("insert into " TABLE_COUPON_GV_CUSTOMER "
                            (customer_id, amount)
                            values ('" 
    zen_db_input((int)$customers_id) . "', '" . (float)zen_db_input($amount) . "')");

           
    // check for successful creation
            
    $gv_existing $db->Execute("select customer_id from " TABLE_COUPON_GV_CUSTOMER "
                            where customer_id = '" 
    . (int)$customers_id "' ");

        if (
    $gv_existing->RecordCount() > and $gv_existing->fields['customer_id'] == $customers_id and $gv_existing->fields['amount'] > 0) {
            
    $messageStack->add_session(SUCCESS_VOUCHER_ADDED . (int)$customers_id '$'.number_format($amount2'.'',') , 'success');
            } else {
            
    $messageStack->add_session(ERROR_VOUCHER_NOT_ADDED'error');
            }
        }
            
    zen_redirect(zen_href_link(FILENAME_GV_ADMIN_CASH_MGR'page=' $_GET['page'] . '&gid=' $customers_id));
            break; 
    HTML Form Output

    Code:
    <!-- HEADER -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html dir="ltr" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>My Store Admin</title>
    <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
    <link rel="stylesheet" type="text/css" href="includes/cssjsmenuhover.css" media="all" id="hoverJS">
    <script language="javascript" src="includes/menu.js"></script>
    <script type="text/javascript">
    <!-- INFO BOX -->
     <td width="25%" valign="top">
    <table border="0" width="100%" cellspacing="0" cellpadding="2">
      <tr class="infoBoxHeading">
        <td class="infoBoxHeading"><b>Add New Gift Certificate Balance</b></td>
      </tr>
      <tr class="infoBoxHeading">
        <td class="infoBoxHeading">Select a Customer from the Menu:</td>
      </tr>
    </table>
    <form name="mail" enctype="multipart/form-data" action="https://mystore.com/admin/gv_admin_cash_manager.php?action=addnew" method="post">
    <table border="0" width="100%" cellspacing="0" cellpadding="2">
      <tr>
        <td class="infoBoxContent"><select rel="dropdown" name="customers_email_address">
        <option value="" selected="selected">Please Select</option>
        <option value="customernameabc@msn.com">LName, FName (customernameabc@msn.com)</option>
        <option value="customername123@gmail.com">LName, FName (customername123@gmail.com)</option>
        <option value="customernamexyz@yahoo.com">LName, FName (customernamexyz@yahoo.com)</option>
        </select>
    <input type="submit" value=""><input type="hidden" name="customers_email_address" value=""></td>
      </tr>
      <tr>
        <td align="left" class="infoBoxContent"><br>New Gift Certificate Available Balance:<br><input type="text" name="amount" value="0.00" /></td>
      </tr>
      <tr>
        <td align="center" class="infoBoxContent"><br><input type="image" src="https://mystore.com/admin/includes/languages/english/images/buttons/button_update.gif" border="0" alt="Update" title=" Update ">&nbsp;<a href="https://mystore.com/admin/gv_admin_cash_manager.php"><img src="https://mystore.com/admin/includes/languages/english/images/buttons/button_cancel.gif" border="0" alt="Cancel" title=" Cancel "></a></td>
       </tr>
    </table>
    </form>
                </td>
              </tr>
            </table>

  • #2
    Supreme Master coder! abduraooft's Avatar
    Join Date
    Mar 2007
    Location
    N/A
    Posts
    14,863
    Thanks
    160
    Thanked 2,224 Times in 2,211 Posts
    How does your url look like after form submit?
    The Dream is not what you see in sleep; Dream is the thing which doesn't let you sleep. --(Dr. APJ. Abdul Kalam)

  • #3
    New Coder
    Join Date
    Dec 2010
    Posts
    37
    Thanks
    4
    Thanked 0 Times in 0 Posts
    Hi, abduraooft

    When on post, like this:

    After it returns me from the server, back to the form, with the error message that I have to choose a customer.

    When on get, like this:

    But nothing happens. No error message, no database entry, it just sits there in the browser.

    Okay, this is weird. The link is chopping off in my post, even though I can see it in my browser status bar. Where, interestingly, it's been decoded back into character. If only my site would do that!! LOL


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •