|
| 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
| |
|
|