0

モジュール内にある ajax フォームの結果を、現在表示中の記事に出力したい。以下は、私が達成したいことのスクリーンショットです。モジュール(sidebarA内)からのフォーム入力で記事にあるmysqlクエリをajax経由で修正したいです。

ここに画像の説明を入力

以下は、jumi を介してモジュールから切り捨てられたフォーム コードです。

<form action="http://fsdsonline.com/menumanager/index.php/menustab/all-meals/77-component-menus/124-alcohol-n" method="post">
    <option value="AND plate = '1'">Plate FSDS only</option>
    <option value="AND plate = '1'">Prep FSDS only</option>
    <option value="">Plate and Prep FSDS</option>
    </select><br /><select style="font-size: 12px;" name="menu">
    <option value="">All Meals</option>
    <input style="font-size: 12px;" onclick="location=document.menuselector.menu.options[document.menuselector.menu.selectedIndex].value;" type="button" value="Show" /></form>
<div class="success" style="display: none;">View your menu</div>

そして、これがjumi経由の記事にあるphpコードです。

    mysql_connect($hostname,$username, $password) OR DIE ('Unable to 
connect to database! Please try again later.');
mysql_select_db($dbname);

$plateprep        = $_POST['plateprep'];
$meal = $_POST['meal'];
$pub        = $_POST['pub'];
$avocado = $_POST['avocado'];
$alcohol = $_POST['alcohol'];


$result = mysql_query("SELECT catnum, ctgry, Shrt_Desc, `desc`,  ROUND(`Energ_Kcal`*`yield`*`qty` ) AS `cal` FROM allinnot a
LEFT JOIN allinfsds b
ON a.`NDB_No2` = b.id1
LEFT JOIN fdcat h ON b.product_type = h.unik
LEFT JOIN allinnot2 g ON a.`NDB_No2` = g.NDB_No
LEFT JOIN allincomp j ON a.`NDB_No2` = j.fsds_num
WHERE `own_id` = $user->id $plateprep $pub $meal $avocado $alcohol
ORDER BY `catnum`, `order`");


$cat = null;
$first = true;
while ($row = mysql_fetch_array($result)) {
    if ($row['catnum'] != $cat) {
       if (!$first) {
           echo '</table>'; // close the table if we're NOT the first row being output.
       }

       $first = false; // no longer the first table, so disable this check.
        echo '<p style="line-height: 12pt; font-size: 12pt;"><strong>' . $row['ctgry'] . '</strong></p>';
       echo '<table>'; // start new table
       $cat = $row['catnum'];
    }
    echo "<tr><td>" . $row['Shrt_Desc'] . "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $row['desc'] . "&nbsp;&nbsp;" . $row['cal'] . " cal</td></tr>";
}
?>
</table>
</body>
</html>

クエリを正しくコーディングしたと思います。フォームは見栄えがしますが、この 2 つを ajax 経由で接続するにはどうすればよいですか?? ありがとう!!

4

2 に答える 2

1

私はジュミに詳しくないのではないかと心配しています。

通常、ajax リクエストを行うには、JavaScript ファイルが特定の php ファイルに対して ajax リクエストを行います。ajax を使用する場合は、何らかの方法でフォームでこれをトリガーする必要があります。php ファイルは、必要な情報を ajax リクエストを行ったファイルにエコーバックする必要があります。

この場合、ajax リクエストは、jumi が埋め込まれているページに移動する必要があると思いますが、よくわかりません。

ajax を使用する場合は、jquery を使用することをお勧めします。それは人生をずっと楽にします。これは、jquery を使用して作成された単純な ajax リクエストの例です。

$.ajax({  
            type: "POST",  
            url: "joomla_page.php",  
            data: { 'menu': menu },   
            success: function(){  
            informationfromphp= data.menu; //This is $menu echod from php
            $('#menuid').html('<span class="food_results">Success!</span>');
            } 
        })

PHPコードで、次のような方法でajaxメッセージをキャプチャします

if (isset($_GET['menu'])) { 
    //do something ;
} 

次に、php で何かを行います (DB を呼び出すなど)。その後、echo を使用して、php から ajax ファイルに情報を返すことができます。

echo $menu; 

これは実用的な例ではないことに注意してください。開始するための大まかなアイデアです。stackoverflow には他にもたくさんの例があります。

于 2012-04-17T05:15:57.437 に答える