[PHP] Iframe verversen op basis van keuzes in een selectbox

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik wil een jump menu maken waar als ik een item in het menu selecteer ik in een iframe onder het jump menu de pagina krijg die gekoppeld is aan het item.

Hoe kan ik dat doen?

Hier is de code die ik tot nu toe heb:

<?php
// Array with photoalbums:
$albums = array(1 => "vancyfair", "album2");


// Array with links connected to photoalbums:
$links = array(
array("name" => "vancyfair", "link" => "/vancyfair.php"),
);
?>


<select name="ph" size="1">
<option value="">Select an album</option>
<?php
// Elements in array $albums displayed one by one:
foreach ($albums as $albumnumber => $albumname) {
echo "<option value=\"" . $albumnumber . "\">" . $albumname . "</option>\n";
}
?>
</select>

Dit wordt goed weergeven in een jump menu, maar hoe kan ik de desbetreffende pagina weergeven in een iframe?

Verwijderd

Dat is wel heel basic (html trouwens), maargoed:

Een verandering detecteren in je select doe je met javascript (onchange):
http://www.google.nl/sear...&btnG=Google+zoeken&meta=

En de pagina in het ifram aanpassen gaat middels de "location" property (ook javascript):
http://www.google.nl/sear...ocation&btnG=Zoeken&meta=

Verwijderd

Topicstarter
In html en javascript weet ik hoe het moet, maar ik wilde het juist met php doen, zodat ik niet telkens een hele nieuwe pagina moet maken (alleen dan de pagina met foto's, welke in de iframe komt).

Daarom dus de array in php.

Kan iemand me uitleggen of ik goed opweg ben of dat ik iets moet aanpassen.

Alvast bedankt.

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

Zet je code voortaan tussen [ code=taal] en [ /code ] (maar dan zonder spaties, taal is in dit geval PHP), dat is namelijk duidelijker.

Wat je dus wil is in plaats van de redirect naar de gehele pagina, de redirect naar een iframe laten verwijzen?

Dan krijg je toch:

HTML:
1
2
3
4
5
<iframe id="iframe" src="/blaat.php"></iframe>

<select onchange="document.getElementById('iframe').src=this.value">
<option value="/vancyfair.php">..</option>
</select>


Bedoel je trouwens niet fancy fair?

Verwijderd

Topicstarter
Thanks.

Hier moet ik het voorlopig meedoen.

In iedergeval bedankt voor jullie reacties.

_/-\o_

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

De enige manier om dit puur in PHP te doen vereist dat je een nieuw request stuurt naar de server waardoor je hele pagina ververst. Als je dat niet wil (wat me nogal logisch lijkt) zit je vast aan een Javascript-oplossing. ;)

Verder pas ik je titel even aan, want die is in zijn geheel niet omschrijvend voor je probleem. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MarCreative
  • Registratie: Februari 2008
  • Laatst online: 18-06 14:47
Patriot schreef op donderdag 21 augustus 2008 @ 16:03:
Zet je code voortaan tussen [ code=taal] en [ /code ] (maar dan zonder spaties, taal is in dit geval PHP), dat is namelijk duidelijker.

Wat je dus wil is in plaats van de redirect naar de gehele pagina, de redirect naar een iframe laten verwijzen?

Dan krijg je toch:

HTML:
1
2
3
4
5
<iframe id="iframe" src="/blaat.php"></iframe>

<select onchange="document.getElementById('iframe').src=this.value">
<option value="/vancyfair.php">..</option>
</select>


Bedoel je trouwens niet fancy fair?
Ik denk dat je niet slim bent om dit met javascript te doen aangezien dit de enige manier is hoe mensen over je site heen navigeren. Ik zou het gewoon in HTML doen wat dat is ook gewoon de standaard eigenlijk.

Verwijderd

MarCreative schreef op donderdag 21 augustus 2008 @ 16:50:
[...]


Ik denk dat je niet slim bent om dit met javascript te doen aangezien dit de enige manier is hoe mensen over je site heen navigeren. Ik zou het gewoon in HTML doen wat dat is ook gewoon de standaard eigenlijk.
Je kan inderdaad ook gewoon de naam van je iFrame invullen als target in een <a> tag, maar serieus...hoe veel mensen zijn er nu die javascript bewust blokkeren?

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

MarCreative schreef op donderdag 21 augustus 2008 @ 16:50:
[...]


Ik denk dat je niet slim bent om dit met javascript te doen aangezien dit de enige manier is hoe mensen over je site heen navigeren. Ik zou het gewoon in HTML doen wat dat is ook gewoon de standaard eigenlijk.
De OP was redelijk duidelijk, hij heeft een selectbox met daarin de albums en daarmee wil hij doorlinken naar die albums. Een ideale situatie zou er één zijn waarin de links er standaard staan, en vervangen worden door een selectbox met behulp van javascript. Hoewel de vraag natuurlijk blijft in hoeverre dat nodig is. Over het algemeen zijn dergelijke dingen vooral handig voor mensen die een aparte browser gebruiken, bijvoorbeeld blinden. Gezien het feit dat dit fotoalbum's zijn, lijkt het me dat die in ieder geval niet tot de doelgroep behoren. En wie heeft verder nu javascript uit staan, zonder handig genoeg te zijn om zelf te weten hoe dit weer aan moet?
Je kan inderdaad ook gewoon de naam van je iFrame invullen als target in een <a> tag, maar serieus...hoe veel mensen zijn er nu die javascript bewust blokkeren?
Ik denk dat van de mensen die zonder javascript werken, het grootste deel dit bewust doet. Die heb je er echter niet mee, want die weten dat het uit staat en houden er rekening mee. NoScript is een redelijk veelgebruikte extensie van Firefox die je per website laat bepalen of je javascript (en flash en java) toelaat.

[ Voor 19% gewijzigd door Patriot op 21-08-2008 20:38 ]


Verwijderd

Patriot schreef op donderdag 21 augustus 2008 @ 20:35:
[...]


Ik denk dat van de mensen die zonder javascript werken, het grootste deel dit bewust doet. Die heb je er echter niet mee, want die weten dat het uit staat en houden er rekening mee. NoScript is een redelijk veelgebruikte extensie van Firefox die je per website laat bepalen of je javascript (en flash en java) toelaat.
Klopt, die ext. heb ik zelf ook...maar zodra ik merk dat een site (navigatie) berust op JS zet ik dat weer gewoon aan.

Wat ik daar mee aan wil geven: er zijn maar heel weinig mensen die onbewust zonder javascript browsen, dus de potentiele doelgroep die je misloopt door een javascript navigatie te gebruiken is erg klein. Verwaarloosbaar zou ik zelfs durven stellen.

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Waarom zou je dit in een iframe willen stoppen? (Ik dacht dat iframe's al uitgestorven waren)

En als je dan toch van javascript afhankelijk bent, gebruik dan ajax.

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • MarCreative
  • Registratie: Februari 2008
  • Laatst online: 18-06 14:47
Verwijderd schreef op donderdag 21 augustus 2008 @ 17:27:
[...]

Je kan inderdaad ook gewoon de naam van je iFrame invullen als target in een <a> tag, maar serieus...hoe veel mensen zijn er nu die javascript bewust blokkeren?
Ik denk dat dit een niet te verwaarlozen aantal is. Ik weet eigenlijk niet wat het doel is van deze persoon met zijn site, maar als je een informatieve website voor bedrijven programmeert dan is de kans best groot dat Javascript is geblokkeerd.

Verder denk ik dat voor, wat deze meneer wil gewoon een simpel Perl/Python scriptje voldoende is. Ik zelf doe dat ook altijd.

Ik doe het als volgt: Ik maak de layout, hak het in stukken (header, footer, menu). Daarna maak ik gewoon netjes de pagina's die ik wil in een map aan, en laat ik het scriptje recursief alles mooi in elkaar zetten. Dan krijg je gewoon mooie nette HTML zoals het hoort. En als je dan weer een pagina hebt, dan run je het scriptje gewoon opnieuw.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Op zich is een iframe niet eens meer nodig en is het bovendien nog trager met renderen dan een simpele div.

Aangezien de TS vanuit een selectbox de content wil bepalen, is er sowieso JS nodig, dus waar de uiteindelijke content in komt te staan maakt dan niet uit.

Eventueel, al is het niet per se nodig, kan je bijvoorbeeld ook AJAX hiervoor gebruiken.
Dan hoef je alleen de inhoud van je 'frame' (die div of iframe dus) te verversen in plaats van de complete pagina.

Het formulier met de selectbox zelf, zet je dan rond je uiteindelijke content, waar maakt natuurlijk niet uit... :)

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

Er zijn natuurlijk veel betere oplossingen, maar ik vraag me af in hoeverre de TS daarmee is geholpen. Hij heeft het niveau waarop dit soort dingen echt uitmaken duidelijk nog niet bereikt, en aangezien het over fotoalbum's lijkt te gaan is dit eerder een hobbyproject.
Pagina: 1