Frågan 16 juni 2005 06:56 #1 Skulle behöva hjälp med hur man fixar så att det går att spärra antalet sidor som visas på forumet. Idag läggs till det till en ny sida efter hand som inläggen uppkommer på formumet men skulle alltså vilja låsa det. Någon som kan hjälpa mig? Tacksam för alla hjälp!
\<?if ($antal_inlagg \> $antal) {
//############ Sidnavigering start ##################
if ($sida \> 1){
$sida1 = $sida-1;
echo '\<a href="?sida='.$sida1.'"\>\<b\>«\</b\>\</a\> \| ';
}
for ($i=1;$i\<$sidantal+1;$i++){
$e = $i;
while (strlen($e) \< strlen($sidantal)) { $e = "0".$e; }
if ($sida == $i) { echo "\<font color=\\"#000000\\"\>\[\<b\>$e\</b\>\]\</font\> "; } else { echo "\<a href=\\"?sida=$i\\"\>$e\</a\> "; }
}
if ($sida \<= $sidantal - 1){
$sida2 = $sida+1;
echo ' \| \<a href="?sida='.$sida2.'"\>\<b\>»\</b\>\</a\>';
}
//############ Sidnavigering slut ##################
}?\>
samt:
\<?$sida = $\_GET\["sida"\];
if (!isset($sida)) { $sida = 1; }
$antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
$sidantal = ceil($antal_inlagg/$antal);
$start = ($sida\*$antal)-$antal;
$sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida" $conn);
if ($antal_inlagg \> $antal) {
$pages = '\<br\>\<select class=arkiv name=links onChange="self.location.href=this.options\[this.selectedIndex\].value;"\>' . "\\n";
while ($cur_page++ \< $sidantal) {
$start_records = ($cur_page\*$antal)-($antal-1);
$end_records = $start_records+($antal-1);
if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
$pages .= '\<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '\>Inlägg ' . $start_records . '-' . $end_records . '\</option\>' . "\\n";
}
$pages .= '\</select\>' . "\\n";
}
echo $pages;?\>
P pettsson Medlem sedan jan. 2002 1 122 inlägg Först och främst: Välkommen till wF!
Man göra det lite lättare för folk att hjälpa en genom att innesluta kod i [ kod] och [ /kod] block, då blir den mer lättläst.
Paging har det också frågats mycket om, pröva forumets utomordentliga sök-funktion. Hittar du inte något som hjälper dig, återkom då då finns det mängder av duktiga medlemmar som gärna hjälper till :)
Tack! Har sökte igenom i flera timmar efter mitt problem innan jag bestämde mig för att skapa en ny tråd.
Ska tänka på [kod] nästa gång.
Ingen som har lösningen på mitt problem?
Tacksam för all hjälp!
A aasah Medlem sedan mars 2003 4 471 inlägg Om du vill att nån ska kika på din kod, så lägg den inom [ php]-taggar (utan mellanslag mellan [ och php).
Annars har Kjell ett bra skript som jag använder själv. :)
Ett bra ställe att leta efter färdiga skript i är Skript - PHP vilket återfinns längst ner på samma sida som länken till detta PHP-forum. :)
Bättre nu?
<?if ($antal_inlagg > $antal) {
//############ Sidnavigering start ##################
if ($sida > 1){
$sida1 = $sida-1;
echo '<a href="?sida='.$sida1.'"><b>«</b></a> | ';
}
for ($i=1;$i<$sidantal+1;$i++){
$e = $i;
while (strlen($e) < strlen($sidantal)) { $e = "0".$e; }
if ($sida == $i) { echo "<font color=\"#000000\">[<b>$e</b>]</font> "; } else { echo "<a href=\"?sida=$i\">$e</a> "; }
}
if ($sida <= $sidantal - 1){
$sida2 = $sida+1;
echo ' | <a href="?sida='.$sida2.'"><b>»</b></a>';
}
//############ Sidnavigering slut ##################
}?>
<?$sida = $_GET["sida"];
if (!isset($sida)) { $sida = 1; }
$antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
$sidantal = ceil($antal_inlagg/$antal);
$start = ($sida*$antal)-$antal;
$sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida" $conn);
if ($antal_inlagg > $antal) {
$pages = '<br><select class=arkiv name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
while ($cur_page++ < $sidantal) {
$start_records = ($cur_page*$antal)-($antal-1);
$end_records = $start_records+($antal-1);
if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
$pages .= '<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '>Inlägg ' . $start_records . '-' . $end_records . '</option>' . "\n";
}
$pages .= '</select>' . "\n";
}
echo $pages;?>
Ingen som kan hjälpa mig?
A aasah Medlem sedan mars 2003 4 471 inlägg Re: Paging
Jag är rädd att jag läste slarvigt igår... trodde du ville ha ett pagingskript. :r
berget74 skrev:
Skulle behöva hjälp med hur man fixar så att det går att spärra antalet sidor som visas på forumet. Idag läggs till det till en ny sida efter hand som inläggen uppkommer på formumet men skulle alltså vilja låsa det. Någon som kan hjälpa mig? Tacksam för alla hjälp!...
Jag är rädd att jag inte riktigt fattar vad du menar? :q Låsa hur? När ska det läggas till och inte? Vad är "gränsen" för vad som ska visas? :q
Det ska alltså gå att ställa antalet sidor bakåt i tiden.
Exempel:
< 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 >
Och alltså inte som nu läggas till per automatik vilken får till följd att sidan flippar ut.
Mvh,
Mattias
A aasah Medlem sedan mars 2003 4 471 inlägg Du menar att du vill alltid visa tex de 5 sista sidorna? Så om det finns 7 sidor så ska man kunna välja på 3 4 5 6 7? Har jag fattat rätt?
Nope, senaste sidan är alltid "1". Klickar man på "1" så visas alltså de 50 senaste inläggen. Vill alltså att den ska sluta skriva ut sidnummer efter ett förbestämt antal, exempelvis 10 sidor. Tips på hur man fixar det?
A aasah Medlem sedan mars 2003 4 471 inlägg Men det borde väl vara enkelt, eller var tänker jag fel?
$visaMax = 10;
$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
Får det inte att funka tyvärr.
Får fel på följande rad:
$sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida, $visaMax" $conn);
<?$sida = $_GET["sida"];
if (!isset($sida)) { $sida = 1; }
$antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
$start = ($sida*$antal)-$antal;
$sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida, $visaMax" $conn);
if ($antal_inlagg > $antal) {
$pages = '<br><select class=arkiv name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
while ($cur_page++ < $sidantal) {
$start_records = ($cur_page*$antal)-($antal-1);
$end_records = $start_records+($antal-1);
if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
$pages .= '<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '>Inlägg ' . $start_records . '-' . $end_records . '</option>' . "\n";
}
$pages .= '</select>' . "\n";
}
echo $pages;?>
A aasah Medlem sedan mars 2003 4 471 inlägg Du missförstod.
$visaMax ska inte in i SQL-satsen. Utan se till att den variabel som innehåller maxvärdet av vad du ska hämta får minvaärdet av allt och $visaMax.
Har testat båda delarna, tror jag. Är inte detta som du menar?
<?$sida = $_GET["sida"];
if (!isset($sida)) { $sida = 1; }
$antal_inlagg = mysql_num_rows(mysql_query("Select forumID From mete_forum"));
$visaMax = 10;
$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
$start = ($sida*$antal)-$antal;
$sql = mysql_query("SELECT datum,inlagg,namn,email FROM mete_forum Order By forumID desc LIMIT $start, $antal, $sida" $conn);
if ($antal_inlagg > $antal) {
$pages = '<br><select class=arkiv name=links onChange="self.location.href=this.options[this.selectedIndex].value;">' . "\n";
while ($cur_page++ < $sidantal) {
$start_records = ($cur_page*$antal)-($antal-1);
$end_records = $start_records+($antal-1);
if ($cur_page== $sida ) { $selected_page = ' selected'; } else { $selected_page = ''; }
$pages .= '<option value="forum_sok.php?sida=' . $cur_page . '"' . $selected_page . '>Inlägg ' . $start_records . '-' . $end_records . '</option>' . "\n";
}
$pages .= '</select>' . "\n";
}
echo $pages;?>
fiddler Medlem sedan juli 2002 3 617 inlägg Saknas det inte ett kommatecken före $conn i din mysql_query?
A aasah Medlem sedan mars 2003 4 471 inlägg fiddler har rätt. Det borde vara:
$sql = mysql_query("SELECT .... LIMIT $start, $antal, $sida", $conn);
Kan LIMIT verkligen ta tre argument? Vad innebär dessa tre?
Tack, nu funkar det men tyvärr så får jag nu ett fel på andra raden på:
<?}else{
while($RS = mysql_fetch_assoc($sql)) {?>
Får även ett "s" längst upp i vänstra hörnet, fattar inte varför, något som vet?
A aasah Medlem sedan mars 2003 4 471 inlägg s:et måste betyda att du någonstans skriver ut ett 's'. Antingen har du ett s utanför PHP-koden, eller så skriver du ut någon variabel som innehåller 's'.
Nu ser man ju inte hela koden, så du kanske har ett skumt variabelnamn, men tja... Det är INTE SQL-frågan du skickar till mysql_fetch-funktionerna utan resultathandtaget. Alltså:
$sql = "SELECT * FROM Tabell"; //tex
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
Om det inte var detta som var felet, posta felmeddelandet!