Avatar billede comeback Nybegynder
11. november 2003 - 15:41 Der er 21 kommentarer og
1 løsning

Skifte til samme side med NYT sprog

Jeg har brug for en funktion hvor man kan klikke på flag for at komme til et andet sprog engelsk, svensk etc. Det skal være således at man kan være på en dansk side (lad os kalde den www.minside.dk/dansk/nogetafentekst.php) når man så klikke på det svenske flag skal den gå til siden www.minside.dk/svensk/nogetafentekst.php.

Altså ikke ikke bare www.minside.dk/svensk

Kan man det ? Altså skifte "dynamisk" ?
Avatar billede avminarm Juniormester
11. november 2003 - 15:49 #1
du kan lave det i et link:

<a href="goto.php?op=dk">dansk flag her</a>
<a href="goto.php?op=se">svensk flag her</a>

<?php
if($_GET['op'] == "dk"){
  header("location: svensk/nogetafentekst.php");
}
if($_GET['op'] == "dk"){
  header("location: dansk/nogetafentekst.php");
}

er det det du er ude efter? - det kan laves bedre og mere udførligt end her
Avatar billede avminarm Juniormester
11. november 2003 - 15:49 #2
hov 2. gang skal der self stå se i stedet for dk i if($_GET['op'] == "se"){
Avatar billede comeback Nybegynder
11. november 2003 - 16:05 #3
Hej avminarm
jamen det er jo egentlig ikke dynamisk? Jeg mener hvis jeg nu står på en hvilken som helst dansk side. hvordan kan jeg så springe til den samme side bare på svensk (eller engelsk eller lign.)
Avatar billede jakoba Nybegynder
11. november 2003 - 16:07 #4
i filen www.minside.dk/dansk/nogetafentekst.php

<?php  // allerførste linie i filen

$dit_domaaene = "http://minside.dk";  // indsæt selv korrekt værdi

if ( isset( $_GET['sprog'] ) ) {
    $sprog = $_GET['sprog']
    $denne_fil = $_SERVER['PHP_SELF'];
          // skulle give '/dansk/nogetafentekst.php'
    $sti = explode( "/", substr($denne_fil,1) );
    if ( $sti[0] != $sprog ) {
        $sti[0] = $sprog;      // hvis det ikke allerede er det sprog
        $nyUrl = $dit_domaene ."/" .implode( "/", $sti )
        header( "location: " .$nyUrl );
        exit();
    }
}
?>

dit link der skifter til svensk vil så være:
  <a href="?sprog=svensk"><img src="svenskflag.gif" border=0></a>
i alle de sider hvor du har indsat ovenstående

mvh JakobA
Avatar billede comeback Nybegynder
11. november 2003 - 16:30 #5
DET SER MEGET UD SOM DET JEG SKAL BRUGE Jakoba!

Kan man det her ? Jeg får nemlig fejl...
(ALtså jeg har kun prøvet det svenske flag...) Hvordan skal hele scriptet se ud?


<?php // her kommer flag og sprog valg, det er bygget dynamisk op, så man kan spring til "den samme side" på et andet sprog
$domaene = "http://minside.dk";  // indsæt selv korrekt værdi

if ( isset( $_GET['sprog'] ) ) {
    $sprog = $_GET['sprog']
    $denne_fil = $_SERVER['PHP_SELF']; // skulle give '/dansk/nogetafentekst.php'
   
    $sti = explode( "/", substr($denne_fil,1) );
    if ( $sti[0] != $sprog ) {
        $sti[0] = $sprog;      // hvis det ikke allerede er det sprog
        $nyUrl = $domaene ."/" .implode( "/", $sti )
        header( "location: " .$nyUrl );
        exit();
    }
}
?>

<map name="Map">
  <area shape="rect" coords="1,0,32,23" href="http://minside.dk/dansk/" alt="Dansk">
  <area shape="rect" coords="31,0,64,23" <? echo "href='?sprog=svensk'"; ?> alt"Svensk" >
  <area shape="rect" coords="62,0,96,23" href="http://www.minside.dk/english/" alt="English">
  <area shape="rect" coords="94,0,128,23" href="http://minside.dk/deutsch/" alt="Deutsch">
  <area shape="rect" coords="127,0,160,23" href="http://minside.dk/francais/" alt="Francais">
</map>
Avatar billede comeback Nybegynder
11. november 2003 - 16:35 #6
ok der manglede lige et par ; men nu siger den "Warning: Cannot add header information - headers already sent" Det siger den når jeg klikker på det svenske link
Avatar billede comeback Nybegynder
11. november 2003 - 16:36 #7
og linket i adresse feltet bliver til www.minside.dk/dansk/?sprog=svenska
Avatar billede comeback Nybegynder
11. november 2003 - 16:43 #8
Det jeg gerne vil have skiftet ud er bare
www.minside.dk/$sprog/index.php?menu01=nummer2

så det er bare $sprog der skal skiftes...
Avatar billede comeback Nybegynder
11. november 2003 - 16:45 #9
Altså men det der kommer efter $sprog er jo afhængig af hvilken side jeg står på...Capice? (eller er jeg bare latterlig ringe til at forklare mig selv )
;-)
Avatar billede jakoba Nybegynder
11. november 2003 - 17:30 #10
kik igen på linien:
  <?php  // allerførste linie i filen
jeg mener det virkelig. der må ikke stå noget foran. ellers får du den der besked om at headers allerede er sendt.

ja jeg er godt klar over at det blot er navnet på sprog-mappen du vil have ændret.

Det undrer mig at du får en adresselinie med:
    www.minside.dk/dansk/?sprog=svenska
er du sikker på der stod et filnavn før (dvs sikker på at det ikke var index-siden som jo kan stå i adresselinien som
    www.minside.dk/dansk/
hvis du ikke angiver filnavn)

Hvis det var det burde scriptet stadig virke. Og hoppe til den svenske index-side.

dit link
  <area shape="rect" coords="31,0,64,23" <? echo "href='?sprog=svensk'"; ?> alt"Svensk" >
er helt korrekt, omend det nok ville være nemmere blot at skrive den konstante værdi, istedetfor at skifte til php for at ekkoe den. reglerne for 'relativ adresse' gælder også her, dvs at broweren kopierer det der mangler fra den nuværende sides adresse. I dette tilfælde er det så hele adressen.

mvh JakobA
Avatar billede comeback Nybegynder
11. november 2003 - 20:59 #11
Du havde ret jeg harvde ikke sat den øverst...
Men det har jeg nu og kan skifte imellem sprogene men ikke så den går fra www.minside.dk/dansk/index.php?menu01=1&menu02=2&indhold=nyheder
til
www.minside.dk/svensk/index.php?menu01=1&menu02=2&indhold=nyheder

(Altså fra  dansk til svensk)
Den skifter istedet til
www.minside.dk/svensk/index.php


By the way tak for dit uddybende svar. Blev faktisk lidt klogere...
Kan du forstå hvorfor den gør som den gør?
Avatar billede jakoba Nybegynder
11. november 2003 - 21:16 #12
Jep, det er reglerne for relative adresser een gang til. det jeg skriver i linket starter med '?', så alt det i den oprindelig adresse der er efter '?' bliver erstattet med blot 'sprog=svensk'

desværre skal vi bruge noget javascript for at slippe udenom. Jet tænker lige lidt.
Avatar billede jakoba Nybegynder
11. november 2003 - 21:48 #13
jeg håber du testede i en enket fil og ikke har ændret i alle filer for nu skal du til den igen.

Ud med alt det der php jeg lavede før, vi laver det i ren javascript istedet. man kan godtnok videregive get parametre henover en redirect, men det er bøvlet i forhold til blot at bruge javascript.

i <head> sektionen indsætter vi så nedenstående

<script type="text/javascript"> <!-- //

function sprogHop ( nytSprog ) {
    var ptUrl = self.location.href;
    var pathArr = ptUrl.split("/");
    if ( nytSprog != pathArr[3] ) {
        pathArr[3] = nytSprog;
        self.location.href = pathArr.join( "/" );
    }
    return false;
}

// --> </script>

og nu skal dine links være:
  <area shape="rect" coords="31,0,64,23" href='svensk' onclick="return sprogHop('svensk');" alt"Svensk" >

det fylder lidt mere end før i links-ene, men er vist til gengæld lidt hurtigere for hvert hop.

mvh JakobA
Avatar billede comeback Nybegynder
11. november 2003 - 22:10 #14
Kære RARE JakobA.

Jeg er så dybt imponeret over din kunnen og din velvilje til at hjælpe "dummies" som mig selv.
Det virker og det skal du satme har tak for! Point er slet ikke nok.

Mange tak for din tid og din hjælp. Det spiller max!

Smid et svar så jeg kan honorerer din tid.
Avatar billede jakoba Nybegynder
11. november 2003 - 22:30 #15
anytime :)
Avatar billede comeback Nybegynder
11. november 2003 - 22:39 #16
et svar Tak
Avatar billede jakoba Nybegynder
11. november 2003 - 22:45 #17
ups.
Avatar billede agercon Nybegynder
11. november 2003 - 23:06 #18
Arbejder lige på et svar i rent PHP, så du ikke skal bekymre dig om brugerne har JavaScript-understøttet i deres browser eller har slået det fra.

De herligste hilsner, Claus Sørensen
Avatar billede sukos Juniormester
11. november 2003 - 23:37 #19
I en fil som includes øverst på alle sider, bruger jeg:

$table = ""; // Ja, jeg splitter db op i langtables
$$table = "Forsiden"; // Forsiden skal altid vises som øverste link :O)

if(!isset($_COOKIE["lang"])) {
setcookie("lang", "da", time()+2592000); //En cookie, for lidt brugervenlighed
}else{
    if($_COOKIE["lang"] == "eng") {
$table = "eng"; //Engelsk table
$$table = "Home"; //Home tekst
    }
}

Og lang.php som "skifter" sprog

<?php
if(isset($_SESSION["back"])) {
if(isset($_GET["lang"])) {
    if($_GET["lang"] == "da") {
setcookie("lang", "da", time()+2592000);
    }else{
setcookie("lang", "eng", time()+2592000);
    }
}
header("Location:". $_SESSION["back"] ."");
exit;
}
?>
Avatar billede agercon Nybegynder
12. november 2003 - 00:09 #20
En mere enkelt løsning:

<?php
// Henter alt efter servernavnet
$slutsti = $_SERVER['REQUEST_URI'];
// Fjerner det første katalognavn
$slutsti = ereg_replace("^/[^/]*/", "/", $slutsti);
// Sørger for at URL'en følger W3Cs HTML-specifikationer & -> &amp;
$slutsti = ereg_replace("&", "&amp;", $slutsti);
?>

<map name="Map">
  <area shape="rect" coords="1,0,32,23" href="http://minside.dk/dansk<?php echo $slutsti; ?>" alt="Dansk">
  <area shape="rect" coords="31,0,64,23" href="http://minside.dk/svenska<?php echo $slutsti; ?>" alt="Svenska" >
  <area shape="rect" coords="62,0,96,23" href="http://www.minside.dk/english<?php echo $slutsti; ?>" alt="English">
  <area shape="rect" coords="94,0,128,23" href="http://minside.dk/deutsch<?php echo $slutsti; ?>" alt="Deutsch">
  <area shape="rect" coords="127,0,160,23" href="http://minside.dk/francais<?php echo $slutsti; ?>" alt="Francais">
</map>
Avatar billede comeback Nybegynder
12. november 2003 - 09:37 #21
chbs jeg har desværre ikke flere point at gøre godt med (du var for langsom ;-))
Jeg kan godt li din løsning og den virker også perfekt.

Tak for det.
Avatar billede agercon Nybegynder
12. november 2003 - 10:03 #22
Og fordelen ved min løsning er, at man ikke behøver at bekymre sig om den besøgende har JavaScript slået til, og hvis den er, om det så er den udgave, man selv har udviklet til.

Kender nemlig ikke selv nok til DOMS, så jeg kan afgøre om jakoba's JavaScript overholder W3C's DOMS-specifikation.

De herligste hilsner, Claus Sørensen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester