PHP Fatal error: Call to undefined function how do I fix it?

I’ve very new to PHP and am trying to get API (REST) to work with a site I’m currently working on. It works if I submit a form using AJAX but I want it to work without using AJAX. The code I’m using is:

<?php
$postContactUrl = 'https://apiconnector.com/v2/contacts/';
$data = array(
'Email' => $_POST['email'],
'EmailType' => 'Html',
'dataFields' => array(
array(
'Key' => 'FULLNAME',
'Value' => $_POST['name_first']." ".$_POST['name_last'] ),
)
);
$contact = execute_post($postContactUrl, $data);

$addContactToAddressBookUrl = 'https://apiconnector.com/v2/address-books/' . '123456' . '/contacts';
$book =  execute_post($addContactToAddressBookUrl, $contact);

function execute_post($url, $data){
$requestBody = json_encode($data, true);

$ch = curl_init();

curl_setopt($ch, CURLAUTH_BASIC, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD, 'username' . ':' . 'password');
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Accept: ' . 'application/json' ,'Content-Type: application/json'));

$responseBody = json_decode(curl_exec($ch));

curl_close($ch);

return $responseBody;
}
?>

but when I try to add that to the page the form is on I get this error:

PHP Fatal error: Call to undefined function execute_post()
I’ve tried to fix it but nothing I do seems to work. I don’t understand why it works with AJAX but not any other way.

I tried moving the function to before I called it but neither this:

function execute_post(){
...
}

    $contact = execute_post($postContactUrl, $data);

nor this worked:

function execute_post(){

    $contact = execute_post($postContactUrl, $data);

Should this line have a comma on the end? I can’t see why it needs one, it implies there’s another parameter coming but there isn’t. Could it just be upsetting the parser?

'Value' => $_POST['name_first']." ".$_POST['name_last'] ),

I did try it without the comma but that didn’t make a difference, I’ve attached the file with the full code but I’m really at a loss as to why I keep getting the fatal error.

The only time I don’t get it is if I move the function to above where it’s called, but then the when I do that it’s not called at all.
:confounded:
REST.php (13.7 KB)

I think I have have discovered where the problem is. When I use print_r on $data it prints the results, $contact again works but $book prints nothing at all. I don’t know what the reason for $book not showing anything. I tried renaming it incase it was conflicting with something I wasn’t aware of but that didn’t make any difference.

Does anybody have any suggestion as to why this isn’t working?

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.