| Autor | Zpráva | ||
|---|---|---|---|
| Vilak Profil |
Zdarec borci. Zkouším dělat stránkování a mám s ním krapet problém. Jedu podle návodu: www.itnetwork.cz/php/ostatni/tutorial-dokonceni-paginace-strankovani-v-php
Vypisuje mi to tuto chybu: Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\esport\counter-strike-global-offensive.php on line 76 A neukazuje se mi stránkování. paginace.php: <?php
function url_page($url, $page) {
return str_replace('{page}', $page, $url);
}
function paginace($page, $pages, $url) {
$radius = 3;
$html = "<nav class='p_centered'><ul class='p_paginace'>";
//left arrow
if ($page > 1) {
$html .= "<li><a href='".url_page($url, $page - 1)."'>«</a></li>";
}
else {
$html .= "<li class='p_no_active'>«</li>";
$left = $page - $radius >= 1 ? $page - $radius : 1;
$right = $page + $radius <= $pages ? $page + $radius : $pages;
}
if ($left > 1) {
$html .= "<li><a href='". url_page($url, 1)."'>1</a></li>";
}
if ($left > 2) {
$html .="<li class='p_no_active'>…</li>";
}
for ($i = $left; $i <= $right; $i++) {
if ($i == $page) {
$html .= "<li class'p_active'>".$i."</li>";
}
else {
$html .= "<li><a href='".url_page($url, $i)."'>".$i."</a></li>";
}
}
if ($right < $pages - 1) {
$html .= "<li class='p_no_active'>…</li>";
}
if ($page < $pages) {
$html .= "<li><a href='".url_page($url, $pages)."'>".$pages."</a></li>";
}
if ($page < $pages) {
$html .= "<li><a href='".url_page($url, $page + 1)."'>»</a></li>";
}
else {
$html .= "<li class='p_no_active'>«</li>";
}
$html .= "<ul></nav>";
return $html;
}
?>counter-strike-global-offensive.php: <!-- tělo stránky -->
<div id="content">
<?php
$stmt = $conn->prepare("SELECT * FROM `articles`");
$stmt->execute();
$count = $stmt->rowCount();
if (isset($_GET['strana'])) {
$page = $_GET['strana'];
}
else {
$page = 1;
}
include "include/scripts/paginace.php";
function articles($page, $topage) {
$page1 = ($page)*$topage;
return mysql_query("SELECT * FROM `articles` ORDER BY `date` DESC LIMIT $page1, $topage");
}
$topage = 5;
var_dump($page, $topage);
$articles = articles($page, $topage);
var_dump($articles);
$pages = ceil($count/$topage);
//výpis
foreach ($articles as $article) { // ŘÁDEK 76!!!!!!!!!!!!!!!!!!!!!
echo $article['id']."<br>";
echo $article['game']."<br>";
echo $article['headline']."<br>";
echo $article['text']."<br>";
echo $article['author']."<br>";
echo $article['date']."<br>";
}
paginace($page, $pages, "?strana={strana}")
?>
</div>
<!-- tělo stránky -->var_dump mi vrací tyto hodnoty: int(1) int(5) bool(false) Kdyby měl někdo dotaz, ptejte se. Budu rád za každou radu. |
||
| Keeehi Profil |
Máš špatně MySQL dotaz. Proto mysql_query vrací false. Vypiš si chybu
echo mysql_error(); |
||
| Vilak Profil |
Toto: bool(false)
Nebudu mět náhodou chybu return mysql_query("SELECT * FROM `articles` ORDER BY `date` DESC LIMIT $page1, $topage");, když jsem zbytek dělal pomocí PDO? Jak přepíšu to mysql_query do příkazu v PDO?
Jasně... mysql_error(); vypisuje: No database selected Jak tento příkaz přepíšu do PDO? |
||
| lionel messi Profil |
#4 · Zasláno: 4. 6. 2016, 14:58:37
Vilak:
„Jak přepíšu to mysql_query do příkazu v PDO?“ //príprava
$dotaz = $conn->prepare("SELECT * FROM `articles` ORDER BY `date` DESC LIMIT ?, ?");
//vykonanie dotazu
$dotaz = $dotaz->execute(array($page1, $topage));
//vrátenie výsledku
$vysledek = $dotaz->fetchAll();Netestované, dúfam, že bez chýb. |
||
| Vilak Profil |
Funguje mi to, nová funkce:
function articles($page, $topage) {
include "include/db/db.php";
$page1 = ($page - 1)*$topage;
$stmt = $conn->prepare("SELECT * FROM `articles` ORDER BY `date` DESC LIMIT $page1, $topage");
$stmt->execute();
return $stmt;
}Jinak mám problém ještě s tím stránkováním. Vypisuje mi to takovýto seznam: "« 1 2 3 3 »" Prostě mi to poslední stránku vypíše 2x a nevím, proč. To platí jen za podmínek, že jsme na straně 1 nebo 2. ________________________________________________________________ MÁM TO, přikládám konečnou verzi, pro ostatní paginace.php: <?php
function url_page($url, $page) {
return str_replace('{strana}', $page, $url);
}
function paginace($page, $pages, $url) {
$radius = 3;
$html = "<nav class='p_centered'><ul class='p_paginace'>";
if (isset($_GET['strana'])) {
$page = $_GET['strana'];
}
else {
$page = 1;
}
//left arrow
if ($page > 1) {
$html .= "<li><a href='".url_page($url, $page - 1)."'>«</a></li>";
}
else {
$html .= "<li class='p_no_active'>«</li>";
}
$left = $page - $radius >= 1 ? $page - $radius : 1;
$right = $page + $radius <= $pages ? $page + $radius : $pages;
if ($left > 1) {
$html .= "<li><a href='". url_page($url, 1)."'>1</a></li>";
}
if ($left > 2) {
$html .="<li class='p_no_active'>…</li>";
}
for ($i = $left; $i <= $right; $i++) {
if ($i == $page) {
$html .= "<li class'p_active'>".$i."</li>";
}
else {
$html .= "<li><a href='".url_page($url, $i)."'>".$i."</a></li>";
}
}
if ($right < $pages - 1) {
$html .= "<li class='p_no_active'>…</li>";
}
if ($page < $pages) {
//$html .= "<li><a href='".url_page($url, $pages)."'>".$pages."</a></li>";
}
if ($page < $pages) {
$html .= "<li><a href='".url_page($url, $page + 1)."'>»</a></li>";
}
else {
$html .= "<li class='p_no_active'>«</li>";
}
$html .= "<ul></nav>";
return $html;
}
?>counter-strike-global-offensive.php: <div id="content">
<?php
$stmt = $conn->prepare("SELECT * FROM `articles`");
$stmt->execute();
$count = $stmt->rowCount();
if (isset($_GET['strana'])) {
$page = $_GET['strana'];
}
else {
$page = 1;
}
include "include/scripts/paginace.php";
function articles($page, $topage) {
include "include/db/db.php";
$page1 = ($page - 1)*$topage;
$stmt = $conn->prepare("SELECT * FROM `articles` ORDER BY `date` DESC LIMIT $page1, $topage");
$stmt->execute();
return $stmt;
}
$topage = 1;
$articles = articles($page, $topage);
$pages = ceil($count/$topage);
//výpis
foreach ($articles as $article) {
echo $article['id']."<br>";
echo $article['game']."<br>";
echo $article['headline']."<br>";
echo $article['text']."<br>";
echo $article['author']."<br>";
echo $article['date']."<br>";
echo "<hr><hr>";
}
echo paginace($page, $pages, "?strana={strana}")
?>
</div>Děkuju vám moc! |
||
| Keeehi Profil |
$conn->prepare() ve funkci by neměl fungovat, protože proměnnou $conn si tam nepředáváš.
function articles($page, $topage, $databaseConnection) {
include "include/db/db.php";
$page1 = ($page - 1)*$topage;
$stmt = $databaseConnection->prepare("SELECT * FROM `articles` ORDER BY `date` DESC LIMIT $page1, $topage");
$stmt->execute();
return $stmt;
}
$topage = 1;
$articles = articles($page, $topage, $conn); |
||
| Vilak Profil |
#7 · Zasláno: 4. 6. 2016, 15:45:50
Zprvu mi to nefungovalo, a tak jsem si kvůli tomu do funkce vložil db.php. Vše jsem to už otestoval (můj skript), funguje to.
|
||
| Keeehi Profil |
#8 · Zasláno: 4. 6. 2016, 17:02:48
Vilak:
To ovšem zbytečně vytváří další spojení do databáze. Což může být obrovský zabiják výkonu. |
||
| Vilak Profil |
#9 · Zasláno: 5. 6. 2016, 10:56:32
Ok, děkuji. Přepíšu to tedy.
|
||
|
Časová prodleva: 10 let
|
|||
0