Avatar billede learner Praktikant
16. november 2004 - 13:15 Der er 13 kommentarer og
1 løsning

kan ikke få min funktion til at virke

Hej, jeg har en side, på flere sprog.
Derfor require jeg en sprogfil.
I sprogfilen findes en masse variabler og jeg har lavet en funktion.
Funktionen bruger jeg når jeg skal sende emails ud.
Jeg sender nemlig nogle gange på flere sprog på en gang.
Feks den samme email til en dansker, en englænder osv.
Nå, men mit problem opstår således:

Når jeg kalder funktionen, så bliver variablerne ikke sat. Hvorfor ikke?

Hvorfor bliver variablerne (feks $lng_postnr) ikke sat?
Er det fordi at funktionen ligger i en anden fil og bliver required? Næh vel?

jeg kalder funktionen således:
$lng_id = "2";
lng_email_tilbud_til_person($lng_id);

function lng_email_tilbud_til_person($lng_id_sent){
    if ($lng_id_sent=="1"){
        $lng_navn_firmanavn = "Navn/Firmanavn:  ";
        $lng_adresse = "Adresse:        ";
        $lng_postnr = "Postnr:          ";
    }
   
   
    if ($lng_id_sent=="2"){
        // English
        $lng_navn_firmanavn = "Name/Company:        ";
        $lng_adresse = "Adress:              ";
        $lng_postnr = "Postal code:        ";
    }
}

Hvad dælen er det jeg har misforstået ved brugen af funktioner i PHP :o)

Tak
Avatar billede hmortensen Nybegynder
16. november 2004 - 13:20 #1
Hvis du skal bruge variablerne uden for funktionen, skal de returneres:

function MinHejFunktion($navn) {
$hilsen = "Hej ".$navn;
return $hilsen;
}

echo MinHejFunktion("Knud");
Avatar billede learner Praktikant
16. november 2004 - 13:27 #2
Okay, har du så en god ide til at returnere alle på en gang?
Avatar billede learner Praktikant
16. november 2004 - 13:30 #3
ville det her virke:
function lng_email_tilbud_til_person($lng_id_sent){
    if ($lng_id_sent=="1"){
        $lng_navn_firmanavn = "Navn/Firmanavn:  ";
        $lng_adresse = "Adresse:        ";
        $lng_postnr = "Postnr:          ";
    }
   
   
    if ($lng_id_sent=="2"){
        // English
        $lng_navn_firmanavn = "Name/Company:        ";
        $lng_adresse = "Adress:              ";
        $lng_postnr = "Postal code:        ";
    }
    return $lng_navn_firmanavn;
    return $lng_adresse;
    return $lng_postnr;
}
Avatar billede learner Praktikant
16. november 2004 - 13:31 #4
Der må da være en måde... :o)
Avatar billede hmortensen Nybegynder
16. november 2004 - 13:39 #5
Jeg ville nok lave et array:

$lng = array(
1 = array('firmanavn' = 'Navn/Firmanavn: ', 'adresse' = 'Adresse: ', 'postnr' = 'Postnr: '),
2 = array('firmanavn' = 'Name/Company: ', 'adresse' = 'Street address: ', 'postnr' = 'Postal cose: ')
);


echo $lng[$lng_id_sent]['firmanavn'];
echo $lng[$lng_id_sent]['adresse'];
echo $lng[$lng_id_sent]['postnr'];
Avatar billede bumle90 Nybegynder
16. november 2004 - 13:41 #6
Du er nødt til at lægge dem i et array istedet.
Noget i retning af det her...Håber du fanger ideen :)

function lng_email_tilbud_til_person($lng_id_sent){
    $retval=array();
    if ($lng_id_sent=="1"){
        $retval['lng_navn_firmanavn'] = "Navn/Firmanavn:  ";
        $retval['lng_adresse'] = "Adresse:        ";
        $retval['lng_postnr'] = "Postnr:          ";
    }
   
   
    if ($lng_id_sent=="2"){
        // English
        $retval['lng_navn_firmanavn'] = "Name/Company:        ";
        $retval['lng_adresse'] = "Adress:              ";
        $retval['lng_postnr'] = "Postal code:        ";
    }
    return $retval;
   
}


<?php
$langarray=lng_email_tilbud_til_person($id);

//skriv ud på siden via fx.
$langarray['lng_postnr']

?>
Avatar billede hmortensen Nybegynder
16. november 2004 - 13:47 #7
Og så uden fejl:

$lng = array(
1 => array(
    'firmanavn' => 'Navn/Firmanavn: ',
    'adresse' => 'Adresse: ',
    'postnr' => 'Postnr: '
),
2 => array(
    'firmanavn' => 'Name/Company: ',
    'adresse' => 'Street address: ',
    'postnr' => 'Postal cose: '
)
);
Avatar billede bojo Nybegynder
16. november 2004 - 13:47 #8
<?
function multiret() {
  return array(1,2,3);
}

list( $ret1, $ret2, $ret3 ) = multiret();
?>
Avatar billede bumle90 Nybegynder
16. november 2004 - 13:47 #9
Æv der var jeg vidst ikke hurtig nok hehe :)
Avatar billede learner Praktikant
16. november 2004 - 13:56 #10
Nej, jeg vælger den gamle metode så:

$lng_navn_firmanavn['1'] = "Navn/Firmanavn:  ";
$lng_navn_firmanavn['2'] = "Name/company:    ";
$lng_adresse['1'] = "Adresse:        ";
$lng_adresse['2'] = "Address:        ";
$lng_postnr['1'] = "Postnr:          ";
$lng_postnr['2'] = "Post code:      ";

og så udskriver jeg således:
echo $lng_postnr[$language_id];

Det er nemmest at lave og det fungerer ok.

Men æv æv æv...
Jeg troede man kunne brug funktioner til det!

Tak for jeres forslag.
Smid et svar og jeg deler lidt point ud
Avatar billede hmortensen Nybegynder
16. november 2004 - 13:59 #11
Hvorfor bruger du så ikke det 2d array jeg har lavet til dig ?

Der er ikke noget 'smart' i at bruge en funktion her...
Avatar billede bumle90 Nybegynder
16. november 2004 - 14:22 #12
Essentielt når du laver sprogstyring bør du gemme alt sprog i en tabel i din database, lægge en variabel i fx. en sessionvariabel der afgør sprog. Ved hvert kald til dit site skal du så hente data ud fra tabellen til præcis den/de (hvis du viser flere sider på en gang) side(r) du skal vise. Lav en tabel med fx. |nøgleord|side|sprog| så kan du lynhurtigt tilføje et nyt sprog hvis du laver fx. et webinterface til tabellen....og hvem som helst..fx. en sekretær kan sidde i ro og mag og laver oversættelser....uden overhovedet at kende noget som helst til hvordan du har programmeret det
Avatar billede learner Praktikant
16. november 2004 - 16:20 #13
bumle90
Jeg har næsten gjort det som du skriver. bare med en sprogfil til hver fil i stedet. Så kan man nemlig sætte andre til at oversætte :o)

hmortensen
Det er for besværligt at lave så meget kode om nu :o)
Og jeg synes nu os det fungerer fint som det er :o)

Tak allesammen.  :o)
Jeg går ud fra i smider et svar snart, ellers beholder jeg dem bare ;o)

Fortsat god dag!
Avatar billede learner Praktikant
16. november 2004 - 16:21 #14
svar
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