Avatar billede tcp Nybegynder
30. september 2008 - 20:14 Der er 27 kommentarer og
1 løsning

hjælp til frem og tilbage funtion

Hej eksperten jeg har lidt problemer med dennne kode

Problemer er nu at "tilbage" knappen stadig ikke virker og fremad knappen ikke stoppernår der ikke er flere poster i databasen.
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 jakobdo Ekspert
30. september 2008 - 20:43 #1
Prøv at ret:
if(isset($_GET['side'])) {
  $side = mysql_escape_string($_GET['side']);
} else {
  $side = 0;
}
til:
$side = (isset($_GET['side']) && is_numeric($_GET['side']) && $_GET['side'] > 0) ? intval($_GET['side']) : 0;

Ikke det gør den store forskel, men der er bedre kontrol på input.
Avatar billede jakobdo Ekspert
30. september 2008 - 20:47 #2
Forrige ska lvel blot laves, hvis $side > 0
Næste skal være aktiv, hvis $side+$eachSide < $count_row
Avatar billede tcp Nybegynder
30. september 2008 - 20:49 #3
jakobdo Rettet, Kan du se hvorfor $left ikke rettet så den ved hvormange der er tilbage?
Avatar billede tcp Nybegynder
30. september 2008 - 20:52 #4
Virker næsten nu frem og tilbage er oki men den stopper stadig ikke efter de 28 poster i databasen
Avatar billede jakobdo Ekspert
30. september 2008 - 20:56 #5
Har du et link, hvor man kan se output ?
Avatar billede tcp Nybegynder
30. september 2008 - 20:57 #6
Avatar billede jakobdo Ekspert
30. september 2008 - 21:06 #7
Ret lige:

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

/* Regner ud hvor mange der er tilbage */
$left = $count_row['cnt'] - $side;
Avatar billede jakobdo Ekspert
30. september 2008 - 21:08 #8
Så burde din LEFT virke korrekt.

Og så skal dette da også gerne virke:

if(($side+$eachSide) > $count_row)
                    {
                        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>";
                    }
Avatar billede tcp Nybegynder
30. september 2008 - 21:09 #9
Det hjalp på $left Så skal den bare stoppes
Avatar billede tcp Nybegynder
30. september 2008 - 21:12 #10
Skal det så ikke være $side+$eachSide) < $left)
Avatar billede jakobdo Ekspert
30. september 2008 - 21:13 #11
Det skal jo faktisk være:

if(($side+$eachSide) < $count_row)
Avatar billede tcp Nybegynder
30. september 2008 - 21:16 #12
Ja sådan ser den også ud, Men den kan stadig tælle videre, den skal vil vide hvad der er tilbage af poster i db ?
Avatar billede tcp Nybegynder
30. september 2008 - 21:18 #13
if skal jo kun være sand hvis der er mere en 12 poster tilbage i $left
Avatar billede jakobdo Ekspert
30. september 2008 - 21:19 #14
Det ved den jo fra $count_row.
Den indeholder jo 28
Og når vi rammer $side = 24 og $eachSide 12.
Så vil 36 være større end 28 og dermed vil vores:
if(($side+$eachSide) < $count_row)
Fejle og give en ikke næste knap / link.
Avatar billede tcp Nybegynder
30. september 2008 - 21:20 #15
Avatar billede tcp Nybegynder
30. september 2008 - 21:21 #16
if(($side+$eachSide) < $count_row)
                    {
                        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>";
                    }
Avatar billede jakobdo Ekspert
30. september 2008 - 21:23 #17
Der er noget galt et sted.
Hvad indeholder:

$side
$eachSide
$count_row
?

Lige inden vi kalder: if(($side+$eachSide) < $count_row)
Avatar billede tcp Nybegynder
30. september 2008 - 21:29 #18
Avatar billede tcp Nybegynder
30. september 2008 - 21:36 #19
Kan det være vi skal bruge .$count_row['cnt'].
Avatar billede jakobdo Ekspert
30. september 2008 - 21:37 #20
Ja for fanden, det er jo den vi skal bruge! :o)
Avatar billede tcp Nybegynder
30. september 2008 - 21:38 #21
Nu virker det.

    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: blue;\">Næste ".$eachSide." &raquo;&raquo;</a>";
                    }
Avatar billede tcp Nybegynder
30. september 2008 - 21:40 #22
Det var dejligt smiler du sender bare et svar smiler...

Havde aldrig fundet alle de fejl uden din hjælp GG
Avatar billede jakobdo Ekspert
30. september 2008 - 21:43 #23
Svar!
Avatar billede jakobdo Ekspert
30. september 2008 - 21:44 #24
Og godt jeg kunne hjælpe.
Avatar billede tcp Nybegynder
30. september 2008 - 21:45 #25
Det plejer du jo at kunne, Du burde have en hotline GG
Avatar billede jakobdo Ekspert
30. september 2008 - 22:12 #26
Hvis jeg kunne tjene penge på det, så gjorde jeg det gerne! :o)

Og takker for point.
Avatar billede tcp Nybegynder
30. september 2008 - 22:19 #27
Det er jeg sikker på du kan, du kan jo starte med at lave en lille side med dine scripts og sælge dem :-) 5 doller scripts køre jo glimrende
Avatar billede jakobdo Ekspert
01. oktober 2008 - 08:29 #28
www.codebreaker.dk/exp/
Problemet er bare de er gratis. :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