我一直在尝试将用户输入从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是我做的提示函数,它需要一个参数,'type'或正在编辑的内容(1代表项目名称,2代表项目描述,等等);返回false,因此页面不会重新加载; php echo在表格中显示项目数据。
3一旦用户点击上面的对象,它就会执行一个名为popupprompt的javascript函数,其中包含“type”参数或正在更改的项目信息。该功能的代码如下:
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;
}
?>
再次不得不移动一些括号。但无论如何 - 这个函数应该更新数据库中的数据 - 但是,它没有做任何事情。我在开始时就发出了警报,但从未调用它们。
无论如何,长话短说 - 如果你知道我做错了什么,请启发我,如果还有更好的方法 - 请告诉我!
我感谢所有的帮助, 感谢
答案 0 :(得分:0)
在将它放在一边好一周之后想出来。在firebug中对它进行了长时间的研究,找出了导致我的大多数问题以及MySQL语法错误的拼写错误。
我不知道为什么,但是当以这种方式从文件调用时,我的自定义错误报告系统不起作用。这可能是我忽视的另一件事,但是firebug肯定有帮助。
感谢那些试图帮助&lt; 3
的人