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?? :)
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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 ."&". $getvar ."="; }else{ $qlink = "?". $getvar ."="; } if(!isset($_GET[$getvar]) || !is_numeric($_GET[$getvar]) || $_GET[$getvar] < 0) { $back = " "; $next = make_link($qlink . $antalviste, "næste") ." ". 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, "<<") ." ". make_link($linket, "forrige"); if(($_GET[$getvar]+$antalviste) >= $ialt) { $next = " "; $info = ($_GET[$getvar]+1) ." - ". $ialt ." af ". $ialt; }else{ $next = make_link($qlink . ($_GET[$getvar]+$antalviste), "næste"); if($_GET[$getvar] < ($ialt-$antalviste)) { $next = $next ." ". 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
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());
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 :)
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
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 ."";
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...........
06. marts 2005 - 15:30
#7
Okay, langt om længe har jeg fået det til at virke :) Svar = point Takker ;)
06. marts 2005 - 15:35
#8
Ja, ok, og du fandt den bøf med "toHtml()" i make_link() ? :O)
Vi tilbyder markedets bedste kurser inden for webudvikling