Avatar billede Dacarts Nybegynder
16. juni 2011 - 09:13 Der er 5 kommentarer og
1 løsning

Php Paging

Hei alle

jeg sider med et problem inden for paging - den virker som sådan koden, har bare det problem at når jeg trykker på en af de tal der er i bunden for at kommer videre vælger den at smide mig tilbage på min forside i stedet for at visse content fra mn db.

<?php

$db = mysqli_connect("localhost","root","","golfen"); #Host, brugernavn, password, database

   
#Hent informationer så vi ved hvor mange elementer vi har med at gøre
$sql = "SELECT * FROM baner";#Forespørgselsvariabel
$res = mysqli_query($db, $sql) or die(mysqli_error($db));#Handling skal bruge to parametre / or die skal kun bruges under development. Or die viser hvis der er fejl med $db, skal aldrig vises under production.
$intQuery = mysqli_num_rows($res);#Tæller handlingen - tæller hvor mange der eri databasen.  Den vil få en værdi.
#echo $intQuery; #Udskriver hvor mange poster der findes i test

$intantalprside = 1; #Definer at vi vil se fire poster pr. side
$intantalprrow = 1; #Definerer hvor mange elementer vi skal have pr. række

$intantalsider = ceil($intQuery / $intantalprside);#Udregner hvor mange sider der er i alt. Vi runder op med ceil for ellers mister vi en post
#echo $intantalsider;#Udskriver antal sider

#Undersøger hvilken side vi er på
if(!isset($_GET['id']))#Hvis der ikke eksistererer noget i adresselinjen der hedder page. Page-værdien SKAL være et tal
{
    $intaktuelside = 1;#Sæt intaktuelside til et
}else{
    $intaktuelside = (int)$_GET['id'];
}

#Sikrer os at sidetallet i page ikke kan overskride det max antal sider der eksisterer
if($intaktuelside > $intantalsider)
{
    $intaktuelside = $intantalsider;
}

#Sikrer os at sidetallet i page ikke kan blive mindre end første side
if($intaktuelside < 1)
{
    $intaktuelside = 1;
}

# Definerer en offset (hvor vores databaseudtræk skal starte).
$offset = ($intaktuelside - 1) * $intantalprside;
#echo $offset."<br /><br />";


    #Hent informationer og udskriver
    $sql = "SELECT * FROM baner LIMIT ".$offset.", ".$intantalprside;#Forespørgselsvariabel. En limit har et offset (hvor den skal starte), og et antal poster (hvor mange der skal hentes frem)
    $res = mysqli_query($db, $sql) or die(mysqli_error($db));#Handling skal bruge to parametre / or die skal kun bruges under development. Or die viser hvis der er fejl med $db, skal aldrig vises under production.
    echo "<table border='1'><tr>";
    $i = 1;
    while($row = mysqli_fetch_array($res))
    {
        echo "<td width='400'>";
            echo "<strong>".$row['name']."</strong><br />";
            echo $row['specs'];
        echo "</td>";
        if($i == $intantalprrow)
        {
            echo "</tr><tr>";
            $i = 1;
        }else{
            $i++;
        }
    }
echo "</tr></table>";

#Definerer hvor hvor mange tal der skal være på hver side af det aktuelle
$intlinks = 3;

if($intaktuelside > 1)
{
echo "<a href='".$_SERVER['PHP_SELF']."?id=3&bid='><<</a>&nbsp;&nbsp;";
$tilbage = $intaktuelside - 1;
echo "<a href='".$_SERVER['PHP_SELF']."?id=3&bid=".$tilbage."'><</a>&nbsp;&nbsp;";
}


for($i = ($intaktuelside - $intlinks); $i < (($intaktuelside + $intlinks) + 1); $i++ ){#En for-lykke er i tre elementer: 1. hvilken variabel arbejder vi med, 2. hvor lang tid skal vi arbejde med lykken, 3. hvordan kommer vi videre. +1 i 2. element gør at vi
    if($i > 0 && $i <= $intantalsider)
    {
        if($i == $intaktuelside)
        {
            echo "<strong>".$i."</strong>&nbsp;";
        }else{
            echo "<a href='".$_SERVER['PHP_SELF']."?id=3&bid=".$i."'>".$i."</a>&nbsp;";   
        }
    }
}

if($intaktuelside < $intantalsider)
{
    $frem = $intaktuelside + 1;
    echo "&nbsp;<a href='".$_SERVER['PHP_SELF']."?id=3&bid=".$frem."'>></a>&nbsp;&nbsp;";
    echo "<a href='".$_SERVER['PHP_SELF']."?id=3&bid=".$intantalsider."'>>></a>&nbsp;&nbsp;";
}

?>

På forhånd tak :)
Avatar billede Dacarts Nybegynder
16. juni 2011 - 09:49 #1
Bum der er ikke behov for at sku komme med en komment til dette fandt en anden hvor jeg simpelthen har droppet paging og har valgt at lave et link

fra en page til en anden hvor den tager oplysninger med over på den anden side.
16. juni 2011 - 09:52 #2
Jeg har ikke gennemskuet din kode i alle detaljer, men det ser ud til, at koden enten går til side 1 eller går til en side koden beregner ud fra værdien af 'id'.  Så ser det ud til, at du til sidst i koden beregner hvilken side du derefter gerne vil gå til og placerer tallet i $frem, og så kalder du siden påny.  Det pudsige er, at du giver id værdien 3 og placerer værdien af $frem i 'bid' som du slet ikke bruger i koden (at jeg har set).  Jeg ville have troet, at du skulle placere værdien af ,$frem i id, for eksempel således (ikke testet)

if($intaktuelside < $intantalsider)
{
    $frem = $intaktuelside + 1;
    echo "&nbsp;<a href='".$_SERVER['PHP_SELF']."?id=$frem'>></a>&nbsp;&nbsp;";
    echo "<a href='".$_SERVER['PHP_SELF']."?id=$intantalsider'>>></a>&nbsp;&nbsp;";
}
16. juni 2011 - 09:53 #3
Jeg så ikke #1 før jeg sendte mit indlæg.
Avatar billede Dacarts Nybegynder
16. juni 2011 - 10:14 #4
Shit Christian_Belgien du løste det..... øhm nu har jeg godt nok tildelt points til mig selv men opretter gerne et spørgsmål til så du kan få points....
16. juni 2011 - 10:48 #5
Hvis jeg løste det er det da ikke så shit!  Hvis du opretter et spørgsmål med "points til...", så lægger et svar der.
16. juni 2011 - 16:38 #6
Nå, det ville du alligevel ikke.
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
Kurser inden for grundlæggende programmering

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