webForumDet fria alternativet

Problem med nästa & föregående navigering

PHP

8 svar · 223 visningar · startad av Elric

Medlem sedan jan. 200246 inlägg
Frågan#1

Hej,
Jag använder denna kod för att generera nästa & föregående navigering på en sida.
Koden:

<html>
<body>
<?
//connect to database
$link_id = mysql_connect("localhost","root");
$db = mysql_select_db("test");

//see how many total rows are in table
$query = "SELECT COUNT(*) FROM names";
$result = mysql_query($query);
$count = mysql_result($result,0);

//reset $page. make sure someone doesn't
//set it below zero in the url
if(!isset($page) &#0124;&#0124; $page < 0)
{
    $page = 0;
}

//records per page
$per_page = 5;
//starting record for this page
$start = $page * $per_page;

if($start > $count)
{
    echo "No more records<BR>\n";
    $page = ceil($count / $per_page);
}
else
{
    $query = "SELECT name,age FROM names ORDER BY id ASC LIMIT $start,$per_page";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result))
    {
        echo $row[name] . " -- ";
        echo $row[age] . "<BR>\n";
    }
}
if($page > 0)
{
    $prev = $page - 1;
    echo "<a href='$PHP_SELF?page=$prev'><<Prev</a><BR>\n";
}
if($start + $per_page < $count)
{
    $next = $page + 1;
    echo "<a href='$PHP_SELF?page=$next'>Next>></a><BR>\n";
}
?>
</body>
</html>

MySQL tabellen ser ut så här:

+----+--------+------+
&#0124; id &#0124; name   &#0124; age  &#0124;
+----+--------+------+
&#0124;  1 &#0124; John   &#0124;   25 &#0124;
&#0124;  2 &#0124; George &#0124;   23 &#0124;
&#0124;  3 &#0124; Fred   &#0124;   45 &#0124;
+----+--------+------+

(Jag har såklart andra tebeller och variabler, så här såg skriptet ut som orginal)

Problemet är att jag vill sortera länkarna i alfabetisk ordning och inte efter 'id' variabeln

Exempel: Länkarna ordnas nu så här, id=1, id=2, id=3 etc, men jag vill ha dom ordnade efter tabellen 'name', alltså så att dom kan bli så här, id=3, id=2, id=4 etc i alfabetisk ordning.

Jag har testat att lägga till "ORDER BY name" i select men det hjälper inte. Går det att göra med detta skript?

[Redigerat av Elric den 31 jan 2002]

Medlem sedan mars 20007 896 inlägg
#2
SELECT name,age FROM names ORDER BY name ASC LIMIT $start,$per_page

Det bör fungera.

------------------
SPiN, bjorne.w@telia.com

Medlem sedan jan. 200246 inlägg
#3

Nej, har redan testat det och det funkar inte.

Om jag tex är på sidan med 'id=2' och name=Boris, så är föregående länken 'id=1', 'name=Nicklas' och nästa länken 'id=3', 'namne=Arne'.

Jag vill ha det så här:
Är på sidan med 'id=2', 'name=Boris'
Föregående länken 'id=3', 'namne=Arne
Nästa länken 'id=1', 'name=Nicklas'

Hoppas ni förstår vad jag menar :q

Medlem sedan mars 20007 896 inlägg
#4

Jadå, jag förstår. Men det finns inget enkelt sätt annars att göra det på, så är du säker på att du skrev precis som jag gjorde?

------------------
SPiN, bjorne.w@telia.com

Medlem sedan jan. 200246 inlägg
#5

Jodå jag har testat med olika sorteringar nu några hundra ggr, men har inte fått det att funka, kanske måste ha med 'name' variabeln i länken för att det skall funka tex "sida.php?id=1&name=Boris" ?

Medlem sedan mars 20007 896 inlägg
#6

Vilken länk? I koden ovan så hade du endast länk till samma sida, där pagingen fortsatte!

------------------
SPiN, bjorne.w@telia.com

Medlem sedan jan. 200246 inlägg
#7

Glöm det, det var bara jag som funderade lite ;)

Medlem sedan jan. 200246 inlägg
#8

Jag lyckades lösa problemet, tack för hjälpen :)

Medlem sedan mars 20007 896 inlägg
#9

Vad var det som var fel? :)

------------------
SPiN, bjorne.w@telia.com

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)