2011-05-09 3 views
1

나는이 사이트가 성공하지 못하여 헤드 라인을 쓸 때 나에게주는 몇 가지 제안을 검색하고 점검했다. 여기 내 문제가 있습니다 : 내 페이지에서 나는 AJAX를 통해 모든 링크를로드하고 하나의 페이지는 mysql에서로드 된 데이터가있는 프로필 용입니다. 프로필 페이지 하단에 시간을 나타내는 숫자를 입력 할 수 있습니다. 이 작업을 수행 할 때 입력 된 번호로 데이터베이스를 업데이트하고 현재 페이지를 업데이트하려고합니다. AJAX를 사용하기 때문에 URL을 추가 할 수 없으므로 전체 페이지로 이동하거나 다시로드해야합니다. 시작 페이지에서 끝나기 때문입니다.html 양식을 통해 php 함수 호출

필자는 "add_time()"이라는 함수를 작성하여 데이터베이스를 계산하고 업데이트하기 위해 호출하고 싶습니다. 그런데 불행한 트릭을 사용하지 않고 양식을로드 할 수 없습니다.

나는 또한이 두 가지 작업을 동시에 수행하도록 내 AJAX load_page (url) 스크립트와 어떻게 조합 할 수 있는지 알고 싶습니다. divs aint set이지만 스위치가있는 프로필 페이지에 표시했습니다.

프로필 페이지 :

<?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는 친구입니다. 나는 UR 질문을 이해하지 못했습니다.

u는 모든 ur 요청을 처리하는 ajax.php 파일을 만들 수 있습니다. 예를 들어, 원하는 기능을 포함하고 $ up [_ function]]을 호출합니다.

ajax.php addtime 대한 결과 반향 것이다

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

().

JQuery와

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

유 그래서 난 유에게 정확한 코드를 말할 수있을 것 NUMBER 일 목록에 필요한 말해.

홉 돕는다. :)

+0

내 페이지를로드하기위한 아약스 코드가 있습니다. 그래서 여기에 목록이 있습니다 : 1. 양식에서 PHP 함수를 호출하거나, 같은 방식으로 작동합니다. 2. 시작하지 않고 페이지를 업데이트합니다. URL을 변경하지 않고도이 작업을 수행 할 수 있다면 매우 기쁩니다. 내가하고있는 작은 실험, 그걸하지 않고도 내가 할 수있는 일. –

+0

false를 반환합니다. 여기 핵심 선수 야. $ ('a'). ((ajax.php? function = addtime '); return false;}); – Zalaboza

1

나는 당신의 문제를 이해했기를 바랍니다. jquery를 사용하면 폼의 기본 동작을 방지 할 수 있습니다. 양식을 제출하고 다른 페이지로 이동하는 대신이를 방지하고 ajax를 통해 데이터를 제출할 수 있습니다. 내가 정확히 어떻게 순수한 자바 스크립트와 jquery와 함께 작동하는지 잘 모르겠다.

+0

$ ('form'). 제출 (함수 (e) {e.preventDefault(); // 뭔가를}}); – user489872

+0

AJAX를 통해 데이터를 제출 하시겠습니까? 무슨 말이에요? 나는 나의 연결로 이렇게한다, 그러나 그렇지 않으면 나는 매끄러운 방법으로 그것을하는 방법을 모른다. 그것을 평가하는 치료? :) –

+0

여기에 양식의 기본 동작을 방지하는 방법에 대한 자습서가 있습니다. http://blog.james-carr.org/2008/01/17/jquery-binding-submit-on-a-forms-action- 여기에 AJAX가있는 POST의 작동 방식이 설명되어 있습니다. http://api.jquery.com/jQuery.post/ – user489872