2013-07-26 24 views
5

私のファイル名は、2つのボタンを提出していcontacts.phpであり、私は挿入ボタンが押されている場合は、挿入関数が呼び出されることを望んで選択押されて選択した場合はcalled.iは、次のコード記述されています:送信ボタンからphp関数を呼び出す方法は?

//contacts.php 
<?php 
if(isset($_REQUEST['select'])) 
{ 
    select(); 
} 
else 
{ 
    insert(); 
} 
?> 

<html> 
<body> 
<form action="contacts.php"> 
<input type="text" name="txt"/> 
<input type="submit" name="insert" value="insert" /> 
<input type="submit" name="select" value="select"/> 
</form> 

<?php 
function select() 
{ 
    //do something 
} 
function insert() 
{ 
    //do something 
} 
?> 

それあなたのコードは、ページが最初に表示されたときにどうなるの何ボタンがクリックされていない場合でもinsert()を、呼び出している

+2

手段を動作していませんか? –

答えて

11
<?php 
if (isset($_REQUEST['insert'])) { 
    insert(); 
} elseif (isset($_REQUEST['select'])) { 
    select(); 
} 

手助けしなさい機能していません。

1

あなたが結果を返す関数内returnを使用している場合は、関数を呼び出している間、結果を印刷するには、エコーを使用する必要があります。

if(isset($_REQUEST['select'])) 
{ 
    echo select(); 
} 
elseif(isset($_REQUEST['insert'])) 
{ 
    echo insert(); 
} 
+1

それはかなり重要です。 – Barmar

+0

@Barmar最初に 'if'で') 'を、elseifで'() 'を忘れてしまいました。 :) –

+0

@Barmarがhttp://stackoverflow.com/questions/17873067/unable-to-make-mysql-connection-on-data-post –

1

使用後の方法は、いくつかの人々(以前のコメントを要約)で説明したように、次の2つのオプションがあり

//contacts.php 
<?php 
if(isset($_POST['select'])) 
{ 
    select(); 
} 
else 
{ 
    insert(); 
} 
?> 

<html> 
<body> 
<form action="contacts.php" method="post"> 
<input type="text" name="txt"/> 
<input type="submit" name="insert" value="insert" /> 
<input type="submit" name="select" value="select"/> 
</form> 

<?php 
function select() 
{ 
    //do something 
} 
function insert() 
{ 
    //do something 
} 
?> 
+0

「ポスト」は以下より安全ではありません同じユーザから別の同じ質問を参照してください「取得' –

+0

それがそうであっても、スクリプトが正しく実行されるかどうかに影響しません。 – Barmar

+1

@ダゴン、それはなぜでしょうか? – liyakat

0
<?php 
$insert = $_POST['insert']; 
$select = $_POST['select']; 

if ($insert) { 
insert(); 
} 

if ($select) { 
select(); 
} 

else { 
echo 'press any button...'; 
} 
?> 

<html> 
<body> 
<form action="contacts.php" method="post"> 
<input type="text" name="txt"/> 
<input type="submit" name="insert" value="insert" /> 
<input type="submit" name="select" value="select"/> 
</form> 

<?php 
function select() { 
echo 'you pressed the [select] button'; 
exit; 
} 

function insert() { 
echo 'you pressed the [insert] button'; 
exit; 
} 
?> 
+0

関数名として予約語を使用していることは既に指摘されています。関数の名前をbutton_insert()、button_select()または何でも –

+0

に変更するだけです。 PHPはmysqlではありません –

1

安全であるため。

最初は)あなたが内部の選択()と(挿入しない何に基づいてページをPOSTを介してデータを送信したり、直接サーバと予備(リフレッシュ)を取得することです。

これはPOSTのVのGETの議論のための適切な場所ではありませんが、慣例では、サーバーにデータを送信するときにPOSTを使用することです。情報がブラウザに保存されていないため、POSTは少し安全です。ここ2について詳しく読む:http://www.w3schools.com/tags/ref_httpmethods.asp

2番目のオプションは、Webページを更新せずに、あなたのタスクを達成するためにAJAXを使用することです。要するに、AJAXはあなたのページに置くJavascriptメソッドを使用してサーバーと通信します。したがって、サーバー上のPHPが実際にページ上の何かを変更する必要はありません(リフレッシュが必要になります)。 AJAXのコード例では、ここで見つけることができます:http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

+0

彼はGETを使用しています、これはデフォルトです。 '$ _REQUEST'は' $ _GET'と '$ _POST'の内容を組み合わせているので、どのメソッドを使うのかは関係ありません。これはどのように「答え」ですか? – Barmar