Door
Snelle Jaap
op 07-02-2017 11:37
gewijzigd op 07-02-2017 14:52
3.240 views
Ik heb een stukje code om van taal te switchen op mijn site. Dat werkt prima behalve op dynamische pagina's. Als ik bijvoorbeeld de taal aanpas op de index.php dan onthoud hij dat overal maar ik kan de taal alleen aanpassen op index.php contact.php en andere vaste paginas.
Als ik de taal wil aanpassen op bijvoorbeeld service-naam.html (in werkelijkheid content.php op de server) dan gebeurd er niets. Hij blijft altijd op de taal die al gekozen is op een niet dynamische pagina.
Waar kan dat aan liggen?
Hier het stuk waarmee je de taal kiest:
<?
$actual_link = 'http://' . $_SERVER['HTTP_HOST'] . strtok($_SERVER['REQUEST_URI'], '?');
<a href="<? echo $actual_link; ?>?lang=en" class="btn-selector">EN</a>
<ul>
<li class="active"><a href="<? echo $actual_link; ?>?lang=en">EN</a></li>
<li><a href="<? echo $actual_link; ?>?lang=fr">FR</a></li>
<li><a href="<? echo $actual_link; ?>?lang=nl">NL</a></li>
</ul>
?>
En dit staat bovenaan mijn connection file:
<?
session_start();
if ($_GET['lang'] != '') {
$_SESSION['lang'] = $_GET['lang'];
} else if ($_SESSION['lang'] == '') {
$_SESSION['lang'] = 'nl';
}
?>
**quoteknip**
Die gebruik ik om het in code formaat op deze site neer te zetten. Veel sneller dan elke keer [kode] (met een c maar anders maakt hij gelijk van alle tekst code) typen. Plus als ik 2 stukken code wil splitsen dan werkt dat niet, dus dan maar zo.
Dat bedoelt Arient niet.. Je gebruikt [ignore](<?)[/ignore] in je code en niet [ignore](<?php)[/ignore] bijvoorbeeld bij [ignore]<a href="<? echo $actual_link; ?>?lang=en">...[/ignore] [ignore](<?)[/ignore] word niet op elke server ondersteund, gebruik daarom gewoon [ignore](<?php)[/ignore].
Ik zie het ook bij je echo's staan, dus ik hoop dat je de korte notatie niet in de praktijk gebruikt.
Verder is het niet nodig om voorlaatste berichten integraal te quoten. Je kan prima gebruik maken van het grote "Snel reageren" invoerveld onderaan het topic.
Dat bedoelt Arient niet.. Je gebruikt [ignore](<?)[/ignore] in je code en niet [ignore](<?php)[/ignore] bijvoorbeeld bij [ignore]<a href="<? echo $actual_link; ?>?lang=en">...[/ignore] [ignore](<?)[/ignore] word niet op elke server ondersteund, gebruik daarom gewoon [ignore](<?php)[/ignore].
Wat is de code van content.php?
Op mijn server wel, lijkt me dat het juist alleen maar meer ondersteuning zal gaan krijgen ipv van minder toch? Scheelt toch wat typwerk.
Die code is niet relevant voor dit probleem. Hier het stuk php op die pagina, voor de rest overal wat echos op de pagina:
<?
include 'includes/header.php';
if(isset($_GET['alias'])) {
$content = "SELECT * FROM `lb_content` WHERE alias = '".$conn->real_escape_string($_GET['alias'])."' AND state = 1 ORDER BY ordering";
$contentcon = $conn->query($content);
$counter = "UPDATE lb_content SET hits=hits+1 WHERE alias = '".$_GET['alias']."'";
$countercon = $conn->query($counter);
$contentcr = array();
while ($contentcr[] = $contentcon->fetch_array());
// content categories
$categorie = "SELECT * FROM `lb_categories` WHERE alias = '".$conn->real_escape_string($_GET['alias'])."' AND published = 1";
$categoriecon = $conn->query($categorie);
$categoriecr = array();
while ($categoriecr[] = $categoriecon->fetch_array());
Gokje: De inhoud van je dynamische pagina's komen uit de database? En waarschijnlijk is de database niet ingericht om de content in verschillende talen op te slaan -of- zijn de andere talen niet aangemaakt in de database?
Je hebt in je .htaccess ook QSA gebruikt voor je rewriterule die naar content.php leidt?
Also,
>> lijkt me dat het juist alleen maar meer ondersteuning zal gaan krijgen ipv van minder toch?
Ooit gehoord van deprecation?
van php.net:
"PHP also allows for short open tag <¿ (which is discouraged since it is only available if enabled using the short_open_tag php.ini configuration file directive, or if PHP was configured with the --enable-short-tags option).
"
En als je dan per se voor "kort" wilt gaan, dan kun je wel altijd gebruiken