Вызов php-функции через html-форму

#php #html #ajax #forms #function

#php #HTML #ajax #формы #функция

Вопрос:

Я произвел поиск и проверил несколько предложений, которые этот сайт дал мне при написании заголовка, но безуспешно. Вот моя проблема: на моей странице я загружаю все ссылки через AJAX, и одна из страниц предназначена для профилей с данными, загруженными из mysql. В нижней части страницы профиля вы можете ввести число, обозначающее время. При выполнении этого я хочу, чтобы страница обновила базу данных введенным номером и обновила текущую страницу. Поскольку я использую AJAX, я просто не могу добавить URL, на который я хочу перейти, или перезагрузить всю страницу целиком, потому что тогда я оказываюсь на начальной странице.

Я создал функцию с именем «add_time ()», которую я хочу вызвать для вычисления и обновления базы данных, которую я не могу загрузить через свою форму без некоторых трюков, которых я, к сожалению, не знаю.

Я также хочу знать, как я могу объединить это с моим AJAX load_page (url)-скриптом, чтобы он выполнял эти два действия одновременно. Параметры divs не установлены, но я отметил на странице профиля, где будет происходить переключение.

Страница профиля:

 <?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 файл, который обрабатывает все ваши запросы, включает в себя нужные вам функции и вызывает u, например, загрузив $_GET[‘function’].

ajax.php

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

это вернет результаты для addtime().

jquery

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

скажите мне, что вам нужно в списке номеров, чтобы я мог указать вам точный код.

надеюсь, это поможет. 🙂

Комментарии:

1. У меня есть ajax-код для загрузки моей страницы. Итак, вот список: 1. Вызовите php-функцию из формы или что-то, что работает таким же образом. 2. Обновление страницы без возврата к началу. И я был бы очень рад, если бы я мог сделать это без изменения URL. Я провожу небольшой эксперимент, выясняя, как много я могу сделать, не прибегая к этому.

2. возвращает false; здесь ключевой игрок. $(‘a’).click(function(){$(«#PLACEHOLDER_DIV»).load(‘ajax.php?function=addtime’);возвращает false;});

Ответ №2:

надеюсь, я понял вашу проблему. если вы используете jquery, вы можете предотвратить поведение вашей формы по умолчанию. вместо отправки вашей формы и перехода на другую страницу, вы можете предотвратить это и отправить данные через ajax. я не знаю точно, как это работает с чистым javascript, но с jquery это довольно просто.

Комментарии:

1. $(‘form’).submit(функция(e){ e.preventDefault(); //сделай что-нибудь });

2. Отправлять данные через AJAX? Что вы имеете в виду? Я делаю это со своими ссылками, но в остальном я не знаю, как сделать это плавным способом. Хотите оценить это? 🙂

3. вот руководство о том, как предотвратить поведение формы по умолчанию: blog.james-carr.org/2008/01/17 / … и здесь объясняется, как работает POST с AJAX : api.jquery.com/jQuery.post