2017-05-26 11 views
-1

モジュールのTPLファイルを変更しようとしていて、いくつかの問題に直面しています。TPL内からPHPを実行

私はドロップダウンリストを持っていて、ユーザがリストから項目を選択したときにSQLクエリを実行します。 これまでは、Ajaxを使ってPHPファイルを実行しようとしましたが、クエリは実行されましたが、成功することはありませんでした。 私はさまざまな例を見てきましたが、どのようにすればよいのか理解できません。 それにもかかわらず、ここまで私がこれまで行ってきたことがあります。

これは私がTPLファイルに使用したコードです:

<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> 

これは、私はアヤックスを通じて、PHPファイルを呼び出すために使用するJS関数です:

<script type="text/javascript"> 
    function updateStatus(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> 

そして、ここでは私のsetStatusです私が電話をかけたいの.phpファイル:

<?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(); 
} 
?> 
+0

エラー報告を有効にするには、自分のPHPファイルを見てください。 – Peon

+1

まず、js関数 'updateStatus'を呼び出していますが、関数名は' statusUpdate'です。 – 2pha

+0

気づいていただきありがとうございます。ポストにコードを書いている間は間違いでした。実際のコードにはその問題はありません。 – Unidast

答えて

0

最後に私が使用して、問題の解決策を持って助けることができる希望updateStatus

を呼び出しますPHPファイルを実行するためのスクリプト。 私はgoogle-apisからJQueryをインポートし、スクリプトの前後に{literal}を使用しなければならなかったようです。ここで

が更新ジャバスクリプトです:

<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} 

そして、ここではまだ完全ではありませんが、ポイントは、クエリを実行することだったと、今、それが正常に動作する私のPHPファイルです。

<?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

使用

$(document).ready(function() { 
    $("#statusSelect").change(function(){ 
     statusUpdate($(this).val()); 
    }); 
} 

は、あなたのコード内の関数の名前はstatusUpdateで、選択して、あなたは私は、これはあなたが

+0

ありがとう、私のonchange関数が正しく動作するようです。問題は、phpファイルが実行されていないように見えることです。 – Unidast

+0

"echo function doStuff();"を置き換えます。 by "echo doStuff();"または "doStuff();"試してみる? – Alphadha

+0

あなたの助けていただきありがとうございますが、私は両方の方法を試したところ、結果は同じです。 – Unidast

関連する問題