【问题标题】:Call php function through html form通过html表单调用php函数
【发布时间】:2011-05-10 05:11:16
【问题描述】:

我进行了搜索并检查了该网站在编写标题时给我的一些建议,但没有成功。这是我的问题: 在我的页面上,我通过 AJAX 加载所有链接,其中一个页面是用于从 mysql 加载数据的配置文件。在个人资料页面的底部,您可以输入一个代表时间的数字。执行此操作时,我希望页面使用输入的数字更新数据库并更新当前页面。因为我使用 AJAX,所以我无法添加一个我希望它转到或重新加载整个页面的 url,因为那样我最终会进入起始页。

我创建了一个名为“add_time()”的函数,我想调用它来计算和更新数据库,如果没有一些我不幸不知道的技巧,我无法通过我的表单加载。

我还想知道如何将它与我的 AJAX load_page(url)-script 结合起来,以便同时执行这两个操作。 div 没有设置,但我已经在配置文件页面中标记了切换的位置。

个人资料页面:

<?php
$user = $_COOKIE["user"];
$host = "//";
$username = "//";
$password = "//";
$db_name = "//";
$tbl_name = "user_stats";
mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name") or die("cannot select DB");
$sql = "SELECT * FROM $tbl_name WHERE username='$user'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if ($count == 1) {
    while ($row = mysql_fetch_array($result)) {
        $user = $row[username];
        $level = $row[level];
        $hours = $row[hours];
    }
}
echo "<h1>$user</h1>";
?>

<table id="profile_form">
    <tr>
        <td id="profile_username">Användare: <?php echo $user; ?></td><td id="profile_level"><?php echo "Level: " . $level . "<br />Hours: " . $hours; ?></td>
    </tr>
    <tr>
        <td id="profile_picture">
            Profil picture.
        </td>
    </tr>
    <tr>
        <td id="profile_title">
            Title:
        </td>
    </tr>
</table>
<!-- Div-break. Guess we just call the upper part "profile" and the lower part "add_time" for now.-->
<form action="" method="post">
    Lägg till tid: <input type="text" name="new_time" />
    <input type="hidden" name="prev_time" value="<?php echo $time; ?>" />
    <input type="submit" value="Lägg till tid" />
</form>

从外部文件调用的函数:

function add_time() {
    $new_time = $_POST["new_time"] + $_POST["prev_time"];
    $user = $_COOKIE["user"];
    $host = "//";
    $username = "//";
    $password = "//";
    $db_name = "//";
    $tbl_name = "user_stats";
    $con = mysql_connect("$host", "$username", "$password") or die("cannot connect");
    mysql_select_db("$db_name") or die("cannot select DB");
    $sql = mysql_query("UPDATE user_stats SET hours = '$new_time'
WHERE username = '$user'");
    mysql_close($con);
    echo $new_time . "<br />";
}

我希望我发送代码会有所帮助。现在有点乱,对不起。我想我已经挖了这么多,我可能会迷惑自己并在圈子里跑来跑去,所以我可以重新考虑一下没有深入这个兔子洞的想法。

【问题讨论】:

    标签: php html ajax forms function


    【解决方案1】:

    Jquery 是你的朋友。我不确定我是否理解你的问题,但是。

    你可以创建一个 ajax.php 文件来处理你的所有请求,包括你想要的函数,例如调用你上传 $_GET['function']。

    ajax.php

    <?
    if(isset($_GET['function'])){
    require_once('update.php');
    addtime();
    }
    ?>
    

    这将回显 addtime() 的结果。

    jquery

    $("#PLACEHOLDER_DIV").load('ajax.php?function=addtime');
    

    在编号列表中告诉我你需要什么,这样我就可以告诉你确切的代码。

    跳它有帮助。 :)

    【讨论】:

    • 我有用于加载我的页面的 ajax 代码。所以这里是列表: 1. 从表单调用一个 php 函数,或者以相同方式工作的东西。 2. 更新页面而不返回开始。如果我能在不更改 url 的情况下做到这一点,我会非常高兴。我正在做一个小实验,我可以做多少事情而不必这样做。
    • 返回假;是这里的关键人物。 $('a').click(function(){$("#PLACEHOLDER_DIV").load('ajax.php?function=addtime');return false;});
    【解决方案2】:

    我希望我确实了解您的问题。如果您使用 jquery,您可以防止表单的默认行为。而不是提交表单并转到另一个页面,您可以防止这种情况并通过 ajax 提交数据。我不知道它是如何与纯 javascript 一起工作的,但使用 jquery 非常简单。

    【讨论】:

    • $('form').submit(function(e){ e.preventDefault(); //做点什么 });
    • 通过AJAX提交数据?你是什​​么意思?我用我的链接这样做,但除此之外我不知道如何顺利​​地做到这一点。关心评估吗? :)
    • 这里有一个关于如何防止表单默认行为的教程:blog.james-carr.org/2008/01/17/…,这里解释了 POST 与 AJAX 的工作原理:api.jquery.com/jQuery.post
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2012-01-11
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多