Avatar billede dingkee Nybegynder
06. marts 2005 - 12:46 Der er 7 kommentarer og
1 løsning

Opdel i flere sider

Hej alle...

Jeg søger et script, som kan dele mit udtræk over flere sider...

Dvs.

Jeg trækker nogle informaioner ud af en database, og jeg vil kun have listet 5 udtræk pr. side.

Hvis der så er flere udtræk end 5 skal den dele det over flere sider. Altså med en bar i bunden hvor der står næste/forrige side, og så antal af sider...

Nogen der har sådan et script liggende?? :)
Avatar billede sukos Juniormester
06. marts 2005 - 13:17 #1
Der er godt nok mange spm. om paging! :O)

En måde:

<?php

function make_link($getvar, $tx, $filnavn="", $class="") {
if(empty($filnavn)) {
$filename = $_SERVER["PHP_SELF"];
}else{
$filename = $filnavn;
}
return "<a href=\"". $filename . $getvar ."\" class=\"". $class ."\">". toHtml($tx) ."</a>";
}

function make_sublinks($antalviste, $ialt, $getvar, $qstring="") {

if($ialt > $antalviste) {

if(isset($_GET[$getvar]) && $_GET[$getvar] >= $ialt) {
return;
}

if(!empty($qstring)) {
$qlink = $qstring ."&amp;". $getvar ."=";
}else{
$qlink = "?". $getvar ."=";
}

    if(!isset($_GET[$getvar]) || !is_numeric($_GET[$getvar]) || $_GET[$getvar] < 0) {
    $back = "&nbsp;";
    $next = make_link($qlink . $antalviste, "næste") ." &nbsp; ". make_link($qlink . ($ialt-$antalviste), ">>");
    $info = "1 - ". $antalviste ." af ". $ialt;
    }else{
    $info = ($_GET[$getvar]+1) ." - ". ($_GET[$getvar]+$antalviste) ." af ". $ialt;

        if($_GET[$getvar] <= $antalviste) {
        $linket = $qstring;
        }elseif($_GET[$getvar] >= $ialt) {
        $linket = $qlink . ($ialt-$antalviste);
        }else{
        $linket = $qlink . ($_GET[$getvar]-$antalviste);
        }
        $back = make_link($qstring, "<<") ." &nbsp; ". make_link($linket, "forrige");

        if(($_GET[$getvar]+$antalviste) >= $ialt) {
        $next = "&nbsp;";
        $info = ($_GET[$getvar]+1) ." - ". $ialt ." af ". $ialt;
        }else{
        $next = make_link($qlink . ($_GET[$getvar]+$antalviste), "næste");
            if($_GET[$getvar] < ($ialt-$antalviste)) {
            $next = $next ." &nbsp; ". make_link($qlink . ($ialt-$antalviste), ">>");
            }
        }
    }

echo"<table width=\"400\" border=\"0\" align=\"center\"><tr>\n";
echo"    <td width=\"33%\" class=\"small\">". $back ."</td>\n";
echo"    <td width=\"34%\" class=\"small\" align=\"center\">". $info ."</td>\n";
echo"    <td width=\"33%\" class=\"small\" align=\"right\">". $next ."</td>\n";
echo"</tr></table>";
    }
}

make_sublinks(5, 36, "vis");

echo"<p>";

make_sublinks(10, 13, "next", "?getvar=en_mere")

?>

make_sublinks($antalviste, $ialt, $getvar, $qstring="")

$antalviste = hvor mange der skal vises pr. side.
$ialt = det samlede antal til visning
$getvar = den $_GET variabel som viser poster
$qstring = eventuelle andre $_GET variabler
Avatar billede sukos Juniormester
06. marts 2005 - 13:26 #2
Så laver du først en query som henter det antal poster som der er i DB'en

$all = mysql_query("SELECT COUNT(id) FROM `table`") or die (mysql_error());
$antal = mysql_result($all, 0);
mysql_free_result($all);


dernæst tjekker du om næste side er sat:

if(!isset($_GET["vis"]) || !is_numeric($_GET["vis"])) {
$start = 0;
}else{
    if($_GET["vis"] >= $antal) {
    $start = $antal-1;
    }else{
    $start = $_GET["vis"];
    }
}

$per_side = 5;

$getinfo = mysql_query("SELECT * FROM `table` LIMIT ". $start .",". $per_side ."") or die (mysql_error());
Avatar billede dingkee Nybegynder
06. marts 2005 - 14:08 #3
Okay, det kan jeg ikk finde hoved og hale i det her :)

Kan vi prøve at gøre det med min kode??

$kundemail = "SELECT * FROM `cs-mail` WHERE username = '" . $bruger . "'";
$result1 = mysql_query($kundemail) or die (mysql_error());
while($r1 = mysql_fetch_array($result1)) {
$mail = $r1["mail"];
$password = $r1["password"];
$aktiv = $r1["aktiv"];
if( $r1["aktiv"] == "ja" )
  $r1["farve"] = "#000000";
else
  $r1["farve"] = "#ff0000";
echo"
                                    <tr>
                                        <td colspan=\"4\" style=\"height:10px;background-image: url(images/dot.gif);background-repeat: repeat-x;background-position: center\"></td>
                                    </tr>
                                    <tr>
                                        <td style=\"vertical-align: top;width:75px\">Mail:</td>
                                        <td style=\"vertical-align: top\"><a style=\"color: " . $r1[farve] . "\" href=\"kunde.php?design=mailrediger&id=" . $r1[id] . "\">" . $r1[mail] . "@$domane</a></td>
                                        <td style=\"vertical-align: top\">Aktiv: $aktiv</td>
                                        <td style=\"vertical-align: top\"><a href=\"kunde.php?design=mailrediger&id=" . $r1[id] . "\">Rediger</a></td>
                                    </tr>
                                    <tr>
                                        <td style=\"vertical-align: top;width:75px\">Password:</td>
                                        <td colspan=\"3\" style=\"vertical-align: top\">" . $r1[password] . "</td>
                                    </tr>
";

Når den har kørt den her 5 gange, skal der komme en næste side :)
Avatar billede sukos Juniormester
06. marts 2005 - 14:15 #4
Du vælger vel kun et row? WHERE username = '". $bruger ."'"
Anyway, så skal du jo ha' limit på, for kun at vælge et vist antal fra din DB
Avatar billede dingkee Nybegynder
06. marts 2005 - 14:20 #5
der kan godt være f.eks. 10 hvor username er det samme...

Men så skal jeg ha lagt en limit ind i sql strengen??

Nogenlunde sådan her:
$kundemail = "SELECT * FROM `cs-mail` WHERE username = '" . $bruger . "' LIMIT ". $start .",". $per_side ."";
Avatar billede sukos Juniormester
06. marts 2005 - 14:24 #6
Som sagt tidligere, skal du jo finde ud af hvor mange der er i din db
Dernæst skal du tjekke om der er sat en "vis næste side", og ud fra det definere $start og $per_side, som så bruges i den query som selecter til visning...........
Avatar billede dingkee Nybegynder
06. marts 2005 - 15:30 #7
Okay, langt om længe har jeg fået det til at virke :)

Svar = point


Takker ;)
Avatar billede sukos Juniormester
06. marts 2005 - 15:35 #8
Ja, ok, og du fandt den bøf med "toHtml()" i make_link() ? :O)
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