Avatar billede vels Nybegynder
10. juli 2001 - 21:09 Der er 15 kommentarer og
1 løsning

Side: 1 2 3

Hej

Er der nogle der kan hjælpe mig med at lave en funktion så man i bunden af en side kan få:

Side 1 2 3 4

Jeg ved det er noget med at count alle poster i mysql databasen, men så ved jeg ikke lige hvordan man kommer vidre med det tal... nogle ideer?
Avatar billede vels Nybegynder
10. juli 2001 - 21:12 #1
Min tabel struktur er:

id | katid | sti | billede | tekst

Og her er den der skal bruges til at tælle poster med:
mysql_query(\"SELECT COUNT(*) AS ANTAL FROM picture WHERE katid = $HTTP_GET_VARS[katid]\");
Avatar billede wizprod.com Nybegynder
10. juli 2001 - 21:18 #2
Divider med antalet af sider du vil have på hver side..... så har du fået lidt hjælp :-)
Avatar billede emulatorspil.dk Nybegynder
10. juli 2001 - 21:19 #3
tjek www.delfs.dk Han har et færdigt script.
Avatar billede barefoot Nybegynder
10. juli 2001 - 21:23 #4
Sådan finder du antallet af poster i tebellen:
$antal = mysql_query(\"SELECT COUNT(*) AS antal FROM\");
$antal = $mysql_fetch_assoc($antal);
$antal = $antal[antal];

Så dividerer du som wizprod.com siger og laver en limit i din sql query
Avatar billede logan-raarup Nybegynder
10. juli 2001 - 21:23 #5
Divider med det antal du vil have på hver side, og rund af med round($variabelnavn);
Så simpelt er det :)
Avatar billede vels Nybegynder
10. juli 2001 - 21:30 #6
yes yes, men hvordan får jeg lavet side 1 2 3 4 5 6 osv..?

Jeg har et system hvor jeg bare har med en frem og tilbage knap med en limit på 3 billeder af gangen, nu kunne jeg godt tænke mig at man kunne trykke så man ser side f.eks. 7 i stedet for man skal trykke næste og næste osv....
Avatar billede barefoot Nybegynder
10. juli 2001 - 21:36 #7
Når du har divideret får du jo antallet af sider.

for($i=0; $i<=$antal_sider; $i++){
    echo \'<href=\"vis.php?side=\'.$i.\'\">Side \'.$i.\'</a>\';
}
Avatar billede vels Nybegynder
10. juli 2001 - 21:52 #8
ok... tror jeg er ved at fatte lidt... men hvad er $i i mit tilfælde....?
Avatar billede barefoot Nybegynder
10. juli 2001 - 21:59 #9
$i er ikke noget.
Det bliver bare brugt til at tælle antallet af sider i for-løkken.
$antal_sider indeholder antallet af sider som du skal bruge for at vise hele indholdet af databasen.

$antal_sider = $antal_poster_i_tabellen / $antal_poster_pr_side;
Avatar billede vels Nybegynder
10. juli 2001 - 22:41 #10
Hej
det virker :)

Men hvordan får jeg funktionen til at lade være med at starte med side0?

(Barefoor giv lige et svar så du kan få points)
Avatar billede vels Nybegynder
10. juli 2001 - 22:49 #11
for hvis man sætter $i=1 så kommer der til at mangle en side.... :(
Avatar billede barefoot Nybegynder
10. juli 2001 - 23:02 #12
Der skal vel kun stå nummeret på alle de sider som man ikke er på ikke?

if(!$side){
  $start_sted = 0;//Hvis man kommer til siden og vil se første side
}
else{
  $start_sted = $side+1;
}
via $start_sted bestemmer du hvor i din database du vil starte..
$limit_start = $start_sted * $antal_poster_pr_side;

Så bruger du $limit_start i din mysql_query til at bestemme hvor den skal starte.

for($i=1; $i<=$antal_sider; $i++){
    if($side!=$i){//udskriver ikke den side som man er på
        echo \'<href=\"vis.php?side=\'.$i.\'\">Side \'.$i.\'</a>\';
    }
}
Avatar billede coolby Nybegynder
10. juli 2001 - 23:31 #13
<?php

$pr_side = \"5\"; //Definerer antal resultater pr. side

mysql_connect(\"localhost\",\"root\");
mysql_select_db(\"databaser\");

if(!isset($s)){
    $s = \"0\"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den
}

echo \"<table border=\'1\'>\\n\";
echo \"<tr><td>Id</td><td>Bogstav</td></tr>\\n\";

$query = mysql_query(\"select * from tagwall order by id asc limit $s,$pr_side\") or die(mysql_error());

while($row = mysql_fetch_array($query)){
    echo \"<tr><td>$row[id]</td><td>$row[besked]</td</tr>\\n\";
}

echo \"<tr><td colspan=\'2\'>\";

$g_total = mysql_query(\"select count(id) as total from tagwall\") or die(mysql_error());
$total = mysql_result($g_total,0);

##
#Find ud af om derskal være et Forrige link
##
if($s >= $pr_side){    //Tjekker om værdien af $s er større eller lig $pr_side
    $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes
    echo \"<a href=\'?s=$previous_s\'>Forrige</a> \"; //Udskriver linket
}

##
#Find ud af hvis/hvor mange sider der er rows til
##
$page=1; //Definerer hvor sidetal skal starte
for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere
    if($start != $s){ //Tjekker om linket vil komme til at pege på den side man er på
        echo \"<a href=\'?s=$start\'>$page</a> \"; //...hvis ikke, udskrives link med værdien af $page
    }
    else{ //Ellers, dvs. hvis linket vil pege på den side man er på..
        echo \"$page \"; //...udskrives værdien af $page bare, altså ikke som link
    }
    $page++; //Lægger en til $page til næste gang løkken køres
}

##
#Find ud af om der skal være et næste link
##
if($total > $s+$pr_side){ //Tjekker om der er flere sider
    $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes
    echo \"<a href=\'?s=$next_s\'>Næste</a>\"; //Udskriver linket \"næste\"
}

echo \"</td></tr>\\n\";
echo \"</table>\\n\";
?>

Avatar billede barefoot Nybegynder
11. juli 2001 - 02:24 #14
vels => fedt at du selv fandt ud af det:-)
Det er så meget federe end når folk bare vil have en færdig løsning...
Avatar billede vels Nybegynder
11. juli 2001 - 12:59 #15
Det er jo det :) Jeg havde et system der virkede, men manglede bare at add side 1 2 3 funktionen, jeg gad nemlig ikke til at lave database og design om osv. :)
Avatar billede barefoot Nybegynder
11. juli 2001 - 13:02 #16
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester