FrustratedPHPnovice
FrustratedPHPnovice

Reputation: 161

Passing data from one php page to another is not working - why?

Frustrated php novice here...

I'm trying to pass a "type" value of either billto or shipto from ab.php to abp.php.

ab.php snippet:

<?php
echo '<a href="' . tep_href_link(FILENAME_ABP, 'edit=' . $bill_address['address_book_id'] . '&type=billto', 'SSL') . '">' . 
  tep_image_button('small_edit.gif', SMALL_IMAGE_BUTTON_EDIT) .
'</a>';
?>

This does add the &type=billto to the end of the url. It looks like this: www.mydomain.com/abp.php?edit=408&type=billto&id=4a6524d

abp.php snippet:

if ($HTTP_GET_VARS['type'] == 'billto') {
  then it does a db update...

The if returns false though (from what I can tell) because the update is not performed.

I've also tried $_GET instead of $HTTP_GET_VARS.

Because the code in abp.php isn't executed until after the user clicks a button, I can't use echos to check the value, but I can see the type in the url, so I'm not sure why it's not executing.

Could really use some direction... whether it's what I need to change, or even just suggestions on how to troubleshoot it further. I'm in the middle of a huge learning curve right now. Thanks!!!

edit: Sorry, I just realized I left out that after the db update the user goes back to ab.php. So the whole workflow is this:

User goes to ab.php. User clicks link to go to abp.php. User changes data on abp.php. User clicks button on abp.php. Update to db is executed and user is sent back to ab.php.

Upvotes: 0

Views: 490

Answers (5)

Extrakun
Extrakun

Reputation: 19305

Check the URL of the second page, is it in the correct form? From the code snippet you post, I don't know if there would be a ? after the question mark. Also try to disable the redirect to see if your code is working as it should.

One other thing is you may want to put the new url in a variable first, then put that into the link HTML. It's less efficient, but makes the code easier to read and debug.

Try turning on error reporting, place this at the start of your php script

error_reporting ( E_ALL | E_STRICT)

PHP is very tolerant of typos and accessing subscripts in an array that does not exist; by enforcing strict and reporting all errors you would be able to catch those cases.

If you can't see the output, try this:

function log_error($no,$msg,$file,$line)
{

    $errorMessage = "Error no $no: $msg in $file at line number $line";

    file_put_contents("errors_paypal.txt",$errorMessage."\n\n",FILE_APPEND);    
}

set_error_handler('log_error');

You may have to set some file permissions for the log file to be written to.

Of course, you can get Netbeans and its debugging module too.

Upvotes: 0

inakiabt
inakiabt

Reputation: 1963

or try:

var_dump($_REQUEST);

Upvotes: 0

timmow
timmow

Reputation: 3625

Before the if statement - try

var_dump($_GET);

And make sure the 'billto' is contained within the $_GET array. Of course, if you have got the debuger setup, you should be able to watch the value of the $_GET array

Upvotes: 1

bumperbox
bumperbox

Reputation: 10214

try something like this

if ($_GET['type'] == 'billto') {
  die("got to here, type must == billto");

this will prove that your if statement is working or not, it may be that the update part is not working

Upvotes: 1

VolkerK
VolkerK

Reputation: 96159

Because the code in abp.php isn't executed until after the user clicks a button, I can't use echos to check the value
Why not?

echo '<pre>Debug: $_GET=', htmlspecialchars(var_export($_GET, true)), "</pre>\n";
echo '<pre>Debug: billto===$_GET[type] = ', 'billto'===$_GET['type'] ? 'true':'false', "</pre>\n";
if ( 'billto'===$_GET['type'] ) {
  ...

edit: You might also be interested in netbeans and its php module:

"Debug PHP code using Xdebug: You can inspect local variables, set watches, set breakpoints, and evaluate code live. Navigate to declarations, types and files using Go To shortcuts and hypertext links."

Upvotes: 3

Related Questions