Avatar billede Springform Nybegynder
19. november 2010 - 13:50 Der er 9 kommentarer og
1 løsning

Define defineret ud fra database

Jeg har lavet en sprog versionering af min side, til dette bruger jeg define.

define('INFO','Information');

Jeg har så alle disse oversættelser i min database. Når jeg skal udskrive fra database fx.

echo $row['INFO'];

så udskriver den som en streng "INFO",

altså nu er "echo $row['INFO']; == echo 'INFO';"

Hvor målet så er at "echo $row['INFO']; == echo INFO;"

Håber det giver mening :P ellers så har denne gut samme problem men der er aldrig kommet en løsning på det.
http://www.eksperten.dk/spm/672571
Avatar billede erikjacobsen Ekspert
19. november 2010 - 14:14 #1
Hvis jeg forstår dig rigtigt .... hvorfor er det så du vil bruge

  echo INFO;

i stedet for

  echo $row['INFO'];

?
Avatar billede danco Nybegynder
19. november 2010 - 16:49 #2
Jeg vil umiddelbart formode at du kan lave et dokument indeholdende alle dine "konstanter" som du så kan bruge på siderne.
Jeg forestiller mig noget alá:


mysql_connect("","","") or die(mysql_error());
mysql_select_database("");
$rs = mysql_query("SELECT * FROM konstanter");
$row = mysql_fetch_array($rs);
define('INFO', $row['INFO']);
define('LOL',$row['lol']);


jeg skal dog ikke gøre mig klog på om det virker efter hensigten, men det burde i min verden være logisk ;)
Desværre forstår compilere ikke altid min verden :)
Avatar billede Springform Nybegynder
19. november 2010 - 21:12 #3
Jeg fik vist forklaret mig forkert.

jeg har lavet mine defines ud fra databasen og det funker. Nu skal jeg så udskrive en række data som så skal oversættes.

laver jeg

echo $row['INFO']

Så udskriver den bare INFO, og ikke det som INFO er defineret for
Avatar billede erikjacobsen Ekspert
19. november 2010 - 21:17 #4
"Jeg fik vist forklaret mig forkert." - jah, det er meget muligt ;)

I hvert fald forstår jeg fortsat ikke hvad du vil.

Når du skriver

  echo $row['INFO']

så har du en felt/attribut med navnet INFO ?

Hvad er det du definerer her - hvad er "Information" ?

  define('INFO','Information');
Avatar billede Springform Nybegynder
19. november 2010 - 21:42 #5
Det var lidt dårligt eksempel prøver lige at udpensle det.

der har jeg en kæmpe lang liste med alle mine definationer, som alle laves ud fra en tabel i min database

fx.

define('INFO','Information');
define('HELP','Hjælp');

så skal jeg bruge info så
echo INFO;

og det udskriver så "Information"

Nu er jeg så et sted hvor jeg skal udskrive en lidt dynamisk, alt efter input. Jeg har jo så alle mine definationer i databasen og vil så gerne hente dem jeg skal bruge.

ender så ud med en løkke som skal indeholder

echo $row['text']."<br/>";

rækken text indeholder så en liste med alle mine deifnationer. Så min løkke udskriver så

INFO
HELP

Hvor der jo skulle have stået

Information
Hjælp
Avatar billede erikjacobsen Ekspert
20. november 2010 - 12:50 #6
Det kan man jo ikke, som du har set.

En "define" virker kun i PHP-kildeteksten, og laver ikke automatisk om på indholdet af en streng. Det ville faktisk være meget underligt, hvis den gjorde.

Så du må lave det sprog-halløj på en anden måde - og det man vel typisk gør, er at skrive teksterne på de forskellige sprog i databasen, og så vælge det aktuelle. Der er mange måder, og sikkert masser af eksempler på nettet.
Avatar billede majbom Novice
21. november 2010 - 23:41 #7
kunne du ikke have alle dine 'defines' i et array i stedet?
Avatar billede Springform Nybegynder
22. november 2010 - 08:21 #8
Så du må lave det sprog-halløj på en anden måde - og det man vel typisk gør, er at skrive teksterne på de forskellige sprog i databasen


Den løsninger var også den jeg havde lavet, jeg kunne bare se et sted jeg kunne trimme koden (eller det kunne man jo så ikke), og tænkte det kunne gøres smartere.

Men mange tak for indsatsen :), hvis du alligevel gerne vil have lidt point så smid et svar så kalder vi den lukket.

kunne du ikke have alle dine 'defines' i et array i stedet?

Jeg tror ikke det kommer til at give mig en fordel i denne situation.
Avatar billede erikjacobsen Ekspert
22. november 2010 - 12:34 #9
For at kalde den lukket, skal du, eller en anden, lægge et svar, der efterfølgende accepteres.
Avatar billede Springform Nybegynder
22. november 2010 - 13:01 #10
Syntes bare du fortjener pointene, så ville lige give dig en mulighed for at skifte mening mht. at modtage point.
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