/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
billedserie
Fra : Poul Kubel


Dato : 05-04-04 16:04

Hej

Jeg har en side hvor 9 billeder skal hentes ind efter hinanden (1.jpg, 2.
jpg, 3.jpg etc.) med links'ne "forrige" og "næste" under billederne. Linket
under 9.jpg skal vise tilbage til 1.jpg.

Jeg har en ide om at den nemmeste løsning er at lægge navnene på billederne
i et array, og derefter henvise til deres plads i det, men jeg er kørt fast
mht. hvordan jeg i et link kan gøre opmærksom på at der skal springes et
billede frem (eller tilbage) uden at jeg skal til at definere individelle
links for hvert billede.

Er jeg helt på vildspor, eller kan det lade sig gøre i php med et array?

Mvh.

Poul Kubel



 
 
Kristian Thy (05-04-2004)
Kommentar
Fra : Kristian Thy


Dato : 05-04-04 16:28

Poul Kubel uttered:
> Jeg har en ide om at den nemmeste løsning er at lægge navnene på
> billederne i et array, og derefter henvise til deres plads i det,
> men jeg er kørt fast mht. hvordan jeg i et link kan gøre opmærksom
> på at der skal springes et billede frem (eller tilbage) uden at jeg
> skal til at definere individelle links for hvert billede.

Hvis du fx har en variabel $bid der refererer til billedernes plads i
arrayet, kan du bare lave links som her:

echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";

\\kristian
--
IRC is just multiplayer notepad.

Poul Kubel (06-04-2004)
Kommentar
Fra : Poul Kubel


Dato : 06-04-04 09:36


> Poul Kubel uttered:
> > Jeg har en ide om at den nemmeste løsning er at lægge navnene på
> > billederne i et array, og derefter henvise til deres plads i det,
> > men jeg er kørt fast mht. hvordan jeg i et link kan gøre opmærksom
> > på at der skal springes et billede frem (eller tilbage) uden at jeg
> > skal til at definere individelle links for hvert billede.
>
> Hvis du fx har en variabel $bid der refererer til billedernes plads i
> arrayet, kan du bare lave links som her:
>
> echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
> echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";
>
Jeg har prøvet at rode lidt med det, men kan ikke få det til at virke - jeg
er ikke den store haj til php, så jeg skal nok have det udpenslet lidt mere.
Indtil videre ser det jeg har bikset sammen, således ud:

<?php

$billeder = array("1.jpg", "2.jpg", "3.jpg");
echo '<img src="'.$billeder[$_GET[bid]].'">';
echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";

?>

med dette fungerer eksempelvis siden test.php?bid=2 udmærket og kalder
"3.jpg" frem, men de to links fremkalder URL-endelsen test.php?bid=-1 og
test.php?bid=1 henholdsvis, hvilket jo ikke lige er meningen.

Mvh.

Poul Kubel



Poul Kubel (06-04-2004)
Kommentar
Fra : Poul Kubel


Dato : 06-04-04 09:50


"Poul Kubel" <kubel@odense.kollegienet.dk> skrev i en meddelelse
news:6Ytcc.135453$jf4.7279499@news000.worldonline.dk...
>
> > Poul Kubel uttered:
> > > Jeg har en ide om at den nemmeste løsning er at lægge navnene på
> > > billederne i et array, og derefter henvise til deres plads i det,
> > > men jeg er kørt fast mht. hvordan jeg i et link kan gøre opmærksom
> > > på at der skal springes et billede frem (eller tilbage) uden at jeg
> > > skal til at definere individelle links for hvert billede.
> >
> > Hvis du fx har en variabel $bid der refererer til billedernes plads i
> > arrayet, kan du bare lave links som her:
> >
> > echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
> > echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";
> >
> Jeg har prøvet at rode lidt med det, men kan ikke få det til at virke -
jeg
> er ikke den store haj til php, så jeg skal nok have det udpenslet lidt
mere.
> Indtil videre ser det jeg har bikset sammen, således ud:
>
> <?php
>
> $billeder = array("1.jpg", "2.jpg", "3.jpg");
> echo '<img src="'.$billeder[$_GET[bid]].'">';
> echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
> echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";
>
> ?>
>
> med dette fungerer eksempelvis siden test.php?bid=2 udmærket og kalder
> "3.jpg" frem, men de to links fremkalder URL-endelsen test.php?bid=-1 og
> test.php?bid=1 henholdsvis, hvilket jo ikke lige er meningen.
>
Jeg mente selvfølgelig billeder.php og ikke test.php...



Lars Olesen (06-04-2004)
Kommentar
Fra : Lars Olesen


Dato : 06-04-04 10:11

Poul Kubel wrote:

> <?php
>
> $billeder = array("1.jpg", "2.jpg", "3.jpg");
> echo '<img src="'.$billeder[$_GET[bid]].'">';
> echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
> echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";
>
> ?>

Du har ikke defineret $bid. Hvis du ændrer ovenstående til:

<?php
$billeder = array("1.jpg", "2.jpg", "3.jpg");
$bid = (int)$_GET['bid']; // du bør forlange at $bid er en integer

if ($bid >= 0 AND $bid <= count($billeder)) // viser kun billeder hvis
// bid er større end
eller
// lig 0 og
// mindre end antallet af
// billeder
// i arrayet
{
echo '<img src="'.$billeder[$bid].'">';
echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";
}
?>

Så skulle det virke. If-sætningen er blot en sikkerhedsforanstaltning.
Du bør aldrig stole på userinput :)

--
Lars Olesen
Konkurrence på <http://www.fodboldenslegestue.dk>
Kan det gøres bedre? Navigation og brugervenlighed!

Poul Kubel (06-04-2004)
Kommentar
Fra : Poul Kubel


Dato : 06-04-04 11:14

>
> Du har ikke defineret $bid. Hvis du ændrer ovenstående til:
>
> <?php
> $billeder = array("1.jpg", "2.jpg", "3.jpg");
> $bid = (int)$_GET['bid']; // du bør forlange at $bid er en integer
>
> if ($bid >= 0 AND $bid <= count($billeder)) // viser kun billeder hvis
> // bid er større end
> eller
> // lig 0 og
> // mindre end antallet af
> // billeder
> // i arrayet
> {
> echo '<img src="'.$billeder[$bid].'">';
> echo "<a href=\"billeder.php?bid=".($bid-1)."\">Forrige</a>";
> echo "<a href=\"billeder.php?bid=".($bid+1)."\">Naeste</a>";
> }
> ?>
>
Mange tak, nu fik jeg det til at virke. Jeg har dog lige et ekstra
spørgsmål:

er der nogen forskel på om jeg bruger:

$billeder = array("1.jpg", "2.jpg", "3.jpg");
$bid = (int)$_GET['bid'];

eller:

foreach($_GET as $key => $value) ${$key} = $value;
$billeder = array("1.jpg", "2.jpg", "3.jpg");

Så vidt jeg kan se virker begge, så jeg går ud fra at det er det samme der
sker, men er det rigtigt?

mvh.

Poul Kubel



Lars Olesen (06-04-2004)
Kommentar
Fra : Lars Olesen


Dato : 06-04-04 12:01

Poul Kubel wrote:

> er der nogen forskel på om jeg bruger:

Hm, ja, der er forskel :)

> $billeder = array("1.jpg", "2.jpg", "3.jpg");
> $bid = (int)$_GET['bid'];

Her laver du et billedarray, og så sætter du en variabel $bid. Du sætter
variablen til en værdi fra $_GET-arrayet, som har bid som key. Du sørger
så for at $bid er et heltal, så der ikke bliver nogen problemer med
nogle, som forsøger at sætte noget andet i.

> foreach($_GET as $key => $value) ${$key} = $value;
> $billeder = array("1.jpg", "2.jpg", "3.jpg");

Her gennemløber du et array med foreach (for each). I prakis omdøber du
her $_GET['bid'] til $key og værdien for $_GET['bid'] til $value.
Fremgangsmåden kan have sin nytte, hvis der var flere værdier gemt i
$_GET-arrayet, men det er der jo ikke!

<http://www.php.net/foreach>

--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på <http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste