Вставка в MySQL из PHP (jQuery / AJAX) - PullRequest
9 голосов
/ 28 февраля 2011

Я видел много учебных пособий, но они настолько запутанные, и чтобы делать то, что я хочу, я просто не понимаю, как использовать существующие материалы из этих учебных пособий и заставить их работать так, как я хочу.

У меня очень простая форма, содержащая текстовое поле, метку и кнопку отправки. Когда пользователь вводит что-то в форму, затем нажимает кнопку «Отправить», я хотел бы использовать php и ajax (с jquery), чтобы вставить результат формы в базу данных mysql.

Может кто-нибудь показать мне, как этого можно достичь? Просто кое-что очень основное - все, что я хочу, чтобы начать меня. Любая помощь приветствуется.

Спасибо

Ответы [ 2 ]

20 голосов
/ 28 февраля 2011

Привет, вот лишь краткий пример того, как можно это сделать:

HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Quick JQuery Ajax Request</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <!-- include the jquery lib -->
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
            var ajaxSubmit = function(formEl) {
                // fetch where we want to submit the form to
                var url = $(formEl).attr('action');

                // fetch the data for the form
                var data = $(formEl).serializeArray();

                // setup the ajax request
                $.ajax({
                    url: url,
                    data: data,
                    dataType: 'json',
                    success: function() {
                        if(rsp.success) {
                            alert('form has been posted successfully');
                        }
                    }
                });

                // return false so the form does not actually
                // submit to the page
                return false;
            }
        </script>

    </head>
    <body>

        <form method="post" action="process.php"
              onSubmit="return ajaxSubmit(this);">
            Value: <input type="text" name="my_value" />
            <input type="submit" name="form_submit" value="Go" />
        </form>

    </body>
</html>

Сценарий process.php:

<?php

function post($key) {
    if (isset($_POST[$key]))
        return $_POST[$key];
    return false;
}

// setup the database connect
$cxn = mysql_connect('localhost', 'username_goes_here', 'password_goes_here');
if (!$cxn)
    exit;
mysql_select_db('your_database_name', $cxn);

// check if we can get hold of the form field
if (!post('my_value'))
    exit;

// let make sure we escape the data
$val = mysql_real_escape_string(post('my_value'), $cxn);

// lets setup our insert query
$sql = sprintf("INSERT INTO %s (column_name_goes_here) VALUES '%s';",
                'table_name_goes_here',
                $val
);

// lets run our query
$result = mysql_query($sql, $cxn);

// setup our response "object"
$resp = new stdClass();
$resp->success = false;
if($result) {
    $resp->success = true;
}

print json_encode($resp);
?>

Обратите внимание, что ничего из этого не было проверено.Надеюсь, это тебе поможет.

4 голосов
/ 28 февраля 2011

Часть jQuery часто довольно проста. Он просто перенаправляет обычную форму action = через обработчик Javascript. $.post прост в использовании, и вам просто нужно .serialize(), чтобы упаковать существующие значения формы в строку:

<form id="example">
<input name="textbox" ...>
<input type=submit name="submitbuttonname" value="submit"
   onClick="$.post('save.php', $('form#example').serialize())">

А на стороне PHP вы просто получаете контент через $_POST и сохраняете его в базе данных (использование старых функций mysql_ также возможно, просто более громоздко):

$db = new PDO("mysql:...");

if ($_POST["submitbuttonname"]) {

   $q = $db->prepare("INSERT INTO save (textbox, label) VALUES (?, ?)";
   $q->execute(array($_POST["textbox"], $_POST["label"]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...