Gå til innhold

Neste side opplegg


Anbefalte innlegg

Skrevet

Hei!

 

Gjesteboka mi begynner å bli litt lang og jeg er ikke hellt sikker på hvordan jeg kan lager sånn f.eks Neste side>> eller <<Tilbake.

 

Noen tips på hvordan jeg kan lage det? Bruker mysql.

Videoannonse
Annonse
Skrevet
... Neste side>> eller <<Tilbake. .... Bruker mysql.

Du kan bruke LIMIT inni spørringa for å begrense antallet som skal returneres :)

Skrevet

Du finner sikkert noko om du søker på "paginator php" på google.

 

Ev. så kan du jo bruke gjestebok.php?range=(11,20) og berre vise innlegga frå 11-20 (velger du ut med sql). Då kan neste side peike til«?range(21,30)» osb.

Skrevet

Jeg kan sette på LIMIT men da kommer ikke ale innleggene med vettu. Men er ikke sikker på hvordan jeg skal få til det med å få f.eks ?rang=2 så viser den resten av innleggende der liksom.

 

Dårlig til å forklare jeg :p

Skrevet (endret)
Jeg kan sette på LIMIT men da kommer ikke ale innleggene med vettu. Men er ikke sikker på hvordan jeg skal få til det med å få f.eks ?rang=2 så viser den resten av innleggende der liksom.

 

Dårlig til å forklare jeg :p

Med limit: "SELECT col FROM table WHERE id >= start LIMIT 20;"

Uten limit: "SELECT col FROM table WHERE id >= start AND id <= stop;"

 

Edit: Dersom du har start på f.eks 20, og har slettet id 25, så vil limit gi deg 20 svar, men den andre vil kun gi deg 19 :) LIMIT er tingen!

Endret av pulse
Skrevet (endret)
Med limit: "SELECT col FROM table WHERE id >= start LIMIT 20;"

 

denne er heller ikke optimal ettersom den starter ved id. id trenger ikke være kronologiske tall.

 

måten å gjøre det på:

 

SELECT col FROM table LIMIT start, 20;

 

red:

 

skal du ha med total antall rader kan du gjøre:

 

SELECT col, COUNT(id) FROM table GROUP BY id LIMIT start,20;

red: denne er ubrukelig. count teller kun de resulterte radene.

 

(praktisk når du har pagination, for å kunne lage linker til alle sidene.)

Endret av grimjoey
Skrevet (endret)
SELECT col FROM table LIMIT start, 20;

smart(est)! =D

 

Edit: Begge grimjoey's forslag er bedre enn hva jeg kom med :)

Endret av pulse
Skrevet

Jeg skrev litt feil i forrige innlegg. for å få tak i total antall rader har man et par muligheter:

 

SELECT SQL_CONT_FOUND_ROWS col FROM table LIMIT start, 20;
SELECT FOUND_ROWS();

 

SELECT col, (SELECT COUNT(*) FROM table) FROM table LIMIT start, 20;

 

SELECT col FROM table LIMIT start, 20;
SELECT COUNT(*) FROM table;

 

Det finnes sikkert flere. Jeg ville gått for nr. 1 eller 3.

  • 2 uker senere...
Skrevet (endret)

Heisann!

 

Jeg finner ingen løsning på dette her jeg, enten så er jeg tom i hue eller så for jeg det ikke til.

Har noen et eksempel script? Hadde hvert flott!

Endret av dannyboy_1992_
Skrevet (endret)

create table news (

id int not null auto_increment,

title varchar (50),

navn varchar (50),

dato varchar (20),

nyhet text,

primary key (id)

);

 

Sånn ser den ut.

Endret av dannyboy_1992_
Skrevet (endret)

Klikk for å se/fjerne innholdet nedenfor

<?php

if ((isset($_GET['start'])) AND (is_int($_GET['start'])))

$start = $_GET['start'];

else

$start = 0;

$query = "SELECT title, navn, data, nyhet FROM news ORDER BY id LIMIT $start, 20;";

$result = mysql_fetch_array($query);

foreach ($result AS $key => $value)

{

// Print ut det du vil ha, som du vil ha det.

}

$key = $key + 1;

echo 'Neste side: <a href="siden.php?start='.$key.'">Neste</a>';

?>

Usj, skjulte den jeg, den er dårlig, men er kanskje ett skritt i riktig retning (ikke testet).

Endret av pulse
Skrevet (endret)

Ok, jeg har fått scripte til å funke:

if (isset($_GET['id'])) {
$start = $_GET['id'];
} else {
$start = 0;
}
$query = mysql_query("SELECT navn, innlegg FROM gu ORDER BY id DESC LIMIT ".$start.", 20;");
$result = mysql_fetch_array($query);
foreach ($result AS $key => $value) {
$screen = '';

while ($fetch = mysql_fetch_object($query)) {
	$screen .= '<div class="block">';
$screen .= ''.nl2br($fetch->innlegg).'<br>';
$screen .= '<i>Av:' . $fetch->navn . '</i>';
	$screen .= '</div><br>';
}

echo $screen;
}
$key = $key + 1;

echo 'Neste side: <a href="?side=gjestebok&id='.$key.'">Neste</a>';

Men det funker ikke helt som det skal, det er litt vanskelig å forklare hva som er feil. Men vis noen

erfarende ser en feil så bare rooop ut ;)

 

EDIT:

Dere kan teste på http://danandweb.net/index.php?side=gjestebok ..

Endret av dannyboy_1992_
Skrevet (endret)
$query = mysql_query("SELECT navn, innlegg FROM gu ORDER BY id DESC LIMIT ".$start.", 20;");

ah, DESC i spørringa gjør $key = $key + 1; blir feil. (fjern denne).

 

Inne i foreachen (f.eks etter screen = '';) legger du inn to nye linjer som følger:

if (!isset($next))

$next = $key;

 

Og så bytter du ut '.$key.' med '.$next.' i linken helt til slutt :)

Endret av pulse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...