webForumDet fria alternativet

Paging

17 svar · 462 visningar · startad av berget74

berget74Medlem sedan juni 20059 inlägg
#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;?\>
pettssonMedlem sedan jan. 2002777 inlägg
#2

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 :)

berget74Medlem sedan juni 20059 inlägg
#3

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!

aasahMedlem sedan mars 20033 451 inlägg
#4

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. :)

berget74Medlem sedan juni 20059 inlägg
#5

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;?>
berget74Medlem sedan juni 20059 inlägg
#6

Ingen som kan hjälpa mig?

aasahMedlem sedan mars 20033 451 inlägg
#7

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

berget74Medlem sedan juni 20059 inlägg
#8

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

aasahMedlem sedan mars 20033 451 inlägg
#9

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?

berget74Medlem sedan juni 20059 inlägg
#10

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?

aasahMedlem sedan mars 20033 451 inlägg
#11

Men det borde väl vara enkelt, eller var tänker jag fel?

$visaMax = 10;
$sidantal = min($visaMax, ceil($antal_inlagg/$antal));
berget74Medlem sedan juni 20059 inlägg
#12

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;?>
aasahMedlem sedan mars 20033 451 inlägg
#13

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.

berget74Medlem sedan juni 20059 inlägg
#14

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;?>
fiddlerMedlem sedan juli 20022 464 inlägg
#15

Saknas det inte ett kommatecken före $conn i din mysql_query?

aasahMedlem sedan mars 20033 451 inlägg
#16

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?

berget74Medlem sedan juni 20059 inlägg
#17

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?

aasahMedlem sedan mars 20033 451 inlägg
#18

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!

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb