WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Assigna variabelvären (https://www.wn.se/forum/showthread.php?t=23894)

msjoedin 2007-09-28 10:13

Hej alla!

Sitter och blir inte klok på hur jag skall lösa detta. Är ganska säker på att det finns en smart lösning på detta...

Jag har en del variabler i en MYSQL-tabell. I stället för att ställa en fråga varje gång jag behöver ett av dessa värden så tänkte jag assigna dessa till variabler med en enda SQL-fråga. De kolumner jag vill använda från tabellen är 'name' och 'value' och assigna 'value' till variabeln 'name'.
Kod:

$settingsArray = @mysql_query("SELECT * FROM `settings`");
while($row = @mysql_fetch_array($settingsArray))
{
$variableName = "$" . $row['name'];
$variableName = $row['value']; // FEL!
}

Någon som kan säga hur man gör? Finns det funktioner för detta?

/ Mats

allstars 2007-09-28 10:34

Du har alltså php-kod som värde i ett databasfält som du vill exekutera?
Att bara skriva ut koden fungerar inte då de ät strängar.

Jag rekommenderar hellre att du har en "config-fil" som inkluderas på sidan.
Annars kanske man kan köra en "eval" i php (Response.Execute i asp).

msjoedin 2007-09-28 10:59

Ja, jag har ett värde som ett fält i en databas.
Jag vill inte köra en config-fil eftersom dessa värden lätt skall kunna ändras från en adminsida.
Tabellen ser ut typ så här:
id name value
1. sitename www.google.se
2. adminemail [email protected]
osv osv...

Jag får inte detta att funka.

Kod:

$settingsArray = @mysql_query("SELECT * FROM `settings`");
while($row = @mysql_fetch_array($settingsArray))
{
eval("$" . $row['name'] . "=" . $row['value'] . ";");
}
echo $sitename;


coredev 2007-09-28 11:02

Hej Mats.

Får jag föreslå att du gör en variabel som håller all config:

Så istället för $FilePath använder du $conf['FilePath']..

Get it? B)

msjoedin 2007-09-28 11:10

Javisst! Tack!
Det är ett bra alternativ. Blir dock lite konfunderad varför det inte funkar.
Denna kod fungerar om jag inte har mellanslag eller dylikt i variabelvärdet.
Kod:

$settingsArray = @mysql_query("SELECT * FROM `settings2`");
while($row = @mysql_fetch_array($settingsArray))
{
eval('$' . $row['name'] . '=' . $row['value'] . ';');
}
echo $sitename;


msjoedin 2007-09-28 11:24

Jag kör nu som coredev föreslog. Funkar kanon! Tack.

Kod:

$settingsArray = @mysql_query("SELECT * FROM `settings`");
while($row = @mysql_fetch_array($settingsArray))
{
$conf[$row['name']] = $row['value'];
}
echo $conf['sitename'];



Alla tider är GMT +2. Klockan är nu 03:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson