非表示のテキストボックスにシリアル化される属性を持ついくつかのjQueryUIソート可能オブジェクトを含むフォームがあるdata-
ため、フォームを送信すると、PHPスクリプトはの値$_POST["contents"]
(このような文字列1-2-2-1
)を調べてMySQLに渡すことができますUPDATEクエリ。問題は、(javascriptから)フォームを送信する前に報告されたテキストボックスの値が、の値と異なることです$_POST
。
フォーム:
<form method="post" action="?update">
<input type="text" name="id" style="display:none" value="1" />
<input type="text" name="path" placeholder="Endereço Ex.: /pacotes/pureenergy" value="/some/path" /> <input type="text" name="title" placeholder="Título da página" value="<?php echo $t;?>" /><br />
<!-- Some stuff hidden for briefness -->
<input type="text" id="ci" name="contents" style="display:none" value="1-2-2-1" />
<input type="submit" value="Atualizar página" onclick="updateForm()">
</form>
Javascript:
function updateForm() {
var txt = $("#dropzone li:first-of-type").data("id");
$("#dropzone li:not(:first-of-type)").each(function() {
txt = txt+"-"+$(this).data("id");
});
$("#ci").text(txt);
alert(txt);
}
PHP:
$id = $_POST["id"];
$p = $_POST["path"];
$t = $_POST["title"];
$c = $_POST["contents"];
mysql_query("UPDATE aruna.pages SET path='$p', title='$t', contents='$c' WHERE id=$id") or die(mysql_error());
javascriptによって報告された値はalert()
意図したとおりに動作していますが、フォームを送信すると、の値は$_POST["contents"]
HTMLでハードコーディングされたものと同じです。
編集:$_POST["contents"]
PHPは、タイプミスがあった場合のように、設定が解除されていることについて文句を言いません。