Avatar billede the_edge Nybegynder
09. april 2007 - 16:41 Der er 6 kommentarer

Php skal bruge limit til at hente ud fra mysql

Hejsa

jeg skal bruge limit til at hente nogen ting ud fra min database. Jeg har vidst lige misted overblikket. Det skal være sådan at man kan trykke næste så kommer de næste 10 og tilbage for de sidste 10 osv. man skal vell også bruge noget get kunne jeg tænkte mig til. skal bruge et lille skub igang

sådan ser det ud pt


<?php
include_once("sql.php");
include_once("help.php");

//echo '<center><h3>Nyheder</h3></center>';

    echo '<h3><p style="text-align: center">Nyheder</p></h3></ br></ br>';


    function nyheder()
    {
   
        conn();        
        $antalsider = 10;
       
        $result = mysql_query("select * from nyheder ORDER BY id DESC LIMIT $antalsider") or die (mysql_error());
       
     
        echo '<div id="nyheder">';
        while ($row = mysql_fetch_array($result))
        {
        $date = $row["dato"];
       
       
       
        echo '<table border="0" width="40%">';
       
        echo '<tr>';
        echo '<td align="center"><h3>'.$row["overskrift"].'</h3></td>';
        echo "</tr>";
       
        echo "<tr>";
        echo '<td align="center">'.$row["indhold"].'</td>';
        echo "</tr>";
        echo "<tr>";
        echo '<td align="center">'.$date.'</td>';
        echo "</tr>";
        echo "<tr>";
        echo '<td align="right">'.$row["forfatter"].'</td>';
        echo "</tr>";
       
        echo '</table> <hr>';
     
       
       
       
        echo '<br /><br />';
       
        }
   
        echo "</div>";
       
        echo '<a href="index.php?pid=nyheder?side=.'$antalsider+10 '.">forige</a><a href="">næste</a>';
       
       
       
   
    }

   
   
   
   

if ($_SESSION["login"] == 1)
{
nyheder();
}

else echo "Du er ikke logget ind";



?>
Avatar billede j4k0b Nybegynder
09. april 2007 - 17:21 #1
<?php

mysql_connect('SERVER', 'USER', 'PASS') or die(mysql_error());
mysql_select_db('DB') or die(mysql_error());

$max  = 20;                    // Antal beskeder per side
$page  = (int)$_GET['page'];    // Bemærk: sidenummer hentes fra adresselinien (gbog.php?page=1)
if($page < 1) $page = 1;        // Hvis $_GET['page'] ikke har nogen værdi, angives $page til 1

$start = ($page - 1) * $max;


/*
* Hent og udskriv aktuelle beskeder
*/

$posts = mysql_query('SELECT * FROM guestbook LIMIT '.$start.','.$max) or die(mysql_error());

while($row = mysql_fetch_array($posts)) {
  echo 'Besked af ' . $row['author'] . ' (Dato: ' . $row['timestamp'] . ')<br/>';
  echo $row['message'] . '<br><br>';
}


/*
* Lav en navigation mellem siderne
*/

$res  = mysql_query('SELECT COUNT(id) AS amount FROM guestbook');
$row  = mysql_fetch_array($res);
$all  = $row['amount'];        // Indeholder nu antallet af beskeder i hele gæstebogen = 200

$pageCount = ceil($all / $max);  // Antal sider i alt

/* Uanset hvad skal der være minimum én side i gæstebogen */
/* Hvis værdien af $pageCount (antallet af sider) er mindre end 1 bliver værdien opdateret til 1 */
if($pageCount < 1) $pageCount = 1;

/* Udskriv link til hver side */
for($i = 1; $i <= $pageCount; $i++) {
  echo '<a href="gbog.php?page=' . $i . '">' . $i . '</a> ';
}


?>
Avatar billede the_edge Nybegynder
09. april 2007 - 18:54 #2
nu ser det sådan ud pt men jeg får en syntaks fejl her $posts = mysql_query('SELECT * FROM guestbook LIMIT '.$start.','.$max) or die(mysql_error());

<?php
include_once("sql.php");
include_once("help.php");

//echo '<center><h3>Nyheder</h3></center>';

    echo '<h3><p style="text-align: center">Nyheder</p></h3></ br></ br>';


    function nyheder()
    {
   
        conn();
       
        //$talt = mysql_query("select id,COUNT(indhold) FROM nyheder GROUP BY id") or die (mysql_error());
        //echo "talt".$talt["COUNT(id)"];
       
   
        $antalpersider = 10;  //maks antal der må vises adgangen, limit
       
        $side = $_GET["side"];  // Bemærk: sidenummer hentes fra adresselinien
        if($side < 1) $side = 1;         // Hvis $_GET['start'] ikke har nogen værdi, angives $start til 1

        $start = ($side - 1) * $max;

   
       
        $result = mysql_query("select * from nyheder ORDER BY id DESC LIMIT '.$start.','.$max.'") or die (mysql_error());
       
     
        echo '<div id="nyheder">';
        while ($row = mysql_fetch_array($result))
        {
        $date = $row["dato"];
       
       
       
        echo '<table border="0" width="40%">';
       
        echo '<tr>';
        echo '<td align="center"><h3>'.$row["overskrift"].'</h3></td>';
        echo "</tr>";
       
        echo "<tr>";
        echo '<td align="center">'.$row["indhold"].'</td>';
        echo "</tr>";
        echo "<tr>";
        echo '<td align="center">'.$date.'</td>';
        echo "</tr>";
        echo "<tr>";
        echo '<td align="right">'.$row["forfatter"].'</td>';
        echo "</tr>";
       
        echo '</table> <hr>';
     
       
       
       
        echo '<br /><br />';
       
        }
   
        echo "</div>";
       
        //echo '<a href="index.php?pid=nyheder?side=.'$antalsider+10 '.">forige</a><a href="">næste</a>';
       
       
       
   
    }

   
   
   
   

if ($_SESSION["login"] == 1)
{
nyheder();
}

else echo "Du er ikke logget ind";



?>
Avatar billede dkfire Nybegynder
09. april 2007 - 20:13 #3
Prøv istedet
$query = "select * from nyheder ORDER BY id DESC LIMIT $start, $max";
$result = mysql_query( $query );

Og så mangler du også lige at give $max en værdi.
Det kan være noget ala:
$max = $antalperside;
Avatar billede the_edge Nybegynder
09. april 2007 - 22:21 #4
ahh der kan man bare se... hvordan får jeg lavet knappen til at hente de 10 næste ? altså så den henter fra 11-21
Avatar billede dkfire Nybegynder
10. april 2007 - 01:06 #5
Det kræver at du har en variable som indeholder den side som brugeren er på.
Det vil være en god ide at så det fulde antal af rækker i databasen, det skal bruges til at tjekke som der er nok rækker til en side mere.

Så først gør vi:

$result = mysql_query( "SELECT COUNT(id) as total FROM nyheder" );
$totalrows = mysql_result( $result , 0, 'total');

// så skal vi finde ud af det totale antal sider der er muligt
$TotalPageNums = ceil($totalrows/$max);

// Når du så skal lave dit link til næste side
if( $side < $TotalPageNums ){
echo '<a href="?side='.$side+1.'">næste</a>';
}
// hvis du vil lave et link til forrige side
if( $side > 1 ){
echo '<a href="?side='.$side-1.'">forrige</a>';
}
Avatar billede the_edge Nybegynder
13. april 2007 - 21:16 #6
sry jeg ikke har lige svaret tilbage forløbet, men jeg får fejl ved  echo '<a href="?side='.$side+1.'">næste</a>';
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