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つの引数、「type」または編集中のもの(1はプロジェクト名、2はプロジェクトの説明など)を取ります。ページがリロードされないようにfalseを返します。php echoを使用して、プロジェクトデータをテーブルに表示します。

3ユーザーが上のオブジェクトをクリックすると、「type」の引数、または変更されているプロジェクト情報を取得して、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

それを脇に置いて良い週の後にそれを理解しました。私の問題のほとんどを引き起こしていたタイプミスとMySQL構文エラーを根絶し、firebugでそれを長い間調べました。

理由はわかりませんが、この方法でファイルから呼び出された場合、カスタムエラーレポートシステムが機能しません。それは私が見落としている別のことかもしれませんが、firebugは確かに助けになりました。

Thanks to those who tried to help <3

于 2012-10-11T18:32:01.247 に答える