SELECT查询不检索最新数据

时间:2015-03-06 10:48:17

标签: php mysql sql

目前我有一个下拉菜单和一个文本区域。通过从下拉列表中选择一个数字,您可以从我的sql数据库中获取加载到文本区域的相应数据。还有一个用于保存/编辑文本的按钮,这可以成功地更新数据库。然而,什么不起作用是当新文本输入文本区域,保存,从下拉选择另一个数字,然后返回到前一个,新文本不出现,旧文本,即使数据库有已更新。

以前当我提交表单时,页面重新加载,这意味着一切正常,但是从那时起我需要停止这次重新加载,现在下拉列表没有从数据库中检索最新数据? / p>

下拉onchange函数(course.php)

function selectedItem(selection){




  if(selection=="page1"){

   document.getElementById("commentid").value = "<?php query2('page1',$_SESSION['courseID'], $_SESSION['userID']) ?>";

  }

  if(selection=="page2"){

    document.getElementById("commentid").value = "<?php query2('page2',$_SESSION['courseID'], $_SESSION['userID']) ?>";
  }

  if(selection=="page3"){

    document.getElementById("commentid").value = "<?php query2('page3',$_SESSION['courseID'], $_SESSION['userID']) ?>";
  }

  if(selection=="page4"){

    document.getElementById("commentid").value = "<?php query2('page4',$_SESSION['courseID'], $_SESSION['userID']) ?>";
  }

  if(selection=="page5"){

    document.getElementById("commentid").value = "<?php query2('page5',$_SESSION['courseID'], $_SESSION['userID']) ?>";
  }


}

&#39; commentid&#39;是文本区域的id

query2 code(func.inc.php)

function query2($page,$courseID,$userID){//POPULATE COMMENT BOX FROM THE CORRECT PAGE, COURSE ID AND USER ID
        $myData = mysql_query("SELECT {$page} FROM comments WHERE user_id='{$userID}' AND course_id='{$courseID}'");
        while($record = mysql_fetch_array($myData)){
            echo $record[$page] ;   
        }


    }

重新加载页面时,现在每个下拉选项都会显示最新评论。看来SELECT查询没有从数据库中检索最新数据?

1 个答案:

答案 0 :(得分:0)

新文本不会显示,因为它不在浏览器中。

你正在做的是:

1)从服务器加载 course.php 。它创建函数selectedItem(selection)并将其输出到浏览器。在浏览器中,该功能现在如下所示:

if(selection=="page1"){
   document.getElementById("commentid").value = "Text A";
  }

if(selection=="page2"){
   document.getElementById("commentid").value = "Text B";
  }

等......

2)您为page1发布了“文字CCCC”。此帖子由服务器拾取并放入数据库。然而,浏览器仍然具有旧的JavaScript,并且无法知道有新文本。只有你以某种方式改变了javascript,你才能看到新的文本。

有几个选项可以做到这一点:

像以前一样刷新页面。将再次创建函数selectedItem,现在包含数据库中的新Text CCCC。这是最简单的解决方案。

如果您不想刷新页面,可以在浏览器中替换javascript的内容。为此,您可以这样做:

course.php

var text=new Array(
   'page1'=>"<?php query2('page1',$_SESSION['courseID'], $_SESSION['userID']) ?>",
   'page2'=>"<?php query2('page2',$_SESSION['courseID'], $_SESSION['userID']) ?>",
   'page3'=>"<?php query2('page3',$_SESSION['courseID'], $_SESSION['userID']) ?>"
      );
var selected_page='page1';

function selectedItem(selection){
   selected_page=selection;
   document.getElementById("commentid").value = text[selection];
}

现在浏览器有一个名为“text”的javascript数组,其中包含不同页面的文本:

Text=['page1'=>'Text A','page2'=>'Text B','page3'=>'Text C']

每次运行函数selectedItem时,它都会将所选文本变量的值放在commentid中。它还会更新变量selected_page,以便您可以跟踪显示的变量。

发布表单时,只需更改相应变量的内容即可。这可以这样做:

在您的表单中添加以下内容:

<form onsubmit="change_text()">

并添加一点javascript函数

function change_text(){
   //replace the corresponding variable with the new text
   text[selected_page]=document.getElementById('mytextarea').value;

   return true; // (to submit the form)
}

这将使用textarea中的文本覆盖text[selected_page]的值。现在javascript'知道'有新文本可以显示它。因此,如果您将page1更改为“Text DDDDD”,则数组现在包含

Text=['page1'=>'Text DDDDD','page2'=>'Text B','page3'=>'Text C']

注意这是一个(非常)简化的示例。这是为了不检查服务器是否正确处理了帖子。因此,您仍然可以在浏览器和数据库中找到不同的文本。我建议你看看ajax(可能是jquery ajax)来正确地做到这一点。