Avatar billede Mik2000 Professor
24. november 2010 - 20:01 Der er 13 kommentarer og
1 løsning

Define hentes fra database

Hej

Jeg har en fil index.php

Heri inkluderer jeg en fil: dansk.php
I dansk.php har jeg:
define("TEST", "Dette er en test");

Hvis jeg i index.php laver en echo TEST, så virker det fint

Men så har jeg en database, og i den database har jeg behov for at gemme hvad der skal udskrives. For ikke at gemme alle sprog, gemmer jeg blot TEST i et felt.

Men når jeg så i index.php laver en echo på feltet, så skriver den blot TEST i stedet for at hente teksten definet

Så hvordan får jeg den til at skrive "Dette er en test" når jeg har TEST til at ligge i et felt i databasen?
Avatar billede DGudiksen Nybegynder
24. november 2010 - 21:58 #1
$output = $row[Mysql_data]; // Dit data som skal udskrives.
eval("\$output = \"$output\";");
echo $output;

Noget i den stil vil jeg gætte på, er dog ikke så meget inde i eval selv, men er ret sikker på at det er eval som skal bruges til opgaven, tjek: http://php.net/manual/en/function.eval.php
Avatar billede Springform Nybegynder
24. november 2010 - 22:12 #2
http://www.eksperten.dk/spm/924448

Har lige haft stillet det samme spørgsmål, og vi kom frem til at det ikke kan lade sig gøre

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.
Avatar billede Springform Nybegynder
24. november 2010 - 22:14 #3
Men bliver da lige hængene hvis der kommer nyt lys på sagen
Avatar billede kentora Nybegynder
24. november 2010 - 22:19 #4
Hvis nu vi siger du har to felter i din table(kaldet dansk) (+ id) "key" og "value".
Så henter du alle data fra siden:

$hent_db = mysql_query("SELECT * FROM `dansk`");

Så skal vi behandle de hentede data:

while($hent = mysql_fetch_array($hent_db)){

define($hent['key'], $hent['value']);

}

I din index.php (eller andet sted) skal du så echo constantent $key (TEST):

echo constant("TEST");

Har ikke afprøvet ovenstående, men det burde virke ifølge mine erfaringer, og det W3 siger.. :)

Du kan evt. spare en del filer ved at lave en include med GET variabler i, til din sprog fil.
include("dansk.php");

kan erstattes af:
include("lang.php?lang=da");

og så kalde din table da. så kan en, se, no, ge m.m. nemt tilføjes :)

Du skal bare lige huske at skifte:
$hent_db = mysql_query("SELECT * FROM `dansk`");

med:
$lang = $_GET['lang'];

Mvh Kenneth
$hent_db = mysql_query("SELECT * FROM `$lang`");
Avatar billede kentora Nybegynder
24. november 2010 - 22:28 #5
Der skulle lige byttes rundt på

$hent_db = mysql_query("SELECT * FROM `$lang`");
og
Mvh Kenneth

xD
Avatar billede Mik2000 Professor
24. november 2010 - 23:08 #6
Hej

DGudiksen: Det gør tilsyneladende det samme :(

Springform: Øv det vil da være lidt skidt, da det bliver en meget lang tabel, og vildt mange kald hvis alt sprog skal defineres der

kentora: Her laver man defines ikke?
Det jeg vil var at hente f.eks. TEST fra feltet i tabellen
Og så echo TEST - og i stedet for den blot skriver TEST, så skulle den kigge i den fil jeg har included og skrive det der står i define("TEXT", "Det her")
Avatar billede Mik2000 Professor
24. november 2010 - 23:17 #7
Findes der virkelig ikke en måde så man kan lave den value man får om til en slags key i stedet i PHP
Avatar billede majbom Novice
25. november 2010 - 08:58 #8
som jeg også har skrevet i Springforms tråd - vil jeg foreslå et array med alle dine defines i stedet for defines:

$language['test'] eller $language[$row['define']] kan komme ud på ét :)
Avatar billede majbom Novice
25. november 2010 - 08:59 #9
hvor $row['define'] selvfølgelig indeholder 'test'
Avatar billede kentora Nybegynder
25. november 2010 - 10:08 #10
@Mik2000:
Jo, jeg laver defines, havde vidst misforstået din post :)

Hvad med at lave skrive:
echo constant($row['key']);

Hvor $row['key'] indeholder den key, der er defineret i define.

Virker det ikke?
Avatar billede Mik2000 Professor
25. november 2010 - 13:44 #11
Hej Kentora

Det var lige præcis det jeg skulle bruge. Så virker det :)
Smid et svar og så er der point :)
Avatar billede kentora Nybegynder
27. november 2010 - 12:21 #12
Så lærte jeg også noget :)
Avatar billede Mik2000 Professor
27. november 2010 - 13:22 #13
Mange tak for hjælpen :)
Avatar billede kentora Nybegynder
27. november 2010 - 17:09 #14
Så lidt. Og tak for 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