Php 不同日期的不同数据

Php 不同日期的不同数据,php,javascript,sql,Php,Javascript,Sql,我正在制作一个网页,允许用户输入和查看不同日期的数据,并更改日期,有两个按钮,一个显示前一天,另一个显示第二天。我知道我可以通过提交表单并在他们每次按下其中一个按钮时重新加载页面来做到这一点,但我更愿意使用javascript,而不必提交表单,但我很难让表单正常工作。目前,我有两个按钮,日期存储在PHP变量中,如下代码所示: <script> function init() { <? $nutrDate = $this->parseDate(date('m/d/Y

我正在制作一个网页,允许用户输入和查看不同日期的数据,并更改日期,有两个按钮,一个显示前一天,另一个显示第二天。我知道我可以通过提交表单并在他们每次按下其中一个按钮时重新加载页面来做到这一点,但我更愿意使用javascript,而不必提交表单,但我很难让表单正常工作。目前,我有两个按钮,日期存储在PHP变量中,如下代码所示:

<script>
function init() {
    <? $nutrDate = $this->parseDate(date('m/d/Y')); ?>
}
function nutrPrevDay() {    
    <? $nutrDate = mktime(0, 0, 0, date('m',$nutrDate), date('d',$nutrDate)-1, date('Y',$nutrDate)); ?>
    alert("<? echo(date("m/d/y", $nutrDate)) ?>");
}
function nutrNextDay() {
    <? $nutrDate = mktime(0, 0, 0, date('m',$nutrDate), date('d',$nutrDate)+1, date('Y',$nutrDate)); ?>
}
window.onload = init;
</script>

<p style="text-align:center; font-size:14px; color:#03F">
  <button onclick="nutrPrevDay()" style="width:200px" >< Show Previous Day</button>                 
  <? echo(date('m/d/Y', $nutrDate)) ?>          
  <button onclick="nutrNextDay()" style="width:200px">Show Next Day ></button>  
</p>

函数init(){
}
函数名为prevDay(){
警报(“”);
}
函数nurtnextday(){
}
window.onload=init;

<显示前一天 第二天展示>

我在NutPrevDay()中的警报仅作为调试。当我点击按钮时,警报会显示一天正确减少(例如从5月17日到5月16日),但只减少一天,而不是每次点击都减少一天。此外,我不知道如何使页面上的文本(由行创建)在单击按钮后更改为显示新日期

下面是我的问题: 1) 是否可以使用javascript动态更改页面上的数据(例如文本,将来还会更改SQL查询),而不必在单击按钮时重新加载页面? 2) 如果可能,我如何进行这些更改? 3) 如何修复此问题,使其在每次单击按钮时在日期间递增或递减?

Q1:

是的,这是可能的,可能就是你要找的

Q2:

首先,您必须了解JavaScript在客户端工作,而PHP在服务器端工作。考虑到这一点,您不能仅仅因为php脚本是在javascript函数中编写的,就期望在单击按钮时执行它们

您最多可以将PHP脚本中的内容打印到JavaScript脚本中。你的脚本在这方面失败了,除了警报部分。例如:

<script>
function javascriptFunction(){
  // This php script, will be executed when you call your page, however $nutrDate is an assigned php variable, javascript will never know about it;
  <?php $foo = 'bar'; ?>
  // This will give you a javascript error because $foo is a string
  var foo = <?php echo $foo; ?>;
  // This is the code which will do the expected, notice the quotes.
  var foo = '<?php echo $foo; ?>';

  // If you have a single quote inside $foo, it will break javascript
  <?php $foo = "ba'r";
  var foo = '<?php echo $foo; ?>';
}
</script>

函数javascriptFunction(){
//这个php脚本将在您调用页面时执行,但是$nurtDate是一个指定的php变量,javascript永远不会知道它;
//这将给您一个javascript错误,因为$foo是一个字符串
var foo=;
//这是实现预期目标的代码,请注意引号。
var foo='';
//如果$foo中有一个单引号,它将破坏javascript
;
功能(动作){
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}
否则{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
//readyState信息:http://www.devguru.com/technologies/xmldom/quickref/httpRequest_readyState.html
if(xmlhttp.readyState==4&&xmlhttp.status==200){
//这就是我们告诉结果将出现的地方
document.getElementById(“当前”).innerHTML=xmlhttp.responseText;
current=xmlhttp.responseText;
}
}
open(“GET”、“somescript.php?action=“+action+”&curday=”+current,true);
xmlhttp.send();
}

<显示前一天 第二天展示>

现在,在somescript.php文件中

<?php 
  if(isset($_GET['action'])){
    if($_GET['action'] == 'increase'){
      // your increasing day logic here
    } elseif ($_GET['action'] == 'decrease'){
      // decreasing logic here
    } else {
      // whatever...
    }
  }
  ?>

注意:这几乎是从头开始写的,有一些拷贝/过去,没有检查代码是否真的有效…这只是一个指南


希望它能有所帮助。

你不需要Ajax。你可以用PHP做的事情很少,Javascript做不到——你应该只在绝对需要与服务器通信时才使用Ajax(例如:需要数据库中的东西,等等)。即使以后您可能会使用Ajax,也不应该在任何地方都使用它,特别是当一个简单的脚本可能能够解决您的问题时

正如所发生的那样,Javascript有许多内置的日期函数,它们的功能几乎和PHP的一样强大……如果它们不能满足您的需要,您可以轻松地编写自己的函数


保持简单。

谢谢,我不熟悉AJAX,但它看起来正是我所需要的。
<?php 
  if(isset($_GET['action'])){
    if($_GET['action'] == 'increase'){
      // your increasing day logic here
    } elseif ($_GET['action'] == 'decrease'){
      // decreasing logic here
    } else {
      // whatever...
    }
  }
  ?>