functioncalling.phpというページを作成しました。このページには、SubmitとInsertという2つのボタンがあります。PHP初心者の私は、ボタンがクリックされたときにどの関数が実行されるかをテストしたいと思っています。同じページに出力されるようにしたいのです。そこで、2つの関数を作り、それぞれのボタンに対応させました。functioncalling.phpのソースコードは以下の通りです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<form action="functioncalling.php">
<input type="text" name="txt" />
<input type="submit" name="insert" value="insert" onclick="insert()" />
<input type="submit" name="select" value="select" onclick="select()" />
</form>
<?php
function select(){
echo "The select function is called.";
}
function insert(){
echo "The insert function is called.";
}
?>
ここでの問題は、どのボタンがクリックされても、何も出力されないことです。
具体的にどこが間違っているのでしょうか?
ボタンクリックはクライアントサイドであるのに対し、PHPはサーバーサイドで実行されますが、Ajaxを使うことで実現できます。
$('.button').click(function() {
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
あなたのPHPファイルの中で:。
<?php
function abc($name){
// Your code here
}
?>
ボタンをクリックするようなPHPの機能をHTMLから呼び出すことはできません。なぜなら、HTMLはクライアントサイドにあり、PHPはサーバーサイドで動作するからです。
Ajaxを使用するか、下記のコードのようにする必要があります。
<?php
if($_GET){
if(isset($_GET['insert'])){
insert();
}elseif(isset($_GET['select'])){
select();
}
}
function select()
{
echo "The select function is called.";
}
function insert()
{
echo "The insert function is called.";
}
?>.
フォームのデータを投稿し、クリックされたボタンをチェックする必要があります。
HTMLのonclick
属性は、PHPの関数ではなく、JavaScriptの関数を呼び出します。