22. august 2003 - 16:17
Der er
6 kommentarer og
1 løsning
Opdeling af tagwall
Hey.. hvordan gør jeg sådan at jeg kun får vist f.eks. 5 posts ad gangen på min tagwall..? Det skal være sådan at den viser 5 posts ad gangen, og så kan man klikke frem og tilbage.. jeg har prøvet med mysql sætningen WHERE id='1' AND id='2' men den virker ikke.. så hva gør jeg..?
koden:
<?
$get=mysql_query("SELECT navn,dato,besked,id FROM tagwall WHERE id='1' ORDER BY id DESC ");
while($data=mysql_fetch_array($get)){
echo "<tr><td width=\"50%\"><font face=\"verdana\" size=\"2\"><b>$data[0]</b> - $data[1]<br>
$data[2]<br><br></td></tr>";
}
?>
22. august 2003 - 16:26
#2
Jeg har eks. lige lavet paging til et nyhedsarkiv - hvor skidtet er smidt i nogle funktioner:
/**
* GetNewsSQL()
*
* {Funktion der udfra forskellige inputparametre genererer en passende sql-sætning til at hente udvalgte nyheder}
*
* @param integer $newsnumber - Antal nyheder der skal vises (0 henter alle nyheder)
* @param integer $daysold - Hvor mange dage gamle må de viste nyheder maksimalt være (0 er ubegrænset)
* @param boolean $paging - Skal der være "paging" på nyhedsvisningen - det bruges til at opdele mange nyheder på flere sider
* @param integer $page - Hvis der er "paging" skal vi også bruge det aktuelle sidenr som input
*/
function GetNewsSQL($newsnumber = 0, $daysold = 0, $paging = false, $page = 1) {
$sql = 'SELECT id, date, title, description FROM news ';
if ($daysold > 0) {
$sql .= "WHERE TO_DAYS(NOW()) - TO_DAYS(date) <= $daysold ";
}
$sql .= 'ORDER BY date DESC, id DESC';
if ($newsnumber > 0 && !$paging) {
$sql .= " LIMIT 0, $newsnumber";
}
elseif ($newsnumber > 0 && $paging) {
$sql .= " LIMIT ".($page-1)*$newsnumber.", $newsnumber";
}
return $sql;
} // end func GetNewsSQL
/**
* Document::CreatePaging()
*
* { Description }
*
* @param integer $linktxt - Den linktext der skal benyttes til at danne links - skal indeholde 3 stk. %s
* @param integer $total - Det samlede antal poster der skal pages over
* @param integer $currentpage - nuværende side - første side er side 1
* @param integer $perpage - hvor mange poster skal der vises per side
* @param integer $maxpagelinks - hvor mange sidelinks må der maks være på hver side af
*/
function CreatePaging($linktxt, $total, $currentpage = 1, $perpage = 5, $maxlinks = 11) {
// Calculate last possible page
$lastpage = ceil($total/$perpage);
// Calculate maxlinks
$maxpagelinks = (int) (($maxlinks-1)/2);
// Initialise array used for navigation text fragments
$navtxt = array();
// Link to first page
if ($currentpage - $maxpagelinks > 1) $navtxt[] = sprintf($linktxt, 'cid=12&page=1', 'Første side', '|<');
// Link to previous page
$navtxt[] = ($currentpage == 1) ? '<<' : sprintf($linktxt, 'cid=12&page='.($currentpage - 1), 'Forrige side', '<<');
// Links to "middle" pages - limited by maxpagelinks
for ($i = max(1, $currentpage - $maxpagelinks); $i <= min($currentpage + $maxpagelinks, $lastpage); $i++) {
$navtxt[] = ($i == $currentpage) ? "[$i]" : sprintf($linktxt, "cid=12&page=$i", "Side $i", "[$i]");
}
// Link to next page
$navtxt[] = ($perpage * $currentpage >= $total) ? '>>' : sprintf($linktxt, 'cid=12&page='.($currentpage + 1), 'Næste side', '>>');
// Link to last page
if ($currentpage + $maxpagelinks < $lastpage) $navtxt[] = sprintf($linktxt, "cid=12&page=$lastpage", 'Sidste side', '>|');
return $navtxt;
}
Eksempel på brug:
$page=isset($_GET['page']) ? $_GET['page'] : null;
$totalnews = $db->getOne('SELECT COUNT(*) FROM news');
$newssql = GetNewsSQL(5, 60, true, $page);
$navigationtext = implode(' ', CreatePaging('<a href="index.php?%s" title="%s">%s</a>', $totalnews, $page, 5));