有没有一种方法可以使用按钮onclick调用php函数?(无需将函数放入自己的文件(教师请求))

有没有一种方法可以使用按钮onclick调用php函数?(无需将函数放入自己的文件(教师请求)),php,html,function,button,onclick,Php,Html,Function,Button,Onclick,我正在做一个学校项目,基本上是一个php网站,在我的数据库中创建一个产品。 我遇到的唯一问题是找到一种通过按钮“onclick”执行php函数的方法。 注意:葡萄牙语变量名(老师的其他要求)很抱歉 代码如下: <?php function criarProduto($descricao,$preco){ $connection = mysqli_connect("localhost", "root", "", "lojadb","3308"); if(!$connecti

我正在做一个学校项目,基本上是一个php网站,在我的数据库中创建一个产品。 我遇到的唯一问题是找到一种通过按钮“onclick”执行php函数的方法。 注意:葡萄牙语变量名(老师的其他要求)很抱歉 代码如下:

<?php
function criarProduto($descricao,$preco){
    $connection = mysqli_connect("localhost", "root", "", "lojadb","3308");

    if(!$connection){
        die("ERROR: Could not connect. " . mysqli_connect_error());
        echo "<center><h1>Erro na conexão à base de dados</h1><center>";
    }

    $sql = "INSERT INTO produtos(descricao, preco) VALUES ('" . $descricao . "', " . $preco . ")";

    $results = mysqli_query($connection, $sql);

    if (mysqli_num_rows($results) > 0) {
        $row = mysqli_fetch_array($results);  
        $produto = new Produto($row);
    }
    else {
        echo "<center><h1>Erro na agregação de dados na base de dados</h1></center>";
    }

    mysqli_close($connection);
}
//meter a verificação de texto(se tem alguma coisa escrita)
echo "<center><h1>Criar produto</h1></center>";
echo "Descrição: <input type='text' name='descricao'>";
echo "<br>Preço: <input type='text' name='preco'>";
echo "<input type='button' value='Gravar'></input></center>";
?>

Javascript不能直接运行PHP函数,您可以使用以下两种方法调用PHP文件或PHP片段:

您有两种选择,或者您可以创建一个onclick函数来调用一个AJAX请求,该请求将运行一个PHP文件,或者您可以创建一个表单并完全跳过onclick。以下是这两个项目的演示:

AJAX方法:

$("button").click(function(){
  $.ajax({url: "myFunction.php", success: function(result){
    alert("Success")
  }});
});

以下是表单方法:

<?php 

if(isset($_POST['submit'])) {
   // Do some code here, as the button was clicked
   // in this case we will run criarProduto()
   criarProduto();       
}

?>

<form action="" method="post">
    <input type="Submit" name="submit"></input>
</form>

请注意,检测是否收到POST请求很重要,因为这是区分发送的表单和加载页面的普通用户的方式。还请注意,action=”“为空,因为我们希望运行它们当前所在的页面,如果您希望PHP来自另一个文件,您可以在那里输入url路径

如果选择PHP方法,页面将重新加载;如果选择AJAX方法,将在后台发出请求,页面不会重新加载,这两种方法都可以


还有一点需要提醒的是,您的代码对SQL注入是开放的,直接将变量输入到SQL查询中从来都不是一个好主意,您应该使用准备好的语句,您可以在这里学习如何执行这些操作:

我这样做了,每当我刷新页面时,函数中的代码都会运行(应该是提交表单的方式)必须记住,除非添加if语句检查请求是否包含POST数据,否则无论何时运行页面,函数都将运行。如果POST数据存在,您知道表单已提交,这是关键部分对不起,我不确定您的意思,您的意思是将输入变量传递到类中的函数中吗?