Avatar billede tcp Nybegynder
22. september 2008 - 18:19 Der er 23 kommentarer og
1 løsning

Udtræk

Skal lave en næste side funktion
side 1 viser de 16 nyeste i db

hvordan laver jeg et udtræk der viser 17-32



SELECT * FROM video ORDER BY id DESC ???????

Mvh Martin
Avatar billede Slettet bruger
22. september 2008 - 18:31 #1
SELECT * FROM video ORDER BY id DESC LIMIT 0, 16
Avatar billede Slettet bruger
22. september 2008 - 18:33 #2
Hvis du laver i PHP:

$numb = mysql_escape_string($_GET['numb']);
$sql = "SELECT * FROM video ORDER BY id DESC LIMIT ".$numb.", 16";

Så kan du lave en næste side <a href="?numb=<?PHP echo $numb+17; ?>">Mæste 16</a>
Avatar billede tcp Nybegynder
22. september 2008 - 19:59 #3
Den er super hvordan kan jeg begrænse den hvis jeg fx kun har 32 videoer i db

                if($side > 15)
                {
                echo "<a href=video.php?side=".($side - 16).">Tilbage</a> - ";
                }
               
?>

                <a href="video.php?side=<?PHP echo $side+16; ?>">Frem</a>
Avatar billede Slettet bruger
22. september 2008 - 20:24 #4
Uha. ja så skal vi først tælle hvor mange der i databasen.

Øverst på siden har jeg sat på at hvis man ikke har en $_GET med på numb som vi kalder den i dette tilfælde så skal $numb var = 0;

$eachSide = 30; //Antal pr. side (Kan også laves til noget brugeren kan bestemme
if(isset($_GET['numb'])) {
  $numb = mysql_escape_string($_GET['numb']);
} else {
  $numb = 0;
}

/* Tæller antal i databasen */
$count_sql = "SELECT COUNT(*) as cnt FROM video";
$count_query = mysql_query($count_sql) or die(mysql_error());
$count_row = mysql_fetch_array($count_query);

/* Regner ud hvor mange der er tilbage */
$left = $count_row['cnt'] - $eachSide;

            $this_url = "index.php"; //Sidens adresse
           
            if($numb != 0 && $numb >= $eachSide && $left == 0) {
                $prev = "<a href=\"".$this_url.($numb-$eachSide)."\" title=\"De forrige ".$eachSide."\">&laquo;&laquo; Forrige ".$eachSide."</a>";
            } else {
                $prev = "<a title=\"De forrige ".$eachSide."\" style=\"color: blue;\">&laquo;&laquo; Forrige ".$eachSide."</a>";
            }
            if($left > $total) {
                $next = "<a href=\"".$this_url.($numb+$eachSide)."\" title=\"De næste ".$eachSide."\">Næste ".$eachSide." &raquo;&raquo;</a>";
            } else {
                $next = "<a title=\"De næste ".$eachSide."\" style=\"color: blue;\">Næste ".$eachSide." &raquo;&raquo;</a>";
            }
Avatar billede Slettet bruger
22. september 2008 - 20:26 #5
Ups den har skulle sættes ind før "tæller i databasen"
$sql = "SELECT * FROM video ORDER BY name ASC LIMIT ".$numb.", ".$eachSide;

Og så kan jeg se der er 2 fejl:
$total skal ændres til $eachSide
Avatar billede tcp Nybegynder
22. september 2008 - 20:38 #6
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/visvare.dk/htdocs/video1.php on line 43
Avatar billede tcp Nybegynder
22. september 2008 - 20:51 #7
Her er min kode som den så ud før tæller


                $side = mysql_escape_string($_GET['side']);
                if($side > 15)
                {
                echo "<a href=video.php?side=".($side - 16).">Tilbage</a> - ";
                }
                echo "<a href=video.php?side=".($side + 16).">Frem</a>";
       
                $query = mysql_query("SELECT * FROM video ORDER BY id DESC LIMIT ".$side.",  16 ");
                $counter = 0;
                echo '<table width="300" border="0"><tr>';
                while($row = mysql_fetch_array($query)){
                if(($counter % 4) == 0){
                echo '</tr><tr>';
                }
                echo '<td valign=top><a href=/php/video_std.php?side='. $row['id'] .'><img src=/video/billeder/image.php?main='. $row['billede'] .'&watermark=watermark.png width=130 height=97 Hspace="15" border="5" Vspace="10" alt='. $row['navn'] .' /></a><br>'. $row['navn'] .'<br></td>';
                $counter++;
                }
                echo '</tr></table>';
               
                if($side > 15)
                {
                echo "<a href=video.php?side=".($side - 16).">Tilbage</a> - ";
                }
               
?>

                <a href="video.php?side=<?PHP echo $side+16; ?>">Frem</a>
Avatar billede tcp Nybegynder
22. september 2008 - 20:51 #8
$query = mysql_query("SELECT * FROM video ORDER BY id DESC LIMIT ".$side.",  16 ");
                $counter = 0;
                echo '<table width="300" border="0"><tr>';
                while($row = mysql_fetch_array($query)){
                if(($counter % 4) == 0){
                echo '</tr><tr>';
                }
                echo '<td valign=top><a href=/php/video_std.php?side='. $row['id'] .'><img src=/video/billeder/image.php?main='. $row['billede'] .'&watermark=watermark.png width=130 height=97 Hspace="15" border="5" Vspace="10" alt='. $row['navn'] .' /></a><br>'. $row['navn'] .'<br></td>';
                $counter++;
                }
                echo '</tr></table>';
Avatar billede tcp Nybegynder
27. september 2008 - 23:56 #9
qtax87 er du helt væk?
Avatar billede Slettet bruger
28. september 2008 - 12:22 #10
Nej jeg er ikke helt væk.
Linje 43 må så være koden: "while($row = mysql_fetch_array($query)){" ??
Avatar billede tcp Nybegynder
28. september 2008 - 19:40 #11
Ja det er rigtigt Kan ikke rigtigt se hvordan det skal virke ? Har prøvet næsten alt....
Avatar billede Slettet bruger
28. september 2008 - 22:16 #12
Kan du ikke prøve at sætte hele koden sammen, frem for du smider 5 indlæg med hver sin stump?
Avatar billede tcp Nybegynder
29. september 2008 - 14:49 #13
Har sendt hele koden men du kan da godt få den med html også....


<?
if (empty($_GET["side"])) { $_GET['side']="0";} 
                ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>visvare.dk</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="menu">
    <ul>
        <li><a href="index.php" accesskey="1" title="">Forside</a></li>
        <li><a href="billeder" accesskey="2" title="">billeder</a></li>
        <li class="active"><a href="video.php" accesskey="3" title="">video</a></li>
        <li><a href="spil.php" accesskey="4" title="">spil</a></li>
        <li><a href="jokes.php" accesskey="5" title="">jokes</a></li>
        <li><a href="nyheder.php" accesskey="6" title="">nyheder</a></li>
    </ul>
</div>
<!-- end #menu -->


<div id="page">
    <div id="contentspil">
   
      <div class="post boxed">
            <h2 class="title1">Video oversigt</h2>
            <div class="story">
           
                <p><strong></strong></p>
               
                <p>
              </p>
                <center>
                <?php include("admin/database_connect.php");

                $side = mysql_escape_string($_GET['side']);
                if($side > 15)
                {
                echo "<a href=video.php?side=".($side - 16).">Tilbage</a> - ";
                }
                echo "<a href=video.php?side=".($side + 16).">Frem</a>";
       
                $query = mysql_query("SELECT * FROM video ORDER BY id DESC LIMIT ".$side.",  16 ");
                $counter = 0;
                echo '<table width="300" border="0"><tr>';
                while($row = mysql_fetch_array($query)){
                if(($counter % 4) == 0){
                echo '</tr><tr>';
                }
                echo '<td valign=top><a href=/php/video_std.php?side='. $row['id'] .'><img src=/video/billeder/image.php?main='. $row['billede'] .'&watermark=watermark.png width=130 height=97 Hspace="15" border="5" Vspace="10" alt='. $row['navn'] .' /></a><br>'. $row['navn'] .'<br></td>';
                $counter++;
                }
                echo '</tr></table>';
               
                if($side > 15)
                {
                echo "<a href=video.php?side=".($side - 16).">Tilbage</a> - ";
                }
               
?>

                <a href="video.php?side=<?PHP echo $side+16; ?>">Frem</a>

          </center>
          </p>
        </div>
            <div class="meta">
                <p class="date"><? include("include/reklame.php"); ?></p>
        </div>
      </div>
    </div>
    <!-- end #content -->
    <div style="clear: both;">&nbsp;</div>
</div>
<!-- end #page -->
<div id="footer">
    <? include("include/footer.php"); ?>
</div>
<!-- end #footer -->
</body>
</html>
Avatar billede Slettet bruger
29. september 2008 - 18:36 #14
Kigger lige på det.
Avatar billede Slettet bruger
29. september 2008 - 18:38 #15
Først har rettet din if(empty...:

if (empty($_GET["side"])) $_GET['side'] = 0; // 0 er et tal derfor ingen "", behøves ingen {} når der kun er en linje.

Men ser da ud til at virke fint nok inde på din side (visvare.dk?)
Avatar billede tcp Nybegynder
29. september 2008 - 19:47 #16
Ja men jeg skuller jo gerne have det kode fra dig ind i så den tæller og ikke laver Næste hvis der ikke er flere poster at vise


$eachSide = 30; //Antal pr. side (Kan også laves til noget brugeren kan bestemme
if(isset($_GET['numb'])) {
  $numb = mysql_escape_string($_GET['numb']);
} else {
  $numb = 0;
}

/* Tæller antal i databasen */
$count_sql = "SELECT COUNT(*) as cnt FROM video";
$count_query = mysql_query($count_sql) or die(mysql_error());
$count_row = mysql_fetch_array($count_query);

/* Regner ud hvor mange der er tilbage */
$left = $count_row['cnt'] - $eachSide;

            $this_url = "index.php"; //Sidens adresse
           
            if($numb != 0 && $numb >= $eachSide && $left == 0) {
                $prev = "<a href=\"".$this_url.($numb-$eachSide)."\" title=\"De forrige ".$eachSide."\">&laquo;&laquo; Forrige ".$eachSide."</a>";
            } else {
                $prev = "<a title=\"De forrige ".$eachSide."\" style=\"color: blue;\">&laquo;&laquo; Forrige ".$eachSide."</a>";
            }
            if($left > $total) {
                $next = "<a href=\"".$this_url.($numb+$eachSide)."\" title=\"De næste ".$eachSide."\">Næste ".$eachSide." &raquo;&raquo;</a>";
            } else {
                $next = "<a title=\"De næste ".$eachSide."\" style=\"color: blue;\">Næste ".$eachSide." &raquo;&raquo;</a>";
            }
Avatar billede Slettet bruger
30. september 2008 - 00:42 #17
Dette skal lige ændres:

if($left > $total) {

--->

if($left > $eachSide) {
Avatar billede Slettet bruger
30. september 2008 - 10:03 #18
Sig til når du har prøvet at ændre dette.
Avatar billede tcp Nybegynder
30. september 2008 - 15:48 #19
Det rettet jeg allerede første gang jeg prøvede men der mangler da noget Hvor skriver du noget ud på siden ? Kan ikke se noget echo eller print nogen steder
Avatar billede tcp Nybegynder
30. september 2008 - 19:37 #20
Nu har jeg rettet en masse i det du har sendt, og fået den til at udskrive.
Problemer er nu at tilbage knappen stadig ikke virker og fremad knappen ikke stopper.
Grunden til den ikke stopper tror jeg er fordi $left = $count_row['cnt'] - $eachSide;
ikke tjekker hvilken side den er på? For Den er rigtig på første side ?side=0 men $left har samme nummer på side 2 ?side=12.....

Du kan se det her http://www.visvare.dk/video1.php


Koden


<?php include("admin/database_connect.php");



//Antal pr. side (Kan også laves til noget brugeren kan bestemme
$eachSide = 12;
if(isset($_GET['side'])) {
  $side = mysql_escape_string($_GET['side']);
} else {
  $side = 0;
}

$sql = "SELECT * FROM video ORDER BY id ASC LIMIT ".$side.", ".$eachSide;

/* Tæller antal i databasen */
$count_sql = "SELECT COUNT(*) as cnt FROM video";
$count_query = mysql_query($count_sql) or die(mysql_error());
$count_row = mysql_fetch_array($count_query);

/* Regner ud hvor mange der er tilbage */
$left = $count_row['cnt'] - $eachSide;

//Sidens adresse
$this_url = "video1.php?side=";


                    print "Der er ".$count_row['cnt']." poster i databasen <br> Hvis denne side viser $eachSide så er der $left tilbage <br>";
           
                   
                    if($side != 0 && $side >= $eachSide && $left == 0)
                    {
                    echo "<a href=\"".$this_url.($side-$eachSide)."\" title=\"De forrige ".$eachSide."\">&laquo;&laquo; Forrige ".$eachSide."</a> ";
                    }
                    else
                    {
                        echo "<a title=\"De forrige ".$eachSide."\" style=\"color: blue;\">&laquo;&laquo; Forrige ".$eachSide."</a> ";
                    }
                   
                    if($left > $eachSide)
                    {
                        echo "<a href=\"".$this_url.($side+$eachSide)."\" title=\"De næste ".$eachSide."\">Næste ".$eachSide." &raquo;&raquo;</a>";
                    }
                    else
                    {
                        echo "<a title=\"De næste ".$eachSide."\" style=\"color: blue;\">Næste ".$eachSide." &raquo;&raquo;</a>";
                    }
                   
           
                $query = mysql_query("SELECT * FROM video ORDER BY id DESC LIMIT ".$side.", ".$eachSide);
                $counter = 0;
                echo '<table width="300" border="0"><tr>';
                while($row = mysql_fetch_array($query)){
                if(($counter % 4) == 0){
                echo '</tr><tr>';
                }
                echo '<td valign=top><a href=/php/video_std.php?side='. $row['id'] .'><img src=/video/billeder/image.php?main='. $row['billede'] .'&watermark=watermark.png width=130 height=97 Hspace="15" border="5" Vspace="10" alt='. $row['navn'] .' /></a><br>'. $row['navn'] .'<br></td>';
                $counter++;
                }
                echo '</tr></table>';
       
   
       

?>
Avatar billede tcp Nybegynder
30. september 2008 - 21:58 #21
Det virker nu Så bare send et svar, rettet det fulstendigt i anden tråd http://www.eksperten.dk/spm/847399

                $query = mysql_query("SELECT * FROM video ORDER BY id DESC LIMIT ".$side.", ".$eachSide);
                    $counter = 0;
                    echo '<table width="300" border="0"><tr>';
                    while($row = mysql_fetch_array($query)){
                    if(($counter % 4) == 0){
                    echo '</tr><tr>';
                    }
                    echo '<td valign=top><a href=/php/video_std.php?side='. $row['id'] .'><img src=/video/billeder/image.php?main='. $row['billede'] .'&watermark=watermark.png width=130 height=97 Hspace="15" border="5" Vspace="10" alt='. $row['navn'] .' /></a><br>'. $row['navn'] .'<br></td>';
                    $counter++;
                    }
                    echo '</tr></table>';
       
               
                            if($side > 0)
                    {
                    echo "<a href=\"".$this_url.($side-$eachSide)."\" title=\"De forrige ".$eachSide."\">&laquo;&laquo; Forrige ".$eachSide."</a> -";
                    }
                    else
                    {
                        echo "<a title=\"De forrige ".$eachSide."\" style=\"color: ;\">&laquo;&laquo; Forrige ".$eachSide."</a> -";
                    }
                   
                    if(($side+$eachSide) < $count_row['cnt'])
                    {
                        echo " <a href=\"".$this_url.($side+$eachSide)."\" title=\"De næste ".$eachSide."\">Næste ".$eachSide." &raquo;&raquo;</a>";
                    }
                    else
                    {
                        echo " <a title=\"De næste ".$eachSide."\" style=\"color: ;\">Næste ".$eachSide." &raquo;&raquo;</a>";
                    }
Avatar billede tcp Nybegynder
21. februar 2009 - 13:49 #22
lukker
Avatar billede tcp Nybegynder
21. februar 2009 - 13:50 #23
send svar så den kan lukkes
Avatar billede Slettet bruger
22. februar 2009 - 14:21 #24
Fik du det til at virke?
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
Computerworld tilbyder specialiserede kurser i database-management

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