Jump to content

Run PHP from within TPL


Recommended Posts

Hello PrestaShop community,

I am trying to modify a module TPL file and face some difficulties. 

 

I have a dropdown list and want to run an SQL query when the user selects an item from the list.

So far I have tried to run a PHP file through Ajax in order to run the query but without any success.

I have seen various examples but can't understand how it should be done.

Nevertheless here is what I have done so far.

 

This is the code I use on the TPL file:

<select id="statusSelect" onChange="updateStatus({$order.id_order|escape:'html':'UTF-8'})">
       <option value="1"> test1 </option>
       <option value="2"> test2 </option>
       <option value="3"> test3 </option>
</select>  

This is the JS function I use to call the PHP file, through Ajax:

<script type="text/javascript">
      function statusUpdate(order_id_sent)
      {   
          //TEST
          //alert(document.getElementsByTagName("option")[selectedIndex].value + " " + order_id_sent);    
          $.ajax({
                 url: 'setStatus.php', 
                 type: 'get',
                 data: 'ajax=true',
                 success: function()
                          {
                              alert("It worked");
                          }
                 });
       }
</script>    

And here is my setStatus.php file which I want to call:

<?php
include_once('../../../../../config/config.inc.php');
include_once('../../../../../init.php');

public function doStuff()
{
      echo "alert('test');"; 
      return 1;
}

if ($_GET['ajax'])
{
      echo function doStuff();
}
?>
Link to comment
Share on other sites

 

 

 

Finally I've got a solution for the problem, by using the following script to run the PHP file. It seems that I had to import the JQuery from google-apis and use {literal} before and after my script.

Here is the updated javascript:


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

{literal}

<script type="text/javascript">

function setStatus(order_id_sent)

{

var selectedIndex = document.getElementById("statusSelect").selectedIndex;

// test

// alert(document.getElementsByTagName("option")[selectedIndex].value + " " + order_id_sent);

var data = document.getElementsByTagName("option")[selectedIndex].value + "-" + order_id_sent;

$.ajax({

data: data,

type: "post",

url: "setStatus.php>",

success: function(data){

alert("data sent" + data);

}

});

}

</script>

{/literal}

And here is my PHP file, which is not complete yet but the point was to run the query and now it works properly.


<?php

include_once('../../../../../config/config.inc.php');

include_once('../../../../../init.php');

include_once('../../../../../classes/Db.php');

 

if(isset($_REQUEST))

{

error_reporting(E_ALL && ~E_NOTICE);

$words = explode('-', $_POST['data']);

//add code to update db

}

?>

 

 

0

down vote

accept

 

 

Finally I've got a solution for the problem, by using the following script to run the PHP file. It seems that I had to import the JQuery from google-apis and use {literal} before and after my script.

Here is the updated javascript:


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

{literal}

<script type="text/javascript">

function setStatus(order_id_sent)

{

var selectedIndex = document.getElementById("statusSelect").selectedIndex;

// test

// alert(document.getElementsByTagName("option")[selectedIndex].value + " " + order_id_sent);

var data = document.getElementsByTagName("option")[selectedIndex].value + "-" + order_id_sent;

$.ajax({

data: data,

type: "post",

url: "setStatus.php>",

success: function(data){

alert("data sent" + data);

}

});

}

</script>

{/literal}

And here is my PHP file, which is not complete yet but the point was to run the query and now it works properly.


<?php

include_once('../../../../../config/config.inc.php');

include_once('../../../../../init.php');

include_once('../../../../../classes/Db.php');

 

if(isset($_REQUEST))

{

error_reporting(E_ALL && ~E_NOTICE);

$words = explode('-', $_POST['data']);

//add code to update db

}

?>

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...