WebslaveMedlem sedan maj 2002662 inlägg
Jag använder denna kod för att dela upp mina posts i olika sidor... någon som ser något knasigt i den?
<?PHP
$ppp = 10;
$list_sql = "SELECT postID FROM forum_posts WHERE post_topicID = '".$_GET['topicid']."'";
$list_result = mysql_db_query("$database","$list_sql");
$posts = mysql_num_rows($list_result);
$pages = ceil($posts/$ppp); // Räknar ut antalet sidor, avrundar uppåt
// Kollar vilken isda man är på och rättar till så att ingen kan skriva in ett för stort tal till $currentpage
if(empty($_GET["pagenumber"])){
$currentpage = $pages;
}
else{
$currentpage = $_GET["pagenumber"];
}
if($currentpage>$pages){
$currentpage = $pages;
}
// Bestämmer vilket första sidnummer som ska visas
$pages_start = $currentpage-3;
if($pages_start<1){
$pages_start=1;
}
// Bestämmer vilket sista sidnummer som ska visas
$pages_end = $currentpage+3;
if($pages_end>$pages){
$pages_end=$pages;
}
// Listar ut sidnummren
if(!($pages==1)){
echo "<a href=\"?page=forum&forumid=".$_GET["forumid"]."&topicid=".$_GET["topicid"]."&pagenumber=1\" class=\"link_normal\"><<-</a> ";
if($pages_start>1){
echo " ... ";
}
for($i=$pages_start; $i<=$pages_end; $i++){
if($i==$currentpage){
echo "<span class=\"text\">[".$i."]</span> ";
}
else{
echo "<a href=\"?page=forum&forumid=".$_GET["forumid"]."&topicid=".$_GET["topicid"]."&pagenumber=".$i."\" class=\"link_normal\">".$i."</a> ";
}
}
if($pages_end<$pages){
echo " ... ";
}
echo "<a href=\"?page=forum&forumid=".$_GET["forumid"]."&topicid=".$_GET["topicid"]."&pagenumber=".$pages."\" class=\"link_normal\">->></a>";
}
// Räknar ut vart posterna ska börja räknas ut
if($currentpage==1){
$start=0;
}
else{
$start=($ppp*$currentpage)-$ppp;
}
?>
Så här ser det ut när jag hämtar från db'n:
$post_sql = "SELECT forum_posts.*,users.* FROM forum_posts INNER JOIN users ON users.userID = forum_posts.post_posterID WHERE forum_posts.post_topicID = '".$_GET["topicid"]."' ORDER BY forum_posts.postID ASC LIMIT '$start','$ppp'";
Den fungerar jättebra tills vi kom upp i 35 sidor (341) posts... då var sida 35 tom... det skulle vara 1 posts på sida 35 men den låg sist på sida 34... JÄTTE irriterande. Och när vi skrivit så det blev 344 posts så hamnade en post på sida 35 när det skulle vara 4... hilfe hilfe.
PS... klaga på den fula koden kan man om det rör min fråga DS.
WebslaveMedlem sedan maj 2002662 inlägg
WebslaveMedlem sedan maj 2002662 inlägg
Är det verkligen ingen som kan se varför den helt plötsligt börjar räkna fel?!?!
MarcusMedlem sedan juli 2000470 inlägg
Gör om gör rätt :-D
Det är inget dumt förslag faktiskt. Gör du om det så kommer du snart inse vad du gjort för fel. (Jag orkar verkligen inte läsa igenom koden)
WebslaveMedlem sedan maj 2002662 inlägg
Hehe... ja det var ju ett alternativ :)
Fast om någon annan orkar läsa igenom koden så skulle det hjälpa liiiite mer ;)
MatteMedlem sedan aug. 20002 970 inlägg
Vet inte om det har någon betydelse, men du har skrivit så här i slutet av sql-satsen:
LIMIT '$start','$ppp'
$start och $ppp är heltal och ska inte ha några fnuttar runt sig. Prova om det gör någon skillnad om du skriver:
LIMIT $start,$ppp
WebslaveMedlem sedan maj 2002662 inlägg
Har jag redan testat... gör ingenting. Det som är konstigt är att den "missar" att räkna ut ett par poster tydligen. Om det är 356 poster så ska det vara 35 fulla sidor och 1 sida med 6 poster på... men det är endast 35 fulla sidor plus 1 sida med 3 poster på... och det är bara de långa topics'en som har detta problem... irriterande. Måste vara något i uträkningen...
WebslaveMedlem sedan maj 2002662 inlägg
Ingen som har någe idé???!!!???
MarcusMedlem sedan juli 2000470 inlägg
Som du säger... måste vara något i uträkningen. Då är jag lite på vad jag sa innan, gör om gör rätt. Nåja, sätt ut många debugtexter i koden så att du kan se lättare hur variablarna tilldelas. Det är nog mitt tips... tyvärr.
WebslaveMedlem sedan maj 2002662 inlägg
Jag vet hur de tilldelas... jag har gjort lite tester att räkna ut hur många poster som ska visas under en speciell sida och då fungerar det... men inte när jag använder den på sidan... kan det bli knasigt för att det helt enkelt är för många posts?
MarcusMedlem sedan juli 2000470 inlägg
Nej, det beror inte på att det är för många posts, i så fall skulle det inte bli fel just där.
Är du säker på att variablarna skickas/tas emot som de ska?
WebslaveMedlem sedan maj 2002662 inlägg
Jupp. Det är bara i den posten som det blir fel. Alla andra fungerar fint (de är mycket mindre) och det var inga problem föränn det blev ca 30 sidor (300 posts)
WebslaveMedlem sedan maj 2002662 inlägg
Ok... nu har jag rotat igenom koden och renskrivit den lite... blev ingen skillnad. Kom fram till att det inte verakr vara fel på själva koden utan på när den läser ifrån db'n... kan ni bevisa motsatsen så JÄTTE GÄRNA... jag är fortfarande lika galen på den här koden.