Navigatie werkt niet

Status
Niet open voor verdere reacties.

Toegang

Gebruiker
Lid geworden
10 jun 2003
Berichten
58
Hallo,
Ik ben op zoek naar een slimme manier om (zonder frames en tabellen) een meertalige website op te zetten. Bij het spieken op het web kwam ik het volgen tegen:

Code:
…
<body onload="init()">
<form name="main" method="post" action="index.php">
	<input type="hidden" name="lang" value="nl">
	<input type="hidden" name="page" value="0">
</form>
…
waarbij dit in de head stond:

Code:
…
<script type="text/javascript" src="cgi-bin/js/navigation.js"></script>
<script lang="JavaScript">
  function init() 
  {
    _form = document.forms['main'];
  }
</script>
…

en navigation.js hieruit bestond:

Code:
…
function selectLanguage(aL)
{
	_form.lang.value = aL;
	_form.submit();
}

function selectMenu(aP)
{
	_form.page.value = aP;
	_form.submit();
}
…

Als ik deze code kopieer werkt het niet, op de originele site wel . . . . . Daar kun je om het even vanaf welke pagina van taal switchen zonder daarna eerst weer vanaf de home verder te gaan.

Mijn vragen:
1 waarom werkt het niet?
2 hoe kan ik de waarden die in het formulier zitten elders in de html-code gebruiken, om bijvoorbeeld de juiste includes binnen te halen?

Het is me nog niet gelukt om de juiste ‘naald in de google-hooiberg’ te vinden. Wie helpt me?
 
Laatst bewerkt:
De waarden uit het form worden verzonden als formdata (method is POST) in een HTTP Request naar index.php.

De waarden in het form worden dus naar de server gestuurd waar de PHP uitgevoerd wordt.

De mee gestuurde waarden kunnen in de PHP opgehaald worden met $_POST["lang"] en $_POST["page"] en daar met behulp van PHP kan je aangeven wat wordt weergegeven in de 'HTML' die uiteindelijk door de server wordt teruggestuurd naar de browser.
 
SUPER,

Dank je wel. Punt 2 is opgelost! Ik kan nu de waarden gebruiken, maar
Punt 1 is niet geheel opgelost.

Als ik de pagina open wordt die init() functie niet uitgevoerd, "lang" en "page" hebben dan nog geen waarde. Hoezo??? En hoe doe ik het dan wel
 
Ik heb nu een soort houtje touwtje oplossing gevonden:

De startwaarde wordt niet toegekend, daarop heb ik deze omweg toegevoegd:
Code:
if ($_POST["lang"] == "" && $_POST["page"] == "")
{
	$_POST["lang"] = "nl";
	$_POST["page"] = "0";
}

(Nu ik dit toegevoegd heb zijn die twee input-regels ook overbodig geworden)
Vervolgens heb ik de f'cies selectLanguage en selectMenu samengevoegd omdat hij anders weer naar mijn nieuwe beginwaarden terugkeerde.

Code:
function selectMenu(aL,aP) { _form.lang.value = aL; _form.page.value = aP; _form.submit(); }

Maar ik ben nog steeds geïnteresseerd in een nette oplossing.
 
Dat is een goede manier, maar dan misschien meer in de richting van:
PHP:
$lang = "nl"
$page = 0;

if ($_POST["lang"] != "" && $_POST["page"] != "")
{
	$lang = $_POST["lang"];
	$page = $_POST["page"];
}
en deze variabelen $lang en $page weer uitschrijven in de value van de input tags, die dus gebruikt worden om de instellingen van de gebruiker te bewaren.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan