Кнопка Onclick вызывает Javascript, который вызывает файл PHP, который добавляет в базу данных Mysql - PullRequest
3 голосов
/ 25 февраля 2012

Мне нужна помощь с добавлением в базу данных. Я хочу вызвать JavaScript из метода нажатия кнопки. Javascript Script, я хочу вызвать php-файл, который содержит некоторый код, который добавляет в базу данных MySQL.

Я буквально перепробовал более 20+ веб-сайтов и не помог с этим материалом.

Если AJAX будет лучше, не могли бы вы мне помочь?

Код кнопки:

<input type="button" value="favorites1" onClick="favfunct();"> 

Код Javascript

function favfunct() {
    var target = document.createElement( "script" );
    target.setAttribute( "src", "php/addtofavorites.php" );
    document.getElementsByTagName( "body" )[0].appendChild( target );`
}

Код Php

<?php
    echo "test successful"
    $con = mysql_connect("localhost","root","student");
    if ($_POST["get"] == 'runfunction')
        echo "Works";
    }
    if ($_POST["action"] == 'favorites1'){ 
        echo "Testing Was Successful"
        if (!$con)
        {
            die('Could not connect: ' . mysql_error());
        }                   
        mysql_select_db("tvid", $con);
        $sql="INSERT INTO Persons (userid, davorites) VALUES 
            ('1','$_POST[video0]')";
        if (!mysql_query($sql,$con))
        {
            die('Error: ' . mysql_error());
        }
        echo "Your Video was Added To Your Favorites";
        mysql_close($con)
    }
?>

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

Итак, это «работает» так же, как вбивание винта. Он будет там, но не совсем так, как вы хотите.

Не используйте тег script для запуска страницы php . Ваша страница сработает, но это неправильный инструмент для выполнения работы. Вы хотите использовать AJAX. AJAX был специально создан для этой цели, в то время как тег скрипта предназначался для запуска скриптов на странице. Он попытается получить содержимое addtofavorites.php, но будет ожидать JavaScript в качестве возврата. И вы не сможете использовать $_POST, поскольку у вас нет возможности отправить данные в запрос.

Вместо этого используйте AJAX. Если вы уже используете библиотеку JavaScript, то у нее будет хорошая оболочка AJAX для вас (я не знаю ни одной библиотеки, которая бы не была в моей голове). Вы можете проверить документацию API для данной библиотеки для документации по использованию функциональности AJAX ( jQuery , Prototype.js , Mootools и т. Д.) .

В качестве примера я буду использовать jQuery, потому что он один из самых популярных. Вот запрос с использованием jQuery на вашу страницу (и то, что выглядит ожидаемыми переменными)

// Call an AJAX function to the proper page
$.ajax("php/addtofavorites.php", {
        // Pass our data to the server
        data: { "get" : "runfunction", "action" : "favorites1" },
        // Pass using the appropriate method
        method: "POST",
        // When the request is completed and successful, run this code.
        success: function (response) {
                // Successfully added to favorites. JS code goes here for this condition.
            }
    });

Также, как примечание, каждая строка в PHP нуждается в точке с запятой ; в конце. Многие из вас этого не делают. И в 3-й строке отсутствует открывающая скобка {, хотя я не уверен, является ли это просто артефактом вашей копии или нет.

Добавление

Я бы рекомендовал использовать jQuery для прослушивания событий. API events для jQuery позволит вам прослушивать события на объектах. Итак, как-то так:

<input id="button_1" type="button" value="favorites1" />

и JQuery

$(document).ready(function () { // Make sure the elements are loaded on the page
    // Listen for a click event on the button
    $('#button_1').click(favfunct);
});
// Now define the function
function favfunct(e) {
    // Stop the page from "following" the button (ie. submitting the form)
    e.preventDefault();
    e.stopPropagation();
    // Insert AJAX call here...
}
0 голосов
/ 25 февраля 2012

Я бы порекомендовал jQuery,

вот что вам нужно: http://api.jquery.com/jQuery.get/

function add(title,text) {
  $(function() {
    $.get("add_to_db.php?title="+title+"&text="+text);
  });
}

и вы можете сделать это более продвинутым способом, используя http://api.jquery.com/jQuery.post/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...