Avatar billede BTEngineer Novice
25. marts 2006 - 17:07 Der er 10 kommentarer og
1 løsning

Forrige og Næste

Hej Eksperter ;-).

Jeg er igang med at lave et kode system, hvor der kan tilføjes html koder m.m. Man kan vælge nogle forskellige kategorier, f.eks. "blandet koder". Hvis man vælger den kategori, så får man en oversigt over alle de koder der er tilføjet til den kategori.

For at se mere om koden, kan man trykke på navnet på koden, og så læse mere om koden osv.

Det jeg så godt kunne tænke mig er, at når man nu f.eks. er gået ind på en kode der hedder "dato på dansk", så har man mulighed for at trykke forrige kode og næste kode.

Det skal være efter ID, således af hvis nu koden "dato på dansk" har et ID som er 5, så når man trykker næste, så kommer den næste kode i databasen, og hvis man trykker forrige, så kommer koden lige før "dato på dansk".

Håber nogen kan hjælpe mig med det.
Avatar billede BTEngineer Novice
25. marts 2006 - 17:09 #1
Hvis nu brugeren har valgt den aller første kode i databasen, så skal man selvfølgelig ikke kunne trykke forrige, så skal forrige linket bare været en tekst, ganske normal tekst, og næste skal være aktiv selvfølgelig. Hvis det er den sidste kode i databasen, skal man heller ikke kunne trykke næste igen, så skal næste linket være en normal tekst, det samme som forrige :-).
Avatar billede showsource Seniormester
25. marts 2006 - 18:56 #2
når der vælges f.eks. "dato på dansk" kan du lave et array med alle id'er hvor det er "dato på dansk",
$sql = "SELECT `id` FROM `tabel` WHERE `kategori` = 'dato på dansk'";

$id = mysql_query($sql);

while($i = mysql_fetch_array($id)) {
$id_array[] = $i["id"];
}

Så har du et array a'la'

$id_array[] = array(2, 5, 7, 9, 15);

og kan derefter bruge array_search() til at finde key for valgte id
Avatar billede BTEngineer Novice
26. marts 2006 - 10:55 #3
Jeg er ikke helt med.
Er ikke så godt inde i det med arrays, $id_array[] = array(2, 5, 7, 9, 15); og funktionen array_search() aner jeg ikke hvordan jeg skal bruge.
Avatar billede steven_ Nybegynder
26. marts 2006 - 12:38 #4
Showsource's idé er nok den mest idéelle - men ellers kan man jo lave to queries, som ligner næste-funktionen herunder - men det vil kræve en del mere af din server end showsource's ;)

$query = mysql_query( "select `id`, `title` from `html_codes` where `id` > '" . $_GET['id'] . "' limit 1" );
if( mysql_num_rows( $query ) >= 1 )
{
    $foo = mysql_fetch_object( $query ) )
    echo "<a href=\"" . $_SERVER['PHP_SELF'] : "\">" . $foo->title . " ->></a>";
}
Avatar billede BTEngineer Novice
26. marts 2006 - 16:08 #5
Jeg foretrækker showsource's løsning, men jeg forstår ikke hvad jeg skal bruge array_search() til, den finder det valgte ID i en array, men hvad skal jeg bruge det til, når jeg skal have sådan at folk har mulighed for at trykke forrige og næste?
og hvordan laver jeg sådan at hvis der ikke er nogen "forrige", at så er det bare en ganske normal tekst? og det samme med næste hvis der ikke er nogen "næste", så er det også bare en normal tekst.

Ellers er jeg meget godt med :-)
Avatar billede showsource Seniormester
28. marts 2006 - 13:04 #6
array_search() finder "key" i array'et, ikke selve værdien.

$id_array[] = array(2, 5, 7, 9, 15);

$find_key = array_search(7, $id_array);

$find_key er så 2

lavede denne funktion til at finde forrige/næste

function get_id($nr, $var="") {
global $id_array;
$key = array_search($nr, $id_array);

    if(empty($var)) {
    return @$id_array[$key-1]; // forrige
    }else{
    return @$id_array[$key+1]; // næste
    }
}

@ for at undertrykke fejlmeddelser

$forrige = "&nbsp;";
$naeste = "&nbsp;";

if(false !== get_id($_GET["id"])) {
$forrige = get_id($_GET["id"]);
}
if(false !== get_id($_GET["id"], 1)) {
$naeste = get_id($_GET["id"], 1);
}
Avatar billede steven_ Nybegynder
28. marts 2006 - 14:45 #7
og kan så koges ned til dette:

<?php
$id_array = array( 2, 5, 1, 7, 4, 3, 8, 9, 6 );

function get_id( $id, $arrayValue, $var = false )
{
    $key = array_search( $id, $arrayValue );
   
    return $var ? ( $arrayValue[$key-1] ? $arrayValue[$key-1] : 0 ) : ( $arrayValue[$key+1] ? $arrayValue[$key+1] : 0 );
}

$id = isset( $_GET['id'] ) ? $_GET['id'] : 0;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?id=" . get_id( $id, $id_array, true ) . "\">forrige</a><br />";
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?id=" . get_id( $id, $id_array ) . "\">naeste</a>";
?>
Avatar billede BTEngineer Novice
28. marts 2006 - 17:54 #8
Hvad skal jeg så indsætte i min fil?
kan jeg ikke få det hele på en gang?
Avatar billede steven_ Nybegynder
28. marts 2006 - 19:23 #9
Det kommer jo helt an på hvordan din fil ser ud.

Post den her ;)
Avatar billede BTEngineer Novice
29. juli 2006 - 12:22 #10
Undskyld den lange ventetid, men jeg har haft rimelig travlt her på det sidste.

Her er mit script:
<?
include("inc/cfg.php");

$q = mysql_query("SELECT * FROM funnypics WHERE id = '$_GET[id]'") or die(mysql_error());
$vis = mysql_fetch_array($q);
?>

<b>Fuld størrelse af billedet <? echo $vis[navn]; ?></b><br>
<table border="0" width="100%">
    <tr>
        <td>HER SKAL FORRIGE OG NÆSTE STÅ.</td>
    </tr>
    <tr>
        <td><img src="<? echo $vis[billede]; ?>" border="0"></td>
    </tr>
    <tr>
        <td>..</td>
    </tr>
</table>

<?
}
}
mysql_close();
?>
Avatar billede BTEngineer Novice
14. august 2006 - 18:16 #11
lukker..
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