有人能告诉我我的代码出了什么问题吗:
class sub_category
{
private $con;
function __construct()
{
$this->con = new mysqli("localhost", "root", "", "whatever");
}
function show_all()
{
$per_page=5;
if(isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$start_from = ($page-1)*$per_page;
$sql = "SELECT sub_kategori.id_sub_kategori, kategori.nama_kategori, sub_kategori.nama_sub_kategori FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori ORDER BY sub_kategori.id_sub_kategori LIMIT ?, ?";
$stmt = $this->con->prepare($sql);
$stmt->bind_param('ii', $start_from, $per_page);
$stmt->execute();
$stmt->bind_result($id, $namecat, $cat);
while($stmt->fetch())
{
echo "<tr>";
echo "<td>$id</td>";
echo "<td>$namecat</td>";
echo "<td>$cat</td>";
echo "<td><a href='javascript:'>Update</a></td>";
echo "<td><a href='sub_category.php?ghgfh=$id'>Delete</a></td>";
echo "<td><a href=''>Report</a></td>";
echo "</tr>";
};
$stmt->close();
$page_sql = "SELECT sub_kategori.id_sub_kategori, kategori.nama_kategori, sub_kategori.nama_sub_kategori FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori ORDER BY sub_kategori.id_sub_kategori";
$stmt_page = $this->con->query($page_sql);
$total_record = $stmt_page->num_rows;
$total_page = ceil($total_record/$per_page);
echo "</tbody>";
echo "</table>";
echo "<center>";
echo "<ul class='pagination'>";
echo "<li><a href=sub_category.php?page=1>First Page</a></li>";
for($i=1;$i<=$total_page;$i++)
{
if(isset($_GET['page']))
{
if($i==$_GET['page'])
{
echo "<li class='active'><a href=sub_category.php?page=$i>$i</a></li>";
}
else
{
echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
}
}
else
{
echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
}
}
echo "<li><a href=sub_category.php?page=$total_page>Last Page</a></li>";
echo "</ul>";
echo "</center>";
$stmt_page->close();
}
function show($nama_sub_kategori)
{
$per_page=5;
if(isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$start_from = ($page-1)*$per_page;
$nama_sub_kategori = "%$nama_sub_kategori%";
$sql = "SELECT sub_kategori.id_sub_kategori, kategori.nama_kategori, sub_kategori.nama_sub_kategori FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori WHERE sub_kategori.id_sub_kategori LIKE ? OR sub_kategori.nama_sub_kategori LIKE ? OR kategori.nama_kategori LIKE ? ORDER BY sub_kategori.id_sub_kategori LIMIT ?, ?";
$stmt = $this->con->prepare($sql);
$stmt->bind_param('sssii', $nama_sub_kategori, $nama_sub_kategori, $nama_sub_kategori, $start_from, $per_page);
$stmt->execute();
$stmt->bind_result($id, $namecat, $cat);
while($stmt->fetch())
{
echo "<tr>";
echo "<td>$id</td>";
echo "<td>$namecat</td>";
echo "<td>$cat</td>";
echo "<td><a href=''>Update</a></td>";
echo "<td><a href='sub_category.php?ghgfh=$id'>Delete</a></td>";
echo "<td><a href=''>Report</a></td>";
echo "</tr>";
};
$stmt->close();
$page_sql = "SELECT count(*) as total FROM sub_kategori INNER JOIN kategori ON kategori.id_kategori = sub_kategori.id_kategori WHERE sub_kategori.id_sub_kategori LIKE ? OR sub_kategori.nama_sub_kategori LIKE ? OR kategori.nama_kategori LIKE ? ORDER BY sub_kategori.id_sub_kategori";
$stmt_page = $this->con->prepare($page_sql);
$stmt_page->bind_param('sss', $nama_sub_kategori, $nama_sub_kategori, $nama_sub_kategori);
$stmt_page->execute();
$stmt_page->bind_result($row);
$total_record = $row;
echo $total_record;
$total_page = ceil($total_record/$per_page);
echo "</tbody>";
echo "</table>";
echo "<center>";
echo "<ul class='pagination'>";
echo "<li><a href=sub_category.php?page=1>First Page</a></li>";
for($i=1;$i<=$total_page;$i++)
{
if(isset($_GET['page']))
{
if($i==$_GET['page'])
{
echo "<li class='active'><a href=sub_category.php?page=$i>$i</a></li>";
}
else
{
echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
}
}
else
{
echo "<li><a href=sub_category.php?page=$i>$i</a></li>";
}
}
echo "<li><a href=sub_category.php?page=$total_page>Last Page</a></li>";
echo "</ul>";
echo "</center>";
$stmt_page->close();
}
}
show_all()函数运行得非常好!它显示数据和分页没有问题!
show()函数向我显示数据,它也在工作!但是分页结果为NULL!
我指的是
echo$total记录;
它给了我空分页!我的代码有问题吗?
将名称(例如total)添加到列中:
SELECT count(*) as total FROM sub_kategori ....
然后只回显值:
echo $row->total
也许我缺少了一些明显的东西,因为我没有在php中以这种方式使用$this;也就是说,指定对特定类之外的全局变量的访问权限。在函数之间共享变量时,$global用于指定共享变量(在本例中为con)。
在showAll函数中,您可以设置$total_record=$stmt_page->num_rows;在第二个(show)函数中,您设置$total_record=$row;其中$row似乎尚未初始化。。。因此NULL是正确的。