Avatar billede frustrator Nybegynder
26. marts 2006 - 07:50 Der er 7 kommentarer og
1 løsning

Paging til nyhedsarkiv

Aaaargh, jeg har snart forsøgt mig med utallige former for scripts til paging i PHP - både her fra Eksperten, men også andre sites - men kan bare ikke rigtigt få det til at virke. Som det er nu, listes alle nyheder i mit arkiv på én side, men det skulle gerne ende med noget á la 20-25 "headlines" pr. side + links frem/tilbage.

Jeg har en del features, jeg gerne vil have med i oversigten, og vil også gerne bevare det nuværende layout. Min kode ser pt. således ud:

                <?
mysql_connect ("minhost", "mindb", "mitpass") or die(mysql_error());
mysql_select_db ("mindb") or die(mysql_error());

$sqlquery = "SELECT Teaser, Id, Overskrift, SmallPic, News FROM v2_news WHERE News LIKE '$News' ORDER BY Id DESC";
$result = mysql_query($sqlquery);

echo "<table align=center border=0>";
while($row = mysql_fetch_array($result)) {
extract($row);
echo "<tr><td valign=top width=52 rowspan=2><div align=center><a href='http://ultimative-80ere.dk/v2/content/shared/artikel.php?Id=$row[Id]'>$SmallPic</a></td>\n";
echo "<td width=12></td>\n";
echo "<td><p><strong><a href='/v2/content/shared/artikel.php?Id=$row[Id]' class=mere>$Overskrift</a></strong></p></td>\n";
echo "  <tr><td>&nbsp;</td>\n";
echo "<td valign=top><p>$Teaser ...</a></p></td>\n";
echo "</tr>\n";
echo "<tr><td colspan=3></td>\n";
echo "</tr>\n";
}

echo "</table>";
?>

Nogen der har et godt, brugbart bud?
Avatar billede jakobdo Ekspert
26. marts 2006 - 11:05 #1
Prøv at se koden her: http://www.codebreaker.dk/exp/697375.php
Den burde nemt kunne tilpasses dine behov.
Avatar billede gf Nybegynder
26. marts 2006 - 13:40 #2
Hej

her er et script fundet her på Eksperten.

<?php
include("conn.php");

// Indstillinger
$offset = (isset($_GET[offset])) ? $_GET[offset] : 0; // Hvis ikke offset er sat, sættes den til 0
$pr_side = 5; // Antal resultater pr. side

$query = mysql_query("SELECT * FROM downloads WHERE kategori = 'Opgaver' ORDER BY downloads DESC LIMIT $offset, $pr_side"); // Henter poster fra tabellen "tabel"
while ($row = mysql_fetch_assoc($query))
{
    echo "<a href='$row[titel]'>$row[titel]</a><br>"; // Udskriver felter fra tabellen
}
?>
<hr>
<?php
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM downloads WHERE kategori = 'Opgaver'"), 0); // Tæller antal poster i tabellen "tabel"

$side = $offset/$pr_side +1;
$antal_sider = ceil(1.0 * $antal / $pr_side);

if ($offset >= $pr_side)
{
    // Tester om det er nødvendigt med et "forrige-link"
    $forrige = $offset - $pr_side; // Finder ud af hvor forrige skal starte fra
    echo "<a href='?offset=$forrige'>Forrige</a> "; // Udskriver link
}

echo "Side " . $side . " af " . $antal_sider;

if ($antal > $offset+$pr_side)
{
    // Tester om det er nødvendigt med et "næste-link"
    $naeste = $offset + $pr_side; // Finder ud af hvor næste skal starte fra
    echo "<a href='?offset=$naeste'>Næste</a>"; // Udskriver link
}
?>

mvh gf
Avatar billede frustrator Nybegynder
26. maj 2006 - 14:46 #3
Tråd lukket
Avatar billede jakobdo Ekspert
26. maj 2006 - 14:56 #4
Fordi ?
Avatar billede frustrator Nybegynder
26. maj 2006 - 15:04 #5
Fordi problemet blev løst på egen hånd...

http://ultimative-80ere.dk/v2/content/shared/arkiv.php?News=Yes

Derfor :o)
Avatar billede jakobdo Ekspert
26. maj 2006 - 15:15 #6
Egen hånd, du gav jo ikke noget respons, ufattelig dårlig opførsel.
Avatar billede gf Nybegynder
27. maj 2006 - 21:20 #7
Hej

Jeg er helt enig med jacobdo. Undskyld vi prøver at hjælpe!!!! God skik er, at poste løsningen her på eksperten så fremtidige brugere kan gøre brug af løsningen.

mvh gf
Avatar billede frustrator Nybegynder
28. maj 2006 - 10:51 #8
Well, skal da beklage, hvis nogle har følt sig trådt over tæerne. Løsningen på problemet kom fra en bekendt, men fik aldrig postet det her - det beklager jeg. Det ser ud som følger:

<?php
mysql_connect("XXXXX", "XXXXX", "XXXXX") or die (mysql_error());
mysql_select_db("XXXXX") or die (mysql_error());


$pr_side = "20";

if (!isset($s)) {
    $s = "0";
}
$query = mysql_query("SELECT Teaser, Id, Overskrift, SmallPic, News FROM v2_news WHERE News LIKE '$News' ORDER BY Id DESC limit $s,$pr_side") or die(mysql_error());


echo "<table align=center border=0>";
while($row = mysql_fetch_array($query)){
extract($row);
echo "<tr><td valign=top width=52 rowspan=2><div align=center><a href=artikel.php?Id=$row[Id]'>$SmallPic</a></td>\n";
echo "<td width=12></td>\n";
echo "<td><p><strong><a href='artikel.php?Id=$row[Id]' class=mere>$Overskrift</a></strong></p></td>\n";
echo "  <tr><td>&nbsp;</td>\n";
echo "<td valign=top><p>$Teaser ...</a></p></td>\n";
echo "</tr>\n";
echo "<tr><td colspan=3></td>\n";
echo "</tr>\n";
}

echo "</table>";


$g_total = mysql_query("select count(id) as total from v2_news WHERE News LIKE '$News'") or die(mysql_error());
$total = mysql_result($g_total,0);
echo"<br>";

if ($s >= $pr_side) {
    $previous_s = $s-$pr_side;
    echo "<a href='arkiv.php?s=$previous_s&News=$News' class='mere'>Forrige</a> ";
}


$page = 1;
for($start=0; $total > $start; $start=$start+$pr_side){

    if ($start != $s) {
        echo "<a href='arkiv.php?s=$start&News=$News' class='mere'>$page</a> ";
    } else {
        echo "$page ";
    }
    $page++;
}


if ($total > $s+$pr_side) {
    $next_s = $s+$pr_side;
    echo "<a href='arkiv.php?s=$next_s&News=$News' class='mere'>Næste</a>";
}

?>

Håber det kan mildne stemningen lidt :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