Avatar billede Morten Nybegynder
29. marts 2004 - 01:15 Der er 25 kommentarer og
1 løsning

hvordan finder jeg variablen

Hej

Er kold på dette:

Jeg har følgende i toppen af alle mine sider som fortæller hvilket sprog brugeren har valgt. Jeg er nu ved at bikse noget tabel sammen som indeholder diverse fraser på hvert enkelt sprog og derfor har jeg brug for at vide hvilket sprog der er valgt - men jeg kan ikke finde ud af hvilken variable jeg skal bruge og hvordan syntaksen skal se ud i min SQL sætning??????

Her er startkoden på alle mine sider:
<?php
    session_start();
        if ($_GET["lingo"])
            {
                $_SESSION["menu_lang"] = $_GET["lingo"];
            };
?>

her ønsker jeg så at hente fra den kolonne som svare til det valgte sprog - eks. DK eller US:

$sql = "SELECT - HER SKAL VARIABLEN VÆRE - FROM lang WHERE text-id=1";

Håber i forstår spørgsmålet...
Avatar billede olebole Juniormester
29. marts 2004 - 01:19 #1
<ole>

Hvad hedder kolonnen i tabellen?

/mvh
</bole>
Avatar billede Morten Nybegynder
29. marts 2004 - 01:22 #2
DK eller US

Men jeg tror at problemet er at variablerne er tomme - så det jeg ´lige skal bruge hjælp til er min kode i starten - altså jeg skal tjekke på om $_SESSION["menu_lang"] er tom og hvis den er så skal den sættes til en default værdi eks. DK

og lige - tabelen er oprette med en kolonne med text-id - en kolonne for hvert sprog
Avatar billede olebole Juniormester
29. marts 2004 - 01:25 #3
Jeg fatter ikke en stråhat af, hvad du vil - hvordan din tabel ser ud - eller for den sags skyld, hvordan din kode ser ud
Avatar billede Morten Nybegynder
29. marts 2004 - 01:27 #4
OKAY.. så tager vi den fra zero

min kode i starten af hver side er:

<?php
    session_start();
        if ($_GET["lingo"])
            {
                $_SESSION["menu_lang"] = $_GET["lingo"];
            };
?>

men jeg har lige fundet ud af at den ikke sætter en standard værdi - altså vil jeg tjekke på om $_GET["lingo"]; er tom og hvis den er så skal sættes til DK f.eks.

Jeg tror ikke databasen er problemet men at variablen er tom....
Avatar billede sukos Juniormester
29. marts 2004 - 01:31 #5
<?php
if(!isset($_GET["lingo"])) {
var = dk
}else{
    if($_GET["lingo"] == "US"
var = us
    }else{
var = dk
    }
}
?>
Avatar billede sukos Juniormester
29. marts 2004 - 01:32 #6
eller, hvis du har et array med de forskellige valgmuligheder:
<?php
$langs = array("dk", "us", "de");
if(isset($_GET["lingo"]) && in_array($_GET["lingo"], $langs)) {
$var = $_GET["lingo"];
}else{
$var = "dk";
}
?>
Avatar billede olebole Juniormester
29. marts 2004 - 01:33 #7
<?php
session_start();
if ( isset($_GET["lingo"]) && $_GET["lingo"]<>"" ) {
    $_SESSION["menu_lang"] = $_GET["lingo"];
} else {
    $_SESSION["menu_lang"] = "DK";
}
?>
Avatar billede olebole Juniormester
29. marts 2004 - 01:36 #8
... og en lidt mere effektiv version af sukos':

<?php
$langs = array("dk"=>1, "us"=>1, "de"=>1);
if ( isset($_GET["lingo"]) && $langs[$_GET["lingo"]] ) {
    $var = $_GET["lingo"];
} else {
    $var = "dk";
}
?>
Avatar billede Morten Nybegynder
29. marts 2004 - 01:40 #9
hmmmm...

hvorfor husker den nu ikke dette på tværs af siderne???

Jeg ændre sprog på følgende måde:

                               
<a class="logo1" href="<? echo $_SERVER['PHP_SELF'];?>?lingo=dk">
                               
<a class="logo1"  href="<? echo $_SERVER['PHP_SELF'];?>?lingo=us">

men den vender tilbage til dansk

jeg brugte følgende:
<?php
session_start();
if ( isset($_GET["lingo"]) && $_GET["lingo"]<>"" ) {
    $_SESSION["menu_lang"] = $_GET["lingo"];
} else {
    $_SESSION["menu_lang"] = "DK";
}
?>
Avatar billede olebole Juniormester
29. marts 2004 - 01:46 #10
Fordi du sætter en ny session på hver side. Ellers må du lave noget à la:

<?php
session_start();
if ( !isset($_SESSION["menu_lang"]) || $_SESSION["menu_lang"]=="" ) {
    if ( isset($_GET["lingo"]) && $_GET["lingo"]<>"" ) {
        $_SESSION["menu_lang"] = $_GET["lingo"];
    } else {
        $_SESSION["menu_lang"] = "DK";
    }
}
?>
Avatar billede Morten Nybegynder
29. marts 2004 - 01:49 #11
jeg vender tilbage i morgen.....
Avatar billede olebole Juniormester
29. marts 2004 - 01:50 #12
oki  :)
Avatar billede Morten Nybegynder
29. marts 2004 - 22:26 #13
Er du der olebole?

Bør jeg bruge session_register et eller andet sted i koden?

...(dette er lidt pineligt) koden er noget jeg har sat ind for meget længe siden - og jeg kan ikke helt selv gennemskue den - kunne du måske lige kort forklaret - altså er der eneligt en grund til både lingo og menu_lang - kunne jeg ikke bare have en variabel f.eks. sprog...?

Jeg er absolut grøn i dette med session - og jeg vil så gerne forstå ;O)
Avatar billede olebole Juniormester
29. marts 2004 - 23:43 #14
Nej, 'session_register' var noget man brugte i gamle opsætninger af PHP. Bruger du $_GET, $_POST og $_SESSION, har du ikke brug for den.

Jo, på en enkelt side kan du godt bruge en variabel - men skal du bruge sprog-oplysninger fra side til side, er det meget smart at have det liggende i en session-variabel.
Så behøver du ikke bekymre dig om at skulle sende variablen med, når du skifter side. Er session-variablen sat én gang, følger den brugeren (så længe din session er sat til at vare) og kan trækkes ud på efterfølgende sider med:

<?
session_start();
print $_SESSION["manu_lang"];
?>

/mvh
Avatar billede Morten Nybegynder
29. marts 2004 - 23:43 #15
Nå jeg tror sq jeg fik det til at virke... tror også jeg har forstået noget..

Altså lingo lever kun fra jeg sætter den til jeg loader siden igen - så er den væk - derfor tildeles menu_lang værdien da denne lever i på alle sider hvor session_start er sat - er det rigtigt???

Her er så den kode som jeg fik til at virke:

if (isset($_GET["lingo"]))
    {
        $_SESSION["lang"] = $_GET["lingo"];
    } elseif ($_SESSION["lang"] == "") {
        $_SESSION["lang"]="dk";
    }
Avatar billede Morten Nybegynder
29. marts 2004 - 23:49 #16
hvis jeg så senere på siden skal finde ud af hvilket sprog der valgt - og udfra dette hente fra min database så gør jeg hvordan (tilbage til starten af spørgsmålet)

Altså min tabel er opdelt i 4 kolonner:

Text-id  |  US teskt  | DK tekst    | DE tekst      |
        |            |              |                |
  1      | US lang.  | Dansk tekst  | Deutshe tekst  |

Så skal min sql se ud hvordan?

  SELECT $_SESSION["menu_lang"] FROM lang ????????? (også gerne svar med rigtig syntax)
Avatar billede olebole Juniormester
30. marts 2004 - 00:01 #17
Jeg forstår slet ikke din DB-tabel - og hvordan du vil bruge det  :)
Avatar billede Morten Nybegynder
30. marts 2004 - 00:06 #18
Okay - jeg vil prøve at forklare...

jeg vil ud fra det valgte sprog (menu_lang) hente en tekst-streng i min database fra den kolonne som svare til sproget .... var det mere forståeligt - dette for at undgå at have en masse kode i på mine sider.... det kan da godt være det er en dum måde men jeg er da åben for andre forslag....
Avatar billede Morten Nybegynder
30. marts 2004 - 00:21 #19
Forklare dette bedre:?

$sql = "SELECT ".$_SESSION["lang"]." FROM lang WHERE ID = '0002' ";
$result = mysql_query($sql, $connection) or die(mysql_error());

Det virke dog ikke den kan ikke lide min $sql den siger
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource

Linie den fejler på er $result
Avatar billede olebole Juniormester
30. marts 2004 - 00:25 #20
Prøv:
  $result = mysql_query($sql) or die(mysql_error());
Avatar billede olebole Juniormester
30. marts 2004 - 00:28 #21
... og hvis der er mellemrum i din session-variabels værdi, _skal_ den escape's:

  $sql = "SELECT `".$_SESSION["lang"]."` FROM lang WHERE ID = '0002'";

I det hele taget er det god kodeskik, altid at escape navne:

  $sql = "SELECT `".$_SESSION["lang"]."` FROM `lang` WHERE `ID` = '0002'";
Avatar billede Morten Nybegynder
30. marts 2004 - 00:30 #22
Yes - og så bare en sidste lille ting..

Hvordan "udskriver" jeg indholdet af $result på skærmen?

hvis jeg bruger echo $result får jeg bare Resource id #8 ....

Og smid så venligst et svar du har mere en fortjent dine point - og jeg er vist blevet klogere...  ;O)
Avatar billede olebole Juniormester
30. marts 2004 - 00:37 #23
Hvis du ved, der kun er én række i dit resultat, kan du skrive:

$row = mysql_fetch_assoc($result);
print $row["KOLONNE_NAVN"];

Er der mange rækker, kan du f.eks. skrive:

$streng = "";
while ( $row=mysql_fetch_assoc($result) ) {
  $streng .= $row["KOLONNE_NAVN"]."<br>";
}
print $streng;
Avatar billede olebole Juniormester
30. marts 2004 - 00:37 #24
... og et svar  :)
Avatar billede Morten Nybegynder
30. marts 2004 - 00:39 #25
jeg er meget meget taknemmelig for din store hjælp!!!

Hvad mener du forøvrigt om måden at håndterer flere sprog på?

Det skal siges at Databasen formentlig ikke kommer til at indeholde mere end 100-200 rækker...???
Avatar billede olebole Juniormester
30. marts 2004 - 00:52 #26
Nå ikke flere ... så kan jeg næsten regne ud, du ikke har 'jysk', 'fynsk' og 'sjofelt' med  ;o)

Jeg ville nok have en bruger-tabel med mange forskellige oplysninger - herunder et sprog-ID.
Det ville jeg så bruge til at includere en af mange sprog-filer med et associativt array med ordene i ... à la:

$langArray = array(
  "apple" => "æble",
  "button" => "knap",
  "jazz" => "jazz"
);

... eller et tal-indexeret array:

$langArray = array(
  "æble",
  "knap",
  "jazz"
);

Så kan jeg referere til array'et, når et ord skal oversættes:

  <button><?=$langArray["jazz"]?></button>
eller:
  <button><?=$langArray[2]?></button>

Der er mange måder at gøre det på  :)
/mvh
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