2013-07-26 49 views
5

filename của tôi là contacts.php rằng có hai nộp nút; i muốn rằng nếu nút chèn được nhấn chức năng chèn được gọi và nếu chọn được nhấn chọn là called.i đã viết đoạn mã sau:cách gọi hàm php từ nút gửi?

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

nhưng nó không hoạt động Xin vui lòng giúp

+2

Phương tiện không hoạt động? –

Trả lời

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

mã của bạn đang kêu gọi insert() ngay cả khi không có nút được nhấp, mà sẽ xảy ra khi trang được hiển thị đầu tiên.

1

Nếu bạn đang sử dụng chức năng bên trong return để trả lại kết quả, bạn phải sử dụng tiếng vọng để in kết quả trong khi gọi hàm.

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

Đó là một _if_ khá đáng kể. – Barmar

+0

@Barmar Bạn quên ')' trong 'if' và'() 'đầu tiên trong elseif. :) –

+0

@Barmar Xem một câu hỏi tương tự từ cùng một người dùng http://stackoverflow.com/questions/17873067/unable-to-make-mysql-connection-on-data-post –

1

sử dụng phương pháp bài vì nó là an toàn

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

'post' không an toàn hơn 'get ' –

+0

Và ngay cả khi có, nó sẽ không ảnh hưởng đến việc liệu kịch bản có chạy đúng hay không. – Barmar

+1

@Dagon, tại sao nó sẽ là? – 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

Khá đúng nó đã được chỉ ra, rằng bạn đang sử dụng từ dành riêng như một tên hàm. Đơn giản chỉ cần đổi tên các chức năng của bạn thành một cái gì đó như button_insert(), button_select() hoặc bất cứ điều gì –

+0

no no and no. php không phải là mysql –

1

Như đã được mô tả bởi một số người (tóm tắt ý kiến ​​trước đó), bạn có hai lựa chọn.

Đầu tiên là gửi dữ liệu qua POST hoặc GET trực tiếp đến máy chủ và đặt trước (làm mới) trang dựa trên bất kỳ điều gì bạn làm bên trong select() và insert().

Mặc dù đây không phải là nơi phù hợp cho một cuộc thảo luận POST v GET, quy ước là sử dụng POST khi gửi dữ liệu đến máy chủ. POST an toàn hơn một chút vì thông tin không được lưu trữ trong trình duyệt. Đọc thêm về hai điều này tại đây: http://www.w3schools.com/tags/ref_httpmethods.asp

Tùy chọn thứ hai là sử dụng AJAX để hoàn thành tác vụ của bạn mà không cần làm mới trang web. Trong ngắn hạn, AJAX sử dụng các phương thức Javascript mà bạn đặt trên trang của bạn để giao tiếp với máy chủ của bạn, do đó tránh sự cần thiết cho PHP trên máy chủ để thực sự thay đổi bất cứ điều gì trên trang (mà sẽ yêu cầu làm mới). Bạn có thể tìm thấy ví dụ về mã AJAX tại đây: http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

+0

Anh ấy đang sử dụng GET, vì đó là mặc định. Và '$ _REQUEST' kết hợp nội dung của' $ _GET' và '$ _POST', vì vậy không quan trọng phương pháp nào anh ta sử dụng. Làm thế nào là một "câu trả lời" này? – Barmar