我目前正在尝试为我的项目制作页面系统。
我的目标是当有人为输入键入数字并按回车时,页面将刷新并选择该页面。
这是我的代码的一部分:
<?php
if ($page>1)
echo "</b><a class='btn btn-primary' style='background: #384452' href='read_topic.php?id=".$id."&page=".($page-1)."'> < Anterior</a> ";
?>
我在这里得到了一个不确定的变量nrpng
<form action="read_topic.php?id=<?php echo $id;?>&page=<?php echo $_POST['nrpng'];?>" method="post">
<input type="number" name="nrpng" style="width:67px; line-height: 2em; text-align:center;" min="1" max="<?php echo $total_pages; ?>" value="<?php echo $page; ?>">
</form>
其余代码:
<?php if ($page<$total_pages)
echo " <a class='btn btn-primary' style='background: #384452' href='read_topic.php?id=".$id."&page=".($page+1)."'>Próxima ></a>";
?>
答案 0 :(得分:1)
Amaro的,
看,你在这里遇到的问题是第一次加载页面或选择“下一个”或“上一个”链接时没有设置$ _POST变量。
所以你需要做的是初始化值以便能够处理这些情况,因为你应该这样做:
<?php
$nrpng = (isset($_POST['nrpng']) ? $_POST['nrpng'] : '');
//further down in your code
<form action="read_topic.php?id=<?php echo $id;?>&page=<?php echo $nrpng;?>" method="post">
但是,我建议您使用“隐藏”字段而不是表单的“操作”来发送这些变量,如果您使用方法“POST”,则通常更优雅。
希望这可以解决您的问题
[EDITED]
看看你在上述问题上所写的内容,我认为你对表格的运作方式存在误解。让我帮忙:
当用户在编写数字后点击输入时,表单中的“输入”将被传递到服务器。因此,您无需编辑表单的操作即可将其传递。例如:
<form action="read_topic.php" method="post">
<input type="number" name="nrpng" style="width:67px; line-height: 2em; text-align:center;" min="1" max="<?php echo $total_pages; ?>" value="<?php echo $page; ?>">
<input type="hidden" name="id" id="id" value="<?php echo $id; ?>
</form>
这应该足以在“read_topic.php”脚本运行时获得所需的信息。
然后在该脚本中,您可以使用以下变量设置$ _POST变量:'id','nrpng',您可以执行为该ID呈现该页面所需的逻辑。
但是,您需要记住初始化这些变量的值以防止第一次加载时出错。
答案 1 :(得分:1)
也许你想要这样的东西:
//<![CDATA[
// external.js
var doc, bod, htm, post, C, E, T; // for use on other loads
addEventListener('load', function(){ // load start
// I threw in a few goodies to study - it will help you later
doc = document; bod = doc.body; htm = doc.documentElement;
function phpEncode(obj){
var r = [];
if(obj instanceof Array){
for(var i=0,l=obj.length; i<l; i++){
r.push(phpEncode(obj[i]));
}
return '%5B'+r.join(',')+'%5D';
}
else if(typeof obj === 'object' && obj){
for(var i in obj){
if(obj.hasOwnProperty(i)){
var v = obj[i], s;
if(typeof v === 'object' && v){
s = encodeURIComponent('"'+i.replace('"', '\\"')+'":')+phpEncode(v);
}
else{
v = typeof v === 'string' ? '"'+v.replace('"', '\"')+'"' : v;
s = encodeURIComponent('"'+i.replace('"', '\\"')+'":'+v);
}
r.push(s);
}
}
return '%7B'+r.join(',')+'%7D';
}
else{
r = typeof obj === 'string' ? '"'+obj.replace('"', '\\"')+'"' : obj;
return ''+r;
}
}
function phpAccept(url){
return eval('('+decodeURIComponent(url)+')');
}
post = function(send, where, success, context){
var x = new XMLHttpRequest;
var c = context || this;
x.open('POST', where); x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
x.onreadystatechange = function(){
if(x.readyState === 4 && x.status === 200){
if(success)success.call(c, phpAccept(x.responseText));
}
}
if(typeof send === 'object' && send && !(send instanceof Array)){
if(send instanceof FormData){
x.send(send);
}
else{
var r = [];
for(var p in send){
r.push(encodeURIComponent(p)+'='+phpEncode(send[p]));
}
x.send(r.join('&'));
}
}
else{
throw new Error('send must be an Object');
}
return x;
}
C = function(tag){
return doc.createElement(tag);
}
E = function(id){
return doc.getElementById(id);
}
T = function(tag){ // returns an Array of Elements by tag name
return doc.getElementsByTagName(tag);
}
E('form').addEventListener('submit', function(ev){
ev.preventDefault();
});
var page = E('page'), err = E('error');
var pr = 'Positive Integer Required';
function gF(){
var val = page.value;
if(val.match(/\d+/)){
location = 'yourPageHere.php?page='+val;
}
else{
err.innerHTML = pr;
}
}
E('go').addEventListener('click', gF);
page.addEventListener('keydown', function(ev){
if(ev.keyCode === 13)gF();
});
page.addEventListener('keyup', function(){
err.innerHTML = page.value.match(/^[1-9]+[0-9]*$/) ? '' : pr;
});
}); // end load
&#13;
/* external.css */
html,body{
padding:0; margin:0;
}
.main{
width:980px; margin:0 auto;
}
#contain{
width:116px; background:#070; color:#fff; padding:10px;
}
#contain>label{
display:block; float:left; width:40px;
}
#page{
width:30px; float:left;
}
#go{
display:block; width:40px; margin:0 auto;
}
#error{
width:136px; color:#900; text-align:center;
}
&#13;
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8' />
<link type='text/css' rel='stylesheet' href='external.css' />
<script type='text/javascript' src='external.js'></script>
</head>
<body>
<div class='main'>
<form id='form'>
<div id='contain'>
<label for='page'>Page:</label><input id='page' name='page' type='text' value='1' />
<input type='button' id='go' value='GO' />
</div>
</form>
<div id='error'></div>
</div>
</body>
</html>
&#13;
当然,您应该更改'yourPageHere.php?page='
以满足您的需求。
答案 2 :(得分:0)
我终于得出结论,谢谢我帮助我阿图罗(当然还有其他人)
我做的是:
<form action="read_topic.php?id=<?php echo $id;?>" method="post">
$nrpng = (isset($_POST['nrpng']) ? $_POST['nrpng'] : '');
if (!empty($nrpng)){ ?>
<script> window.location = "read_topic.php?id=<?php echo $id;?>&page=<?php echo $nrpng; ?>";</script>
<?php exit();
}
?>
每次提交这样的POST时,它都会重定向到该页面并退出。
不要担心我已经解决了负值,最大值和最小值!