变量传递:与PHP连接到数据库的Web表单
变量传递:与PHP连接到数据库的Web表单
您好,感谢您查看我的问题。作为一个完全的初学者,我正在寻找以下操作的简单方法...
我在单独的链接文档中有以下内容:
HTML、CSS、Javascript、PHP
我遇到的问题是:
我需要使用类似JSON的东西(尽管我也可以接受XML请求或Ajax),将变量从Javascript传递到PHP。我需要这些变量在PHP中直接可用,以便在数据库中进行搜索(不仅仅在弹出消息或其他地方看到)。
我看到了很多不同的方法来做这个,甚至在YouTube上看过教程,但是没有一个对我有用过。我遇到的最大问题是,当我在表单中添加一个提交按钮时,它不会提交我的表单,我不知道为什么。
表单代码片段:
倒数第二行不起作用。我需要使用javascript来提交表单吗?因为我真的认为在这种情况下它是表单功能的一部分,就像method="post"一样...
另一件事是关于JSON,我不知道该怎么做,因为我的变量是由用户输入确定的。因此,我无法自己定义它们。它们只能通过document.getElement...来定义,而这不符合JSON的语法。
这些目前真的是我的主要问题。所以如果有人能向我展示一个简单的方法来完成这个变量传递,那将是非常棒的。
完成后,我还需要使用php/sql在我的数据库中进行搜索/比较(连接已经很好),并且根据我找到的结果能够将信息返回给HTML中的一个
标签。我看到了一个例子,但我不确定它是否非常适用于我正在做的事情,所以如果您能解释如何做到这一点,那就太好了。
非常非常感谢。
April
问题的原因是需要将JavaScript中的变量传递给PHP,但不清楚如何实现。解决方法是使用XML请求或使用jQuery的ajax方法来发送数据并保存在PHP中。
以下是一篇关于该问题的文章:
在Web表单中连接PHP到数据库的变量传递问题
您不需要使用ajax来提交这个表单,甚至不需要使用JavaScript。只需按照以下步骤操作:
这将把表单数据发送到`mytarget.php`(可以根据需要更改)。
请注意,我在表单的文本字段中添加了`name`属性,并将按钮的类型更改为`submit`。
现在,您可以在`mytarget.php`中使用以下代码处理数据:
如果您想在提交之前对输入进行长度检查,有两种方法可供选择:
1. 在输入被发送之前(服务器不会干扰)
2. 让服务器检查输入
对于第一种方法,您需要添加一个事件监听器,如下所示:
var form = document.getElementById("form"); form.addEventListener("submit", function(event){ console.log("test"); var name = form.elements['userinput'].value; if(name.length < 3){ alert("boy your name is short!"); event.preventDefault(); } });
输入少于3个字符的名称,表单将不会被提交。您可以在这里进行测试:http://jsfiddle.net/NicoO/c47cr/
如果您想在服务器端进行测试,可以在`mytarget.php`中使用以下代码:
3) echo "Your name is: ".$username; else echo "your name was too short!"; ?>
您还可以使用ajax来完成所有这些操作。您可以在这里找到许多有用的内容。但我建议您使用jQuery等框架来实现。
这篇文章对您非常有帮助!谢谢您。但是,很遗憾,我确实需要JS - 它是作业的一部分...
甚至还有一个JavaScript部分的演示。您可以清楚地看到如何使用JS检索表单元素并进行操作。还有什么问题吗?
抱歉,没有意识到您已经解释了JS部分。我已经有一个有效的函数了。我仍然不明白的是如何将变量从JS传递给PHP...除非每个人都试图说的是我根本不需要JS中的变量...但我认为我是需要的。无论如何,这是作业的一部分。XML请求可能是最好的解决方法,但我不确定如何实现。
请阅读这个链接:stackoverflow.com/questions/19029703/… 和 api.jquery.com/jQuery.ajax
Variable Transfer: Web Form that connects with PHP to Database
问题的出现原因:问题出现在代码中的这一行:<form id="form" name="input" method="post" action="javascript:proofLength();">
。action应该是一个PHP页面(或任何其他类型的服务器脚本),用于处理表单。或者proofLength函数必须在表单上调用submit()方法。
解决方法:将代码修改为以下形式:
<form id="form" name="input" method="post" action="yourpage.php"> <input id="userinput" type="text" autofocus /> <input id="submit" type="button" value="submit"> </form>
并且在PHP页面中使用$_POST["name"]
获取变量的值。
如果您希望在提交表单之前执行一些JavaScript操作,请参考这个答案。
感谢您的回答,但是我不确定这样做是否能解决问题。在将变量传递到PHP之前,我需要在JavaScript中执行一些操作...除非您的意思是变量应该直接传递到PHP,然后再传递到JS?但是我也不知道如何做到这一点...
不,您可以在proofLength函数中执行任何您需要的操作,但是在函数的最后,您必须调用form.submit()。如果您有其他要发送到服务器的变量,可以使用隐藏的输入字段。
我指的是那些经过计算的变量,您不希望在GUI中对用户可见。
我已更新我的答案,说明如何在提交之前执行JavaScript操作。
评论中缺少您需要做的内容 🙂
好吧,form.submit()可能是我需要的东西,但我仍然不确定我应该如何实现您所说的...这是我需要做的:表单 -> JS函数判断输入是否有效 -> 只有在输入正确时才保存变量 -> 发送到PHP以搜索匹配项 -> 将结果发布回表单。我仍然需要学习如何传递我的变量并处理提交按钮,因为这似乎是我看到的许多示例中的关键因素...而且我甚至不确定如何将结果发布回我的表单。
您不需要将结果发布回表单,除非您想使用AJAX。以下是您可以做的:在PHP页面中,使用echo "The result of the search is ....."创建响应的HTML。这将创建响应页面。如果您想用用户在原始请求中输入的数据填充表单,请通过重新创建具有分配值而不是空白的HTML来将表单添加到响应中。
作为如何创建带有值的表单的示例:$userinput = $_POST["userinput"]; echo '<input id="userinput" type="text" autofocus value ="$userinput"/>';