javascript not passing variable back to PHP

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Marty Meyers

    javascript not passing variable back to PHP

    TIA for your help!

    I have a page (code snip below) named "browse" which has a table in it with
    rows like this:

    2003 1500 Silverado pickup red 51,024 $19,995 Details

    ---------

    each row of the table has a hidden id number which is to be passed on to the
    next page when the user clicks on "Details" or any other item in the row.

    In the code snip below is the javascript that processes the submit when
    "Details" is clicked as well as the relevant table code.

    When the subsequent page, "details.ph p" is loaded the following two lines
    are executed:
    $id = $_REQUEST['d'];
    $ids = $_REQUEST['ids'];

    In php.ini "register_globa ls" is off.

    The problem is: Both ['d'] and ['ids] appear to be recognized but, $id
    returns the correct value of "8", while $ids is "" instead of "'2615631'"

    What I don't understand is why one works and the other doesn't.
    Could someone explain the difference? I've tried some of the tips given for
    using extract without any success.

    Thanks
    Marty

    <html>
    <head>
    <link href="general.c ss" rel="stylesheet " type="text/css">

    <script language="Javas cript">
    var marked_row = new Array;
    function getDetails(obj)
    { theIDField = eval('document. browse.id'+obj) ;
    theIDField.chec ked = "true";
    document.browse .submit();
    return true;
    }
    </script>

    --snipped other code not relevant(I think)

    <form method=post name=browse action=details. php><input type=hidden name=d
    value="8">
    <tr>
    <td colspan=9><font color=black>Cli ck Column Headings To
    Sort.</font></td>
    </tr>
    <tr bgcolor=#D93540 >
    <td colspan=9><p class=bigheadin g><font
    color=#FFFFFF>C hevrolet</font></p></td>
    </tr>
    <tr>
    <td colspan=9><br></td>
    </tr>
    <tr bgcolor=#eeeeee id=0 onmouseover="hi ghlight(this);"
    onmouseout="unh ighlight(this); ">
    <td valign=top><fon t color=black><in put type=checkbox id=id2615631
    name=ids[] value="2615631" ></font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>200 3</font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>150 0 SILVERADO</font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>PIC KUP</font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>RED </font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>51, 024</font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>$19 ,995</font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black></font></td>
    <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    color=black>
    <a href=# onClick="getDet ails('2615631') ; return
    true;">Details</a></font></td>
    </tr>

    <tr bgcolor=#ffffff id=1 onmouseover="hi ghlight(this);"
    onmouseout="unh ighlight(this); ">
    <td valign=top><fon t color=black><in put type=checkbox id=id2615581
    name=ids[] value="2615581" ></font></td>
    <td valign=top onClick="getDet ails('2615581') ; return true;"><font
    color=black>200 3</font></td><td valign=top

    --snipped-repeat entries for multiple lines in table






  • Erwin Moller

    #2
    Re: javascript not passing variable back to PHP

    Marty Meyers wrote:
    [color=blue]
    > TIA for your help!
    >
    > I have a page (code snip below) named "browse" which has a table in it
    > with rows like this:
    >
    > 2003 1500 Silverado pickup red 51,024 $19,995 Details
    >
    > ---------
    >
    > each row of the table has a hidden id number which is to be passed on to
    > the
    > next page when the user clicks on "Details" or any other item in the row.
    >
    > In the code snip below is the javascript that processes the submit when
    > "Details" is clicked as well as the relevant table code.
    >
    > When the subsequent page, "details.ph p" is loaded the following two lines
    > are executed:
    > $id = $_REQUEST['d'];
    > $ids = $_REQUEST['ids'];
    >
    > In php.ini "register_globa ls" is off.
    >
    > The problem is: Both ['d'] and ['ids] appear to be recognized but, $id
    > returns the correct value of "8", while $ids is "" instead of "'2615631'"[/color]

    To debug, start on the receiving page with:

    <pre>
    <? print_r($_POST) ; ?>
    </pre>

    or $_GET is you send via URL.

    You will probably see that ids is not sent at all or empty.

    [color=blue]
    >
    > What I don't understand is why one works and the other doesn't.
    > Could someone explain the difference? I've tried some of the tips given
    > for using extract without any success.
    >
    > Thanks
    > Marty
    >
    > <html>
    > <head>
    > <link href="general.c ss" rel="stylesheet " type="text/css">
    >
    > <script language="Javas cript">
    > var marked_row = new Array;
    > function getDetails(obj)
    > { theIDField = eval('document. browse.id'+obj) ;[/color]

    This is bad.
    Have a look at document.getEle mentById('<ID HERE>');
    It is the prefered way of getting elements.

    [color=blue]
    > theIDField.chec ked = "true";[/color]

    I would prefer true instead of the string "true";
    Unsure if this could be the cause of troubles.

    [color=blue]
    > document.browse .submit();
    > return true;
    > }
    > </script>
    >
    > --snipped other code not relevant(I think)
    >
    > <form method=post name=browse action=details. php><input type=hidden name=d
    > value="8">[/color]

    Please be less sloppy, for your own good.
    If you use name/value pairs, be sure you add the values as string.
    Now you sometimes do, sometimes dont.

    This is better:
    <form method="post" name="browse" action="details .php">
    <input type=hidden name="d" value="8">

    So you are sending "d" with value "8".
    You can retrieve it in detais.php as:
    $received_d = $_POST["d"];

    [color=blue]
    > <tr>
    > <td colspan=9><font color=black>Cli ck Column Headings To
    > Sort.</font></td>
    > </tr>
    > <tr bgcolor=#D93540 >
    > <td colspan=9><p class=bigheadin g><font
    > color=#FFFFFF>C hevrolet</font></p></td>
    > </tr>
    > <tr>
    > <td colspan=9><br></td>
    > </tr>
    > <tr bgcolor=#eeeeee id=0 onmouseover="hi ghlight(this);"
    > onmouseout="unh ighlight(this); ">
    > <td valign=top><fon t color=black><in put type=checkbox id=id2615631
    > name=ids[] value="2615631" ></font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>200 3</font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>150 0 SILVERADO</font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>PIC KUP</font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>RED </font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>51, 024</font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>$19 ,995</font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black></font></td>
    > <td valign=top onClick="getDet ails('2615631') ; return true;"><font
    > color=black>[/color]


    Well, you send a string to getDetails, the same string in all cases.

    But in your getDetails you receive it named as 'obj'.
    Why do you confuse yourself so much with bad names?
    It is not an Object, it is a string.

    What you should do is this (if I understand you right):

    You want the value '2615631' send to the receiving script if somebody hits
    the td, ok?

    So just add to your form:
    <input type="hidden" name="whatever_ ids?" value="NA">

    replace whatever_ids? with a good name of course.

    ANd in your getdetails function:
    getDetails(some String){
    document.forms["browse"]["whatever_i ds?"].value=someStri ng;
    document.forms["browse"]submit();

    }



    Regards,
    Erwin Moller

    PS: Debugging starts with:
    1) in receiving script print the posting with pre and print_r()
    2) in JS: use alert() to check your values.



    [color=blue]
    > <a href=# onClick="getDet ails('2615631') ; return
    > true;">Details</a></font></td>
    > </tr>
    >
    > <tr bgcolor=#ffffff id=1 onmouseover="hi ghlight(this);"
    > onmouseout="unh ighlight(this); ">
    > <td valign=top><fon t color=black><in put type=checkbox id=id2615581
    > name=ids[] value="2615581" ></font></td>
    > <td valign=top onClick="getDet ails('2615581') ; return true;"><font
    > color=black>200 3</font></td><td valign=top
    >
    > --snipped-repeat entries for multiple lines in table[/color]

    Comment

    Working...