Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以在一个脚本中使用多个函数吗?_Php_Ajax - Fatal编程技术网

Php 我可以在一个脚本中使用多个函数吗?

Php 我可以在一个脚本中使用多个函数吗?,php,ajax,Php,Ajax,我正在尝试将Ajax、PHP和MySQL结合使用来创建一个表单元素,下拉式选择输入能够选择一个选项,并让Ajax通过脚本将数据发送到数据库,然后返回页面到一个单独的div。我已经找到了这方面的大部分代码。我现在的问题是这个 我有三个下拉菜单,我想去这个脚本。然后,它将转到三个不同的$GET脚本,具体取决于从哪个菜单中选择它 <script type="text/javascript"> function showUser(str) { if (str=="") { docume

我正在尝试将Ajax、PHP和MySQL结合使用来创建一个表单元素,下拉式选择输入能够选择一个选项,并让Ajax通过脚本将数据发送到数据库,然后返回页面到一个单独的div。我已经找到了这方面的大部分代码。我现在的问题是这个

我有三个下拉菜单,我想去这个脚本。然后,它将转到三个不同的$GET脚本,具体取决于从哪个菜单中选择它

<script type="text/javascript">
function showUser(str)
{ 
if (str=="")
  { document.getElementById("txtHint").innerHTML="";
  return; }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest(); }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
  xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; }
  }
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send(); }
</script>

函数showUser(str)
{ 
如果(str==“”)
{document.getElementById(“txtHint”).innerHTML=“”;
返回;}
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=newXMLHttpRequest();}
其他的
{//IE6、IE5的代码
xmlhttp=newActiveXObject(“Microsoft.xmlhttp”);}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;}
}
open(“GET”、“getuser.php?q=“+str,true”);
xmlhttp.send();}
我拥有的三个select元素都带有onchange函数

<select name="characters" onchange="showCharacter(this.value)">
<select name="towers" onchange="showTowers(this.value)">
<select name="enemies" onchange="showEnemies(this.value)">

我为这个脚本编写的PHP代码如下:

<?php

include("dbinfo.inc.php");

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
mysql_select_db("db1801445-main", $con);
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysql_query($sql);
$q=$_GET["q"];

echo "<table border='1'>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>";
while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "<td>" . $row['Description'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?> 


Idk还有什么办法,你们能帮我吗?

我同意使用jQuery会让你们的生活更轻松,但为了解决你们的问题:

您可以使JS代码更通用,以便更易于重用:

<script type="text/javascript">
function doAjax(ajaxFunction, str)
{ 
if (str=="")
  { document.getElementById("txtHint").innerHTML="";
  return; }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest(); }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
  xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; }
  }
xmlhttp.open("GET","getuser.php?q="+str+"func="+ajaxFunction,true);
xmlhttp.send(); }
</script>

函数doAjax(ajaxFunction,str)
{ 
如果(str==“”)
{document.getElementById(“txtHint”).innerHTML=“”;
返回;}
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=newXMLHttpRequest();}
其他的
{//IE6、IE5的代码
xmlhttp=newActiveXObject(“Microsoft.xmlhttp”);}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;}
}
open(“GET”、“getuser.php?q=“+str+”func=“+ajaxFunction,true”);
xmlhttp.send();}
然后更改PHP,并执行以下操作:

<?php
$sFunction  = $_GET["func"];
$sQ =$_GET["q"];

switch($sFunction){

    case 'showUser':
       //code here;
    break;
    case 'showTowers':
       //code here;
    break;
   case 'showEnemies':
       //code here;
    break;
    case 'showCharacters':
       //code here;
    break;
}

回到前端:

<select name="characters" onchange="doAjax('showCharacter',this.value)">
<select name="towers" onchange="doAjax('showTowers',this.value)">
<select name="enemies" onchange="doAjax('showEnemies',this.value)">


那个缩进样式太糟糕了。。。好。。。我复制并粘贴了它。。。在我能让它正常工作之前,我并没有考虑过演示文稿。无论如何,它应该是您实际代码的一部分。易读的代码使代码易于维护。你写的时候,它应该是自动的。我会编辑它使它看起来更好。:)您真的应该使用jquery。它将把xmlhttprequest的全部内容简化为一个
$.get('script.php?q=…',function(){…})谢谢你的帮助!我非常感谢,当我尝试使用你给我的函数时,firebug给了我一个错误,说“doAjax没有定义”。我把你放在这里的所有代码放在各自的地方,URL正确地指向相应的脚本。doAjax是如何定义的?当onchange事件发生时,是否应该将命令发送到Ajax脚本,然后它将找到php脚本的位置,从数据库中获取数据,然后将其与Ajax脚本一起显示在屏幕上?我几乎可以肯定这就是它的工作原理。。。我可能错了,但如果我错了,请纠正我。:)你是对的。可能生成错误的JS中存在错误。你检查过firebug了吗?目前firebug告诉我的是:函数onchange(event){doAjax(“showTowers”,this.value);}我试图看看有什么可以修复它,但看起来,函数似乎不包括XMLHttpRequest();。另外,它的var没有声明,所以我将其更改为var xmlhttp=new XMLHttpRequest();试图看看这是否有帮助,但没有任何改变。如果我找到解决方案,我会发表评论。