2

我创建了一个分页系统,显示来自数据库的 15 列。现在我想添加一个带有其他值的下拉菜单,所以我可以将分页变量更改为 50 或 100。

我已经做了一个 javascript,但它不会像我想要的那样工作;) 它只读取我给脚本的最后一个值,当我更改下拉列表时什么也没有发生。

部分剧本

$per_page = 15; // Shows how many colums it shows per page

我的 javascript

<script type="text/javascript"> 
function addit(){ 
    if(document.getElementById("add").value=="<?php $per_page = 15; ?>") 
    { 
        document.getElementById("amount").value="10" 
    } 
    if(document.getElementById("add")."<?php $per_page = 25; ?>") 
    { 
        document.getElementById("amount").value="25" 
    } 
    if(document.getElementById("add").value=="<?php $per_page = 50; ?>") 
    { 
        document.getElementById("amount").value="50" 
    } 
} 
</script> 

和形式

<form action=" " method="get"> 
<select style="width: 60px; font-size: 17px;" name="add" id="add" onChange="addit()">
<option value="X"> views</option> 
<option value="10">10</option> 
<option value="25">25</option> 
<option value="50">50</option> 
</select> 
</td> 
</tr> 

</tbody> 
</table> 
</form> 

有小费吗 ?

谢谢

4

4 回答 4

1

您需要了解执行 PHP Javascript 的不同点。PHP在服务器上构建一个 HTML 页面,然后将其发送到执行任何 Javascript 的浏览器。

让我们看一下您的代码的一行:

if(document.getElementById("add").value=="<?php $per_page = 15; ?>") 

服务器将执行 PHP 部分。但$per_page = 15不会向 HTML 结果输出任何内容。因此,如果您在浏览器中查看结果(使用“查看源代码”),它将如下所示:

if(document.getElementById("add").value=="")

您的 Javascript 中的所有三个if语句都将看起来像这样,都一样

从这里重新考虑您的代码。如果在 PHP 部分中确定了每页的元素数量,则需要重新加载页面,以某种方式将此参数传递给服务器,以告诉它要放入页面中的元素数量。

于 2012-07-11T16:01:04.420 回答
0

在页面发送到浏览器的那一刻,PHP 已经完成了处理,因此您在 javascript 中的 php 分配不会做任何事情,除了在页面发送到浏览器之前分配一个数字。

你需要做的是:

  • 将更改的 javascript 变量的值和您的分页变量发布回服务器/提交表单
  • 使用新值重新生成页面
  • 可选择使用 ajax 仅刷新页面的一部分,而不是完全重新加载。
于 2012-07-11T15:46:29.707 回答
0

我建议您的 JS 函数确实加载带有GET附加参数的(相同?)页面,以传递items per page值。也许是这样的:

function addit(){
    var itemsPerPage = document.getElementById("add").value;
    location.href = 'url of your page' + '?ipp=' + itemsPerPage;
}

然后在您的php部分中,捕获$_GET['ipp']并使用它根据查看者的意愿呈现您的页面。

然后你就可以摆脱<form>.

于 2012-07-11T15:53:11.607 回答
0

我认为这里不需要 Javascript。你可以试试:

形式:

<form action="process.php" method="get"> 
   <select style="width: 60px; font-size: 17px;" name="add">
        <option value="X" disabled>Views</option>
        <option value="10">10</option> 
        <option value="25">25</option> 
        <option value="50">50</option> 
    </select> 
</form>

Process.php可能:

$per_page = $_GET['add'];

//Code to display $per_page number of items..

确保在客户端分配的 PHP 变量永远不会起作用。因为 PHP 不能在客户端执行。此时它已经完成了执行并输出了 HTML。或者您可以使用一些 JavascriptGet查询构建和重定向。

于 2012-07-11T16:19:44.557 回答