【问题标题】:Is there a way to call a php function with an button onclick ?(without putting the function in is own file(teacher request))有没有办法用 onclick 按钮调用 php 函数?(不把函数放在自己的文件中(教师请求))
【发布时间】:2020-10-04 07:00:34
【问题描述】:

我正在做一个学校项目,它基本上是一个 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>";
?>

【问题讨论】:

    标签: php html function button onclick


    【解决方案1】:

    Javascript不能直接运行PHP函数,可以通过这两种方法调用PHP文件或者PHP的sn-p:

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

    AJAX 方法:

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

    Read about AJAX requests here

    这里是表单方法:

    <?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 查询中绝不是一个好主意,您应该使用准备好的语句,您可以在此处学习如何执行这些操作:Prepared Statements

    【讨论】:

    • 我这样做了,每当我刷新页面时,函数中的代码就会运行(它应该是提交表单的方式)
    • 您必须记住,只要您运行页面,该函数就会运行,除非您添加 if 语句检查请求是否包含 POST 数据。如果 POST 数据存在,就知道表单提交了,这是关键部分
    • 对不起,我不确定你的意思,你的意思是将输入变量传递给类中的函数吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多