Avatar billede hmortensen Nybegynder
17. oktober 2004 - 20:25 Der er 3 kommentarer og
1 løsning

Array frem og tilbage

Hejsa

Jeg har lavet et script som viser et given billede i en popup.
Så ville jeg gerne ha en forrige/næste knap, og fik det så til at virke på den her måde:

<?php
if (isset($_GET['id'])) {
    include("function.php");
    conn();
    $sql = mysql_query("SELECT id FROM images");
    $idarray = array();
    while ($row = mysql_fetch_array($sql)) {
        $idarray[] = $row['id'];
    }
    reset($idarray);
    foreach ($idarray AS $var){
        if($var == $_GET['id']){
            break;
        }
    }
    prev($idarray);
    $prev = prev($idarray);
    next($idarray);
    $next = next($idarray);
    if ($_GET['id'] == $idarray[0])   
        $next = $idarray[1];
    if ($_GET['id'] == $idarray[count($idarray)-1])
        $prev = $idarray[count($idarray)-2];
    $query = mysql_query("SELECT pictext, ext FROM images WHERE id = ".$_GET['id']);
    list($pictext,$ext) = mysql_fetch_row($query);
    echo "<img src=\"images/".$_GET['id'].".".$ext."\"><br>".$pictext."<br>";
    if ($_GET['id'] != $idarray[0])
        echo "<a href=\"?id=".$prev."\">Forrige</a>";
    echo " - ";
    if ($_GET['id'] != $idarray[count($idarray)-1])
        echo "<a href=\"?id=".$next."\">Næste</a>";
}
?>

Men jeg synes ikke at koden ser særlig optimal ud.

Kunne det gøres anderledes/bedre ?
Avatar billede sukos Juniormester
17. oktober 2004 - 20:37 #1
hmm, ved ikke lige, men lavede selv noget billedegalleri, hvor jeg skulle ha' fat i næste eller forrige, i arrayet:

function get_id($nr, $var="") {
global $idarray;
$key = array_search($nr, $idarray);
    if(empty($var)) {
    return @$idarray[$key-1];
    }else{
    return @$idarray[$key+1];
    }
}

Og bruger så:

if(true == get_id($_GET["id"])) {
lav link til forrige

eller:

if(true == get_id($_GET["id"], 1)) {
lav link til næste


-------------------------------------------
Avatar billede hmortensen Nybegynder
18. oktober 2004 - 11:07 #2
array_search() selvfølgelig

smid et svar :)
Avatar billede sukos Juniormester
18. oktober 2004 - 12:11 #3
Præcis samme kommentar, (array_search() selvfølgelig), kom jeg selv med da jeg fik hjælp til problemet! :O)
Avatar billede hmortensen Nybegynder
18. oktober 2004 - 12:12 #4
Jeg manglede lidt at jeg kunne sætte et index på current() :)
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