makc337
Новичок
Добрый день.
Вывод списка баз и таблиц.
Подскажите пожалуйста, что нужно поменять, чтоб в списке таблиц, страницы отображались как на форумах:
1 ... n-1 n n+1 ... N
где
1 - первая страница списка таблиц
n-1 - предыдущая страница
n - текущая
n+1 - следующая
N - последняя
Заранее спасибо!
Вывод списка баз и таблиц.
PHP:
<head>
<title>БД</title>
<meta charset="windows 1251">
<script></script>
</head>
<?php
//> Library
function createMysqli($host = 'localhost', $login = 'root', $psw = '', $bd = 'mysql') {
$mysqli = mysqli_connect($host, $login, $psw, $bd);
if (!$mysqli) {
exit('Ошибка mysqli ');
}
mysqli_set_charset($mysqli, 'utf8');
if (!mysqli_select_db($mysqli, $bd)) {
exit("Ошибка доступка бд {$bd}");
}
return $mysqli;
}
function createSmartyRsArray($rs) {
if (!$rs) return false;
$smartyRs = array();
while ($row = mysqli_fetch_assoc($rs)) {
$smartyRs = $row;
}
return $smartyRs;
}
function createSmartyRsAllArr($rs) {
if (!$rs) return false;
$smartyRs = array();
while ($row = mysqli_fetch_assoc($rs)) {
$smartyRs[] = $row;
}
return $smartyRs;
}
//<
//> Models
//Список
function listShowBD() {
$mysqli = createMysqli();
$sql = "SHOW DATABASES";
$rs = mysqli_query($mysqli, $sql);
mysqli_close($mysqli);
return createSmartyRsAllArr($rs);
}
function listShowTableBD($name) {
$mysqli = createMysqli();
$sql = "SHOW TABLES FROM {$name}";
$rs = mysqli_query($mysqli, $sql);
mysqli_close($mysqli);
return createSmartyRsAllArr($rs);
}
function listInfoTableBD($bd, $table, $id) {
$mysqli = createMysqli($host = 'localhost', $login = 'root', $psw = '', $bd);
$sql = "SELECT * FROM {$table} LIMIT {$id}, 50";
$rs = mysqli_query($mysqli, $sql);
mysqli_close($mysqli);
return createSmartyRsAllArr($rs);
}
function countsInfoTableBD($bd, $table) {
$mysqli = createMysqli($host = 'localhost', $login = 'root', $psw = '', $bd);
$sql = "SELECT count(*) FROM {$table}";
$rs = mysqli_query($mysqli, $sql);
mysqli_close($mysqli);
return createSmartyRsArray($rs);
}
//<
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf8">
<title>База данных</title>
<style>
* {
padding: 0;
margin: 0;
}
ul {
margin: 10px;
}
ul li a {
color: orange;
}
ul li {
list-style-type: none;
}
ul li a:hover{
opacity: 0.6;
}
table {
width: 1000px;
text-align: center;
}
table tr:nth-child(1) {
color: red;
}
tr{
border: 0;
}
.name-slot td{
border-left: 1px solid black;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
.name-select td{
border-left: 1px solid black;
border-bottom: 1px solid black;
}
.kol {
text-align: center;
width: 100%;
height: 50px;
}
a {
margin: 0;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.paginator{
color: red;
width: 250px;
text-align: center;
margin: 0 auto;
}
</style>
</head>
<body>
<div >
<div style="text-align:center; position:relative; width: 1000px; background-color: #FFFFFF;">
<fieldset><legend>Базы</legend>
<table>
<!-- Отрисовка спика БД-->
<?php function ShowAction() {?>
<?php
//Возвращаем данные
$showDB = listShowBD();
?>
<ul>
<?php if (isset($showDB) && $showDB){?>
<?php foreach ($showDB as $key => $value){?>
<li>
<a href="?action=ShowListTableBd&name=<?= $value['Database']?>"><?= $value['Database']?></a>
</li>
<?php }?>
<?php } else {?>
Ничего не найдено
<?php }?>
</ul>
<?php }?>
<!--< Отрисовка спика БД-->
<!-- Отрисовка спика таблиц БД-->
<?php function ShowListTableBdAction() {?>
<?php
$name = isset($_GET['name']) ? $_GET['name'] : 'Evgenii_petrov';
//Возвращаем данные
$showTableDB = listShowTableBD($name);
$countTable = count($showTableDB);
$nameBD = $_GET['name'];
?>
<ul>
<p class="kol">Количество таблиц: <?= $countTable?></>
<?php if (isset($showTableDB) && $showTableDB){?>
<?php foreach ($showTableDB as $key => $value){?>
<li>
<a href="?action=ShowInfoTable&bd=<?= $nameBD?>&name=<?php
foreach ($value as $k => $nameTable) {
echo $nameTable;
}
?>">
<?php foreach ($value as $k => $nameTable) {?>
<?php echo $nameTable;}?></a>
</li>
<?php }?>
<?php } else {?>
Ничего не найдено
<?php }?>
</ul>
<?php }?>
<!--< Отрисовка спика таблиц БД-->
<!-- Отрисовка таблиц БД-->
<?php function ShowInfoTableAction() {?>
<?php
//Возвращаем данные
$bd = $_GET['bd'];
$id = isset($_GET['id']) ? $_GET['id'] : 0;
$nameTable = $_GET['name'];
$showTables = listInfoTableBD($bd, $nameTable, $id);
$count = countsInfoTableBD($bd, $nameTable);
$count = $count['count(*)'];
$round = ceil($count/50)
?>
<div class="paginator"> <?php for($i = 0; $i <$round; $i++) {?>
<a href="?action=ShowInfoTable&bd=<?= $bd?>&name=<?= $nameTable?>&id=<?php
echo $i * 50;
?>"> <?= $i + 1 ?> </a>
<?php }?></div>
<table>
<?php if (isset($showTables) && $showTables){?>
<!--Имена ячеек-->
<tr class="name-slot">
<?php foreach ($showTables[0] as $tables => $value){?>
<!--Имена ячеек-->
<td> <?= $tables?></td>
<!--Имена ячеек-->
<?php }?>
</tr>
<!--Имена ячеек-->
<!--Даные ячееек-->
<?php foreach ($showTables as $tables => $value){?>
<!--данные ячеек-->
<tr class="name-select">
<?php foreach ($value as $k => $va){?>
<td><?= $value[$k]?></td>
<?php }?>
<!--данные ячеек-->
</tr>
<?php }?>
<?php } else {?>
Ничего не найдено
<?php }?>
</table>
<?php }?>
<!--< Отрисовка таблиц БД-->
</body>
</html>
<?php
$actionName = isset($_GET['action']) ? ucfirst($_GET['action']) : 'Show';
$actionName .= 'Action';
$actionName();
?>
Подскажите пожалуйста, что нужно поменять, чтоб в списке таблиц, страницы отображались как на форумах:
1 ... n-1 n n+1 ... N
где
1 - первая страница списка таблиц
n-1 - предыдущая страница
n - текущая
n+1 - следующая
N - последняя
Заранее спасибо!