私は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;
}
?>
再びいくつかのブラケットを動かさなければなりませんでした。しかしとにかく-この関数はデータベース内のデータを更新することになっています-しかし、代わりに何もしません。私は最初にアラートを配置しましたが、アラートが呼び出されることはありません。
とにかく、簡単に言えば、私が間違っていることを知っているなら、私に教えてください。また、これを行うためのより良い方法がある場合は、私に知らせてください!
私はすべての助けに感謝します、ありがとう