2011-05-09 61 views
1

我做了一个搜索,并检查了这个网站在写没有成功的时候给我的一些建议。这里是我的问题: 在我的页面上,我通过AJAX加载所有链接,其中一个页面用于从mysql加载数据的配置文件。在个人资料页面的底部,您可以输入代表时间的数字。当我这样做时,我希望页面用输入的数字更新数据库并更新当前页面。由于我使用AJAX,因此我无法添加一个我希望它进入或重新加载整个页面的url,因为这样我就会在开始页面结束。通过html格式调用php函数

我已经做了一个名为“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 />"; 
} 

我希望它能帮助我发送验证码。现在很乱,我很抱歉。我想我已经挖了这么多,我可能会让自己感到困惑,并且在圈子里跑来跑去,所以我可以再次深入这个兔子洞。

回答

1

Jquery是你的朋友。即时通讯不知道我明白你的问题,但。

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

ajax.php

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

,将回显添加时间结果()。

jQuery的

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

告诉我什么ü需要数列列表,这样我就可以告诉ü确切的代码。

跳它有帮助。 :)

+0

我有用于加载我的页面的ajax代码。所以这里是列表: 1.从窗体调用一个php函数,或者以相同的方式工作。 2.更新页面而不重新开始。 如果我可以在不改变网址的情况下做到这一点,我将非常高兴。我正在做一个小实验,我可以做多少事情而不必这样做。 – 2011-05-09 21:12:09

+0

返回false;这里是关键球员。 $('a')。click(function(){$(“#PLACEHOLDER_DIV”)。load('ajax.php?function = addtime'); return false;}); – Zalaboza 2011-05-13 11:34:44

1

我希望我明白你的问题。如果你使用jQuery,你可以防止你的表单的默认行为。不要提交表单并转到其他页面,您可以通过ajax阻止并提交数据。我不知道它是如何与纯JavaScript工作,但与jQuery的它非常简单。

+0

$('form')。submit(function(e){e。的preventDefault(); //做一点事 }); – user489872 2011-05-09 21:15:09

+0

通过AJAX提交数据?你是什​​么意思?我这样做与我的链接,但否则我不知道如何顺利​​地做到这一点。谨慎评估? :) – 2011-05-10 15:02:25

+0

这里是关于如何防止窗体的默认行为的教程:http://blog.james-carr.org/2008/01/17/jquery-binding-submit-on-a-forms-action-属性/和这里解释如何POST与AJAX工作:http://api.jquery.com/jQuery.post/ – user489872 2011-05-10 17:04:53