Om jag förstår frågan rätt så är det någon form av paging du frågar efter. För att i såfall göra det enkelt för mig vill jag hänvisa till den här sidan: http://www.a-kok.com/php/paging.php
Jag sökte och fann den här tråden, detta är det jag söker efter men jag får det inte att fungera! Det är MySQL pagingen jag testar.
Mitt felmeddelande:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\[...]\paging.php on line 20
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\[...]\paging.php on line 40
Så här ser koden ut:
<?php
$sql = "SELECT id FROM bilder ORDER BY id DESC";
$result = mysql_query($sql,$connection);
$antal = mysql_result($result, 0); // rad 20
$inlaggPerSida = 2; // Välj antal inlägg per sida, minst 1
$antalPagLankar = 9; // Välj max antal visade paginglänkar
$pageNumbers = ceil($antal/$inlaggPerSida);
if (isset($HTTP_GET_VARS["page"])){
$page = $HTTP_GET_VARS["page"];
} else $page = 1;
if ($page > $pageNumbers) $page = $pageNumbers;
if ($page < 1) $page = 1;
$start = ($page-1) * $inlaggPerSida;
if ($pageNumbers > 1)
pagingList($page, $pageNumbers, $antalPagLankar, "left");
$sql = "SELECT id FROM bilder ORDER BY id DESC LIMIT $start,$inlaggPerSida";
$result = mysql_query($sql,$connection);
while ($row = mysql_fetch_array($result)){ // rad 40
// Kod för att skriva ut
$id = $row["id"];
}
echo "$id";
?>
Skulle någon kunna berätta hur man fick det att fungera? Jag vet inte var/hur jag ska lägga in "function pagingList() {" som det stod i inlägget innan.
Lägg denna kod antingen någonstans på sidan, eller (helst) lägg den i en egen fil och inkludera den.
<?php
/*
En funktion som ger sidlänkar i anslutning till utskrift från
textfil eller databas.
$page är vilken sida som är den aktuella.
$pageNumbers är antal sidor som utskriften är uppdelad på.
$numLinks är antal sidlänkar som ska visas.
$align är antingen 'left' eller 'right'. Pagingen justerad
höger eller vänster.
De variabler som finns i querystringen flyttas med
till nya sidor.
*/
function pagingList($page, $pageNumbers,
$numLinks, $align){
global $HTTP_SERVER_VARS, $HTTP_GET_VARS;
$file = $HTTP_SERVER_VARS['PHP_SELF'];
$getvar = "";
foreach($HTTP_GET_VARS as $key => $val){
if($key!="page") $getvar .= "&".$key."=".$val;
}
$startLink = $page - floor($numLinks/2);
if ($startLink<1) $startLink = 1;
$stopLink = $startLink + $numLinks -1;
if ($stopLink>$pageNumbers) $stopLink=$pageNumbers;
echo "<div class=\"paging\" style=\"text-align:$align\">\n";
if ($page>1){
echo "<a href=\"$file?page=1$getvar\" class=\"paging\" ";
echo "title=\"Första sidan\">«</a>";
} else echo "<span class=\"pagingDim\">«</span>";
if ($startLink > 1){
echo " ... ";
} else echo " -";
for ($i=$startLink; $i<=$stopLink; $i++){
if ($i != $page){
echo " <a href=\"$file?page=$i$getvar\" ";
echo "class=\"paging\">$i</a> ";
} else {
echo " <span class=\"pagingDim\">( $i )</span> ";
}
if ($i<$stopLink) echo "-";
}
if ($stopLink < $pageNumbers){
echo " ... ";
} else echo "- ";
if ($page<$pageNumbers){
echo "<a href=\"$file?page=$pageNumbers$getvar\" ";
echo "class=\"paging\" ";
echo "title=\"Sista sidan\">»</a>\n";
} else echo "<span class=\"pagingDim\">»</span>\n";
echo "</div>";
}
?>
Vill du ladda ner den som fil direkt kan du göra det här: pagfunc.php
Man skall alltså ha båda filerna på sidan? Den som du skrev nu, och sen efter den så ska man ha den som jag skrev? Jag testade iaf med det men får samma felmeddelande... Kan det ha något med inställningar å sånt att göra? Testade också att med
Edit:
Jag tror jag hade lite fel kod i mitt första test. Så här ser ALLT ut nu:
<?php
include_once ('pagfunc.php');
?>
<?php
$sql = "SELECT COUNT(*) FROM bilder";
$result = mysql_query($sql,$connection);
$antal = mysql_result($result, 0);
$inlaggPerSida = 4; // Välj antal inlägg per sida, minst 1
$antalPagLankar = 9; // Välj max antal visade paginglänkar
$pageNumbers = ceil($antal/$inlaggPerSida);
if (isset($HTTP_GET_VARS["page"])){
$page = $HTTP_GET_VARS["page"];
} else $page = 1;
if ($page > $pageNumbers) $page = $pageNumbers;
if ($page < 1) $page = 1;
$start = ($page-1) * $inlaggPerSida;
if ($pageNumbers > 1)
pagingList($page, $pageNumbers, $antalPagLankar, "left");
$sql = "SELECT id FROM bilder ORDER BY id DESC
LIMIT $start,$inlaggPerSida";
$result = mysql_query($sql,$connection);
while ($row = mysql_fetch_array($result)){
// Kod för att skriva ut
$id = $row["id"];
}
echo "$id";
?>
Jag fick scriptet scriptet att fungera (det med pagfunc-filen, som Matte tipsa om), men jag har 2 frågor! :)
Ett av värdena jag skickar i adressen skickas med
" . urlencode($rubrik) . "
Men pagfunc.php plockar ju upp allt med $getvar (tror jag det var) och så blir inte $rubrik i urlencode utan det blir massa %20 där det skall vara mellanslag, går detta att fixa på nåt sätt?
Sen också, kan man undvika att 1 - 2 - 3 - 4 osv skrivs ut Direkt på sidan där man har lagt in php-koden? Jag har kopierat in kodsnutten som skriver ut detta längre ner på sidan och det fungerar fint, men tar jag bort den biten ur första kodbiten så fungerar inte paging-funktionen.
$pageNumbers = ceil($antal/$inlaggPerSida);
Denna verkar skriva ut siffrorna och rubbet, kan man hejda den från att det skrivs ut direkt på sidan där jag lagt in php-koden?
Det var väldigt vad kod ni använder.. ;) §e
Så här gör jag med mySQL. Kommentera gärna.
<?php
/* Antal gästboksinlägg som skall visas åt gången */
$antal = 10;
/* Kollar upp hur många inlägg som finns i gästboken */
$antal_inlagg = @mysql_num_rows (mysql_query ("SELECT id FROM gastbok"));
/* Beräknar hur många sidor inläggen behöver delas upp på */
if (!isset($sida)) { $sida = 1; }
$sidantal = ceil($antal_inlagg/$antal);
$start = ($sida*$antal)-$antal;
/* Denna koden skapar massa länkar efter varandra: typ 01 02 03 04 05 06
Extra nollor skapas för att alla länkar skall ha lika många tecken. */
echo "Sida: ";
for ($i=1;$i<$sidantal+1;$i++)
{
$e = $i;
while (strlen($e) < strlen($sidantal)) { $e = "0".$e; }
if ($sida == $i) { echo "<b>$e</b> "; } else { echo "<a href=\"?sida=$i\">$e</a> "; }
}
/* Queryn som plockar fram inläggen */
$query = mysql_query("SELECT * FROM gastbok ORDER BY id DESC LIMIT $start, $antal");
?>
räknar bara ut hur många sidor det ska delas upp på. Den kod som skriver ut, och som du kan flytta, är:
if ($pageNumbers > 1)
pagingList($page, $pageNumbers, $antalPagLankar, "left");
Sen till urlencode. Något jag ärligt talat inte funderat på. Borde läggas till något om det. Det borde tills vidare gå att ändra i funktionen raderna:
foreach($HTTP_GET_VARS as $key => $val){
if($key!="page") $getvar .= "&".$key."=".$val;
}
till
foreach($HTTP_GET_VARS as $key => $val){
if($key!="page") $getvar .= "&".$key."=".urlencode($val);
}
Sen till Niklasson.
Självklart går allt att göra enklare. Detta var ett försök att täcka upp olika behov och problem i ett skript. Kan konstatera att jag ändå inte riktigt lyckats. :)
Använder det dock själv utan problem.
Niklasson... min kod är ganska jättefet för att jag är inte så vidare bra på att koda. Plus att den lägger till "..." om det är fler än 5 sidor framför eller bakom nuvarande sida så att det inte blir 100 länkar utan bara "<< ... 2 3 4 5 6 [7] 8 9 10 11 12 ... >>"... ;)
Niklasson: Cool... det tar jag som en komplimang :)
Btw... såg att du har gjort Mando Diaos sida... kul... roliga pojkar... om man träffade dem lite oftare dvs.
Webslave: Din kod fungerar mycket bra tycker jag.. Ett problem jag har bara är att om man inte skriver pagenumber efter filen så verkar scriptet tolka det som man är inne på sista sidan.. Inläggen från första sidan skrivs ut men sista sidan har hakparanteser runt.. Hur ska jag lösa det?? Har satt en if-sats som sätter pagenumber till 1 om det inte finns med i url:en men det fungerar inte ändå..