버튼을 클릭해서 PHP 함수를 호출하는 방법
라고 하는 페이지를 작성했습니다.functioncalling.php
[ Submit ]버튼과 [Insert]버튼이 있습니다.
버튼을 클릭했을 때 어떤 기능이 실행되는지 테스트하고 싶습니다.출력을 같은 페이지에 표시해 주세요.그래서 버튼마다 하나씩 두 개의 기능을 만들었습니다.
<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.";
}
?>
문제는 버튼을 클릭해도 출력이 표시되지 않는다는 것입니다.
정확히 어디가 잘못됐지?
네, 에이잭스가 필요해요상세한 것에 대하여는, 이하의 코드를 참조해 주세요.
이렇게 마크업 변경
<input type="submit" class="button" name="insert" value="insert" />
<input type="submit" class="button" name="select" value="select" />
j쿼리:
$(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");
});
});
});
in 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는 서버 측이지만 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:
<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>
함수 호출을 사용합니다.외부 파일로서 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
}
}
?>
그onclick
HTML의 속성은 JavaScript 함수를 호출하며 PHP 함수는 호출하지 않습니다.
난 이 일에 갇혀서 숨겨진 분야로 해결했어
<form method="post" action="test.php">
<input type="hidden" name="ID" value"">
</form>
인value
추가하고 싶은 것을 추가할 수 있습니다.
테스트 중.php 값을 검색할 수 있습니다.$_Post[ID]
.
폼 액션이 자신을 호출하는 재귀 호출을 사용합니다.그런 다음 동일한 형식으로 PHP 코드를 추가하여 캡처합니다.인foo.php
당신의 양식이 전화할 것이다.foo.php
에post
<html>
<body>
<form action="foo.php" method="post">
폼이 송신되면, 그 폼은 그 자체를 호출합니다(foo.php
PHP 사전 정의된 변수를 통해 캡처할 수 있습니다.$_SERVER
아래 코드와 같이
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "caught post";
}
?>
</form>
</body>
</html>
다음으로 사용할 수 있는 예를 제시하겠습니다.
<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";
}
?>
HTML 버튼을 사용하여 PHP 함수를 호출합니다.HTML 단추를 포함하는 HTML 양식 문서를 작성합니다.버튼을 클릭하면 POST 메서드가 호출됩니다.POST 메서드는 서버에 데이터를 보내는 방법을 설명합니다.버튼을 클릭하면array_key_exists()
호출된 함수입니다.
<?php
if(array_key_exists('button1', $_POST)) {
button1();
}
else if(array_key_exists('button2', $_POST)) {
button2();
}
function button1() {
echo "This is Button1 that is selected";
}
function button2() {
echo "This is Button2 that is selected";
}
?>
<form method="post">
<input type="submit" name="button1" class="button" value="Button1" />
<input type="submit" name="button2" class="button" value="Button2" />
</form>
출처 : geeksforgeeks.org
당신은 이것을 간단히 할 수 있습니다.php에서는 다음 명령어를 사용하여 버튼클릭을 결정할 수 있습니다.
if(isset($_Post['button_tag_name']){
echo "Button Clicked";
}
따라서 코드를 다음과 같이 수정해야 합니다.
<?php
if(isset($_Post['select']){
echo "select button clicked and select method should be executed";
}
if(isset($_Post['insert']){
echo "insert button clicked and insert method should be executed";
}
?>
<!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>
<script>
//This will be processed on the client side
function insert(){
window.alert("You click insert button");
}
function select(){
window.alert("You click insert button");
}
</script>
</body>
</html>
언급URL : https://stackoverflow.com/questions/20738329/how-to-call-a-php-function-on-the-click-of-a-button
'source' 카테고리의 다른 글
SimpleXML 개체를 배열로 변환하는 방법 (0) | 2023.01.22 |
---|---|
Python: '사전'이 비어 있는지 확인하는 것이 작동하지 않는 것 같습니다. (0) | 2023.01.22 |
포괄적인 초보자용 virtualenv 튜토리얼? (0) | 2023.01.22 |
Spring Boot 응용 프로그램을 프로그래밍 방식으로 셧다운합니다. (0) | 2023.01.22 |
ImportError: MySQLdb라는 이름의 모듈이 없습니다. (0) | 2023.01.15 |