私はPHPの初心者で、この言語の基本を学び始めたばかりです。
送信と挿入の2つのボタンを含むfunctioncalling.phpというページを作成しました。 PHPの初心者として、ボタンがクリックされたときに実行される関数をテストしたいです。出力を同じページにしたい。そのため、ボタンごとに1つずつ、2つの関数を作成しました。 functioncalling.phpのソースコードは次のとおりです。
<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.";
}
?>
ここでの問題は、ボタンをクリックした後に何も出力されないことです。
誰が私がどこで間違っているのか正確にどこに教えてもらえますか?早い時期に返信をいただければ幸いです。前もって感謝します。
ボタンクリックはclient side
に対してPHPはserver side
ですが、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
}
?>
はい、ここにajaxが必要です。詳細については、以下のコードを参照してください。
このようにマークアップを変更してください
<input type="submit" class="button" name="insert" value="insert" />
<input type="submit" class="button" name="select" value="select" />
jQuery: -
$(document).ready(function(){
$('.button').click(function(){
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response) {
// Response div goes here.
alert("action performed successfully");
});
});
});
ajax.phpの場合
<?php
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'insert':
insert();
break;
case 'select':
select();
break;
}
}
function select() {
echo "The select function is called.";
exit;
}
function insert() {
echo "The insert function is called.";
exit;
}
?>
ボタンは同じページを呼び出すようにし、PHPセクションでボタンが押されたかどうかを確認する必要があります。
HTML:
<form action="theSamePage.php" method="post">
<input type="submit" name="someAction" value="GO" />
</form>
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
{
func();
}
function func()
{
// do stuff
}
?>
hTMLからボタンをクリックするようなphp関数を呼び出すことはできません。 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.";
}
?>.
あなたはあなたのフォームデータを投稿し、そしてクリックされた適切なボタンをチェックする必要があります。
入力に$ messageを表示するには
<?php
if(isset($_POST['insert'])){
$message= "The insert function is called.";
}
if(isset($_POST['select'])){
$message="The select function is called.";
}
?>
<form method="post">
<input type="text" name="txt" value="<?php if(isset($message)){ echo $message;}?>" >
<input type="submit" name="insert" value="insert">
<input type="submit" name="select" value="select" >
</form>
Functioncalling.phpを外部ファイルとして使用するには、html文書に何らかの形で含める必要があります。
これを試して:
if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
insert();
}
あなたはjavascriptまたはjquery ajaxでこのように書いてファイルを呼び出すことができます
$('#btn').click(function(){
$.ajax({
url:'test.php?call=true',
type:'GET',
success:function(data){
body.append(data);
}
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<form method='get' >
<input type="button" id="btn" value="click">
</form>
<?php
if(isset($_GET['call'])){
function anyfunction(){
echo "added";
// your funtion code
}
}
?>
フォームアクションがそれ自身を呼び出すところで再帰呼び出しを使用してください。それからそれをキャッチするために同じフォームにPHPコードを追加してください。 foo.php
では、フォームはpost
に対してfoo.php
を呼び出します。
<html>
<body>
<form action="foo.php" method="post">
フォームが送信されると、フォームはそれ自身を呼び出し(foo.php
)、下のコードに示すようにPHP事前定義変数$_SERVER
を介してキャッチできます。
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "caught post";
}
?>
</form>
</body>
</html>
私はこれで立ち往生していたと私は隠しフィールドでそれを解決しました
<form method="post" action="test.php">
<input type="hidden" name="ID" value"">
</form>
値であなたが追加したいものは何でも追加することができます
test.phpでは、$ _ Post [ID]を通して値を取得できます。
HTMLのonclick
属性は、PHP関数ではなく、JavaScript関数を呼び出します。
これはあなたが使うことができる例です:
<html>
<body>
<form action="btnclick.php" method="get">
<input type="submit" name="on" value="on">
<input type="submit" name="off" value="off">
</form>
</body>
</html>
<?php
if(isset($_GET['on'])) {
onFunc();
}
if(isset($_GET['off'])) {
offFunc();
}
function onFunc(){
echo "Button on Clicked";
}
function offFunc(){
echo "Button off clicked";
}
?>