slowMedlem sedan apr. 2004148 inlägg Hej!
Har förtillfället en tabell där jag sparar saker som rör min sida så att jag enkelt kan ändra de sakerna i databasen.
ser ut typ så här:
settings:
bakgrundsfärg
framgrundsfärg
sidgrundsfärg
osv...sedan sparar jag bara värden i dessa...
Men jag undrar om det skulle vara möjligt att göra så här istället:
settings:
namnpågrej
värdepågrej
också sedan spara in saker som, bakrundsfärg (namnet) och #000000 (värdet).... ?
Min fråga är bara hur jag kan plocka ut dessa så enkelt som möjligt...
Tidigare har jag då hämtat * från settings och kan ju då skriva ut typ $settings[bakgrundsfarg] men det går inte om jag gör som så som jag vill göra...
är det möjligt?
Ni får utsäkta att det blev så tjorvigt men jag tycker det är svårt att skriva om något man inte riktigt kan :)
Använder mig av mySQl...
SjodahlMedlem sedan maj 20033 218 inlägg Jag tror jag hade lagt upp det enligt följande:
---------------------------------------
tblUsers - Tabell med anv Info
---------------------------------------
userID // Unikt värde
Namn
Efternamn
Password
osv..
---------------------------------------
tblSettings - Tabell med Inställningar
---------------------------------------
userID // Unikt värde.
bgColor
fgColor
SgColor
---------------------------------------
Först hade jag tagit fram användarens userID och gjort en sökning i Settings på efter detta värde:
SELECT * FROM tblSettings WHERE userID='USER_ID'
slowMedlem sedan apr. 2004148 inlägg Jag var lite otydlig, det har ingenting med några medlemmar och inloggning och göra med ett egentillverkat CMS...
Det vore nämnligen enklare att lägga till nya settings på så vis (argumentera gärna emot så jag kanske kommer på andra tankar)....
Jag har sett att forumet punBB gör på det viset och det verkar onekligen smidigt.. :)
Att istället för i ditt exempel ha:
---------------------------------------
tblSettings - Tabell med Inställningar
---------------------------------------
userID // Unikt värde.
bgColor
fgColor
SgColor
---------------------------------------
Så har man så här:
---------------------------------------
tblSettings - Tabell med Inställningar
---------------------------------------
namnpåinställning
värdepåinställning
---------------------------------------
Så när man ska lägga till en ny inställning så lägger man inte till några fält i databasen utan bara en post....
Är det osmart att tänka så? :)
yohpopsMedlem sedan feb. 20011 198 inlägg Är det inte enklare att skapa fler css-filer och spara namnet på dessa i databasen?
slowMedlem sedan apr. 2004148 inlägg Joo, men då blir man bunden till att byta hela css:er. Det är inte jag som ändrar dessa färger nämnligen. Utan en kompis som jag gjort detta CMS åt vill ha möjligheten att ändra färger på vissa saker på hemsidan. Så då har jag styrt det så att färgerna på de saker han ska kunna ändra på hämtar han från databasen.. :)
Men då vore det enklare att lägga till nya värden om jag skulle lyckas göra som jag beskrivit ovan. Men jag har inte lyckats ännu... :)
yohpopsMedlem sedan feb. 20011 198 inlägg Har han väldigt svårt att bestämma sig??
FuelMedlem sedan okt. 20001 285 inlägg Du kanske skulle göra en array
GunnarDMedlem sedan juni 20014 290 inlägg
slow skrev:
---------------------------------------
tblSettings - Tabell med Inställningar
---------------------------------------
namnpåinställning
värdepåinställning
---------------------------------------
Så har phpBB för för inställningarna för forumet, däremot inställningarna för användarna är:
slow skrev:
---------------------------------------
tblSettings - Tabell med Inställningar
---------------------------------------
userID // Unikt värde.
bgColor
fgColor
SgColor
Vilket jag tycker låter rätt smidigt, om det är användar inställningar så måste man på något sätt ha med användarid i posten och då är det enklast att ha en post med inställningar per användare.
Patrik81Medlem sedan okt. 2001538 inlägg Hej, som jag förstår det du funderar på, så skulle det ju bli något i stil med
SELECT * FROM tabell WHERE namnpåinställning = 'bgcolor';
eller
SELECT värdepåinställning FROM tabell WHERE namnpåinställning = 'bgcolor';
och sedan så blir det ju att skriva ut $settings['värdepåinställning']
Och hämtar du ut alla inställningar på en gång så blir det ju en tvådimensionell array, så att du får loopa igenom den tills du hittar det värde du just där och då vill åt med typ:
foreach $settings as $setting
{
if ( $setting['namnpåinställning'] == "bgcolor" )
echo( $setting['värdepåinställning'] );
}
Men har du då många inställningar, så kommer detta att bli RUSKIGT ineffektivt, då du måste loopa igenom en massa innan du hittar rätt.
(Om du nu då inte kör specialicerade frågor mot databasen och bara får ut en endimensionell array, med bara ett namn och ett värde.)
MVH Patrik
Jag hade nog gjort en tabell som:
tabell: settings
__
uniq_id,
group_id,
name,
value
__
Sen sparat inställningarna i en array sen till cookie/session för att slippa dra fram inställningarna varje uppdatering.
Anledning till group_id är att man via den skulle kunna styra hur ofta en viss grupp av inställningar bör hämtas,
eller i vilket sammanhang den ska fram osv.
lite psuedo:
Tabell:
uniq_id group_id name value
0 0 bgcolor #000000
1 0 font_color #FFFFFF
2 1 font_size 14
if (!session[settingsarray]) {
query("SELECT name, value FROM settings WHERE group_id=x");
$array = mysql_get_result_as_an_array(); // så att $array["bgcolor"] = #000000
set_session("settingsarray", $array);
}
$settings = session["settingsarray"]
?>
<body bgcolor="<?= $settings[bgcolor]; ?>"></body>
typ.
slowMedlem sedan apr. 2004148 inlägg Tack för era svar, fungerar perfekt nu :)