使用下拉菜单更改变量值

时间:2012-07-11 15:39:40

标签: php javascript

我创建了一个分页系统,它显示了数据库中的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 个答案:

答案 0 :(得分: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部分中确定每页的元素数量,则需要重新加载页面,以某种方式将此参数传递给服务器,以告诉它要将多少元素放入页面。

答案 1 :(得分:0)

PHP已经在页面发送到浏览器时完成处理,因此除了在页面发送到浏览器之前分配一个数字之外,你的javascript中的php赋值将不会执行任何操作。

您需要做的是:

  • 将已更改的javascript变量和您的分页变量的值发回服务器/ 提交表单
  • 使用新值
  • 重新生成页面
  • 可选择使用ajax仅刷新部分页面,而不是完全重新加载。

答案 2 :(得分: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>

答案 3 :(得分: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。或者您可以使用一些Javascript Get查询构建&amp;重定向。