3

私の問題は$_POST、または空の値を返すPHPがnullあり、個人的にコードにエラーが表示されないことです(ただし、コードはそこにあります)。タイムスケジュール。だから、誰かが私を助けてくれることを望んでいました;)

これが私が持っているものです、基本的に:

<table border="0" align="center">
<tr>
    <td>
        <div id="lvl3">Project Name:</div>
    </td>
    <td>
        <input type="text" name="prjname" maxlength="250">
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" value="Submit" name="prjsubmitname">
        <input type="button" value="Cancel" onclick="$('#popupoverlay').hide(); $('#prjpopupbox').hide(); $('#prjname').hide(); $('#prjdescription').hide(); $('#prjversion').hide(); $('#prjrelease').hide();">
    </td>
</tr>

これはプロジェクト名を編集するための私のテーブルです。ここで重要なのはテキストボックスの入力だと思います。

次に、PHPがあります。

//Did the user change the Project Name
if (isset($_POST['prjsubmitname']))
{
//Is the input empty
if (!trim($_POST['prjname']))
{
    //Input is empty
    echo('<script>senderror("Please enter a valid Project Name empty");</script>');
} else {

    //Input isnt empty, assign variables
    $url = geturlext();
    $prjname = mysql_real_escape_string(trim($_POST['prjname']));

    //Is input invalid
    if (strcasecmp($prjname, "main") == 0 | $prjname == "404")
    {
        //Input is invalid
        echo('<script>senderror("Please enter a valid Project Name invalid");</script>');
    } else {

        //Input is valid, connect to database
        dbconnect();

        $checkquery = mysql_query("SELECT * FROM projects WHERE name = '$prjname'") or die(mysql_error());
        $check = mysql_num_rows($checkquery);

        //Does Project Name already exist
        if ($check == 0)
        {
            //No it does not
            $updatequery = mysql_query("UPDATE projects SET name = '$prjname' WHERE name = '$url'") or die(mysql_error());

            echo("<script>location.href='index.php?page=" . $prjname . "'</script>");
        } else {
            //Yes it does
            echo('<script>senderror("That Project Name already exists");</script>');
        }
    }
}
}

ここで問題が発生します。テキストボックスに何を入力しても、「入力が空です」というエラーメッセージが常に表示されます。$ _POST ['prjname']の出力を出力しましたが、実際には空です。

奇妙な部分は、プロジェクトの説明を変更するためのこれとまったく同じ(少なくとも私が思うに)セットアップがあり、それは完璧に機能するということです。比較のために、以下のプロジェクト記述エディターの同じ部分を含めました。

テーブル:

<table border="0" align="center">
<tr>
    <td>
        <div id="lvl3">Project Description:</div>
    </td>
    <td>
        <textarea type="text" name="prjdescription" maxlength="750" style="width:300px; height:100px; resize:none;"></textarea>
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" value="Submit" name="prjsubmitdescription">
        <input type="button" value="Cancel" onclick="$('#popupoverlay').hide(); $('#prjpopupbox').hide(); $('#prjname').hide(); $('#prjdescription').hide(); $('#prjversion').hide(); $('#prjrelease').hide();">
    </td>
</tr>

そしてPHP:

//Did the user change the Project Description
if (isset($_POST['prjsubmitdescription'])) 
{
//Is the input empty
if (!trim($_POST['prjdescription']))
{
    //Input is empty
    echo('<script>senderror("Please enter a valid Project Description");</script>');
} else {

    //Input isnt empty, do stuff
    $url = geturlext();
    $prjdescription = mysql_real_escape_string(trim($_POST['prjdescription']));

    //Connect and change description
    dbconnect();

    $updatequery = mysql_query("UPDATE projects SET description = '$prjdescription' WHERE name = '$url'") or die(mysql_error());
    echo("<script>location.href='index.php?page=" . $url . "'</script>");
}
}

明確にするために、両方のテーブルは同じフォームタグにあり、PHPは互いに隣接しています。

Firebugにエラーはありません。実際、Firebugは私に何も与えません。それ以外は、私が見落としているのは本当に小さなタイプミスだと確信しています。

4

2 に答える 2

1

私はこの問題の解決策を見つけました:

プロジェクト名編集PHPで変数「$prjname」の名前を変更すると、問題が修正されます。

$ _POST(['prjname'])と同じ名前の変数($ prjname)があると、空またはnullの文字列が返されるように見えます。理由はわかりません。

助けてくれた人たちに感謝します

編集:実際には、変数名($ prjname)のみを変更するとエラーが再び発生します-$_POST名を変更した場合にのみ修正されます...奇数。

于 2012-10-16T03:04:54.493 に答える
-1

上記の問題の説明を見ると、フォーム要素はフォームタグ内にカプセル化する必要があり、フォームデータのみがサーバーに投稿されると結論付けることができます。

したがって、問題の解決策として、formタグ内に入力要素を定義する必要があります。

于 2012-10-16T02:44:53.270 に答える