0

我一直在尝试从 Javascript 提示符中获取用户输入到 PHP 函数中,并且在这样做时遇到了很多麻烦。我在尝试 jQuery 的 $.post 方法时不知所措——因为 PHP 根本不想执行,不知道为什么。

无论如何,这是我目前正在做的事情的要点:

1 一个项目及其数据是从数据库加载的 - 此信息显示在表格中。

2 表中的所有数据都可以通过 Javascript prompt() 进行编辑,我为此使用的代码如下:

<div id="lvl3"><a href="" onclick="popupprompt(1); return false"><?php echo $fetchdata['name']; ?></a></div>

上面的工作是这样的:lvl3 是字体样式的标签;空白href使其充当链接;popupprompt 是我制作的提示功能,它有一个参数,“类型”或正在编辑的内容(1 为项目名称,2 为项目描述等);返回 false 所以页面不会重新加载;php echo 在表格中显示项目数据。

3 一旦用户单击上面的对象,它就会执行一个名为 popupprompt 的 javascript 函数,该函数接受一个“类型”参数,或者正在更改的项目信息。该函数的代码如下:

    function popupprompt(type) {
        switch(type)
    {
        case 1:
            var name = prompt("Project Name:", "");

            if (name != null && name != "")
            {
                //Change Project Name
                var getname = name;
                var gettype = type;

                $.post("edit.php", { type: gettype, name: getname });
            } else if (name == "") {
                senderror("Please enter a valid Project Name");
            } else {
                //Prompt canceled
                sendnotification('Canceled my ass!');
            }
            break;
        case 2:
                            //Description?
        case 3:
            //Version?
        case 4:
            //Release?
        default:
            alert("There was an error processing your request.");
            break;
    } }

我在这个函数中遇到的问题是 edit.php 中没有任何内容被执行——我一点也不知道为什么。此外,我不得不更改括号,以便它在代码框中正确显示 - 所以不要介意那些。

4 无论如何,现在用户输入已发布到 edit.php- 这不起作用,但我还是会发布它:

    <?php
    $type = $_POST['type'];
    $name = $_POST['name'];

    switch($type) {
case 1:

    dbconnect();

    $urlext = geturlext();
    $authenticated = isauthenticated();

    if ($authenticated == false)
    {
        echo("<script>senderror('Access denied');</script>");
    } else {

        //Escape and trim input
        $input = trim($input);
        $input = mysql_real_escape_string($input);

        $update = "UPDATE 'projects' SET 'name' = '$input' WHERE 'name' = '$urlext'";
        $updatequery = mysql_query($update) or die(mysql_error());

        echo("<script>sendnotification('Project Name updated');</script>");
        }
    break;
    default:
    break;
    }
    ?>

再次不得不移动一些括号。但无论如何——这个函数应该更新数据库中的数据——然而,它什么也不做。我已经在开始时放置了警报,但它们从未被调用过。

无论如何,长话短说-如果您知道我做错了什么,请赐教,另外,如果有更好的方法可以做到这一点-请告诉我!

我感谢所有帮助,谢谢

4

1 回答 1

0

搁置了一周后才弄清楚。在 firebug 中仔细查看了它,找出了导致我的大部分问题以及 MySQL 语法错误的错字。

我不知道为什么,但是当以这种方式从文件调用时,我的自定义错误报告系统不起作用。这可能是我忽略的另一件事,但萤火虫肯定有帮助。

感谢那些试图帮助的人<3

于 2012-10-11T18:32:01.247 回答