Avatar billede TheYaXxE Juniormester
16. juni 2014 - 00:56 Der er 7 kommentarer

Hent information fra "omvendt" tabel

Hej alle.
Jeg har haft et lille problem som jeg ikke har kunnet finde en løsning på.

Jeg vil have informationer hentet ind fra en tabel via PHP og MySQL.
Disse informationer er en masse indstillinger til min side. Da der er over 30 forskellige indstillinger har jeg, med inspiration fra WordPress, omvendt tabellen så det istedet ser således ud:

setting_name | setting_value
-------------------------
Indstilling 1  | Værdi 1

Indstilling 1  | Værdi 2


..istedet for:

Indstilling 1 | Indstilling 2
-------------------------
Værdi 1        | Værdi 2


Taballen er altså vendt om.

Jeg har set at WordPress bruger dette i nogle af deres tabeller, hvor der er mange indstillinger, men har aldrig helt fundet ud af, hvordan man henter informationerne på denne måde.

Nogle som kan hjælpe? :)
Avatar billede arne_v Ekspert
16. juni 2014 - 01:02 #1
Du SELECT'er vel med en WHERE betingelse paa indstilling!?
Avatar billede TheYaXxE Juniormester
16. juni 2014 - 08:46 #2
Det kunne man godt jo.
Men tænkte om der var en måde, så man kun brugte én forespørgsel i stedet for flere (30 i dette tilfælde)?
Avatar billede erikjacobsen Ekspert
16. juni 2014 - 09:19 #3
Du laver netop kun een forespørgsel:

  SELECT indstilling1,indstilling2 FROM dintabel WHERE ....

Her skal du kun hente een række. I dit første eksempel skal du hente 30 rækker, men det har til gengæld den fordel, at du kan tilføje nye indstillinger uden at skulle lave om i tabelstrukturen.
Avatar billede jakobdo Ekspert
16. juni 2014 - 11:52 #4
Du kan jo lave en query ala:

SELECT setting_value FROM dintabel WHERE setting_name IN('indstilling1','indstilling12,'indstilling3')

Og på den måde har du så 3 "rækker" og en setting i hver.
Avatar billede arne_v Ekspert
16. juni 2014 - 14:50 #5
OR eller IN
Avatar billede TheYaXxE Juniormester
23. oktober 2014 - 23:34 #6
jakobdo

Din løsning ser ud til at virke meget fint. Men her skal man lave en query for hver setting:

$load_setting_1 = mysql_query("SELECT option_value FROM t_settings WHERE option_property IN('setting_1')");
if($setting_1 = mysql_fetch_assoc($load_setting_1)) {
    $set1 = $setting_1['option_value'];
}

------

Er det muligt kun at bruge én query til alle settings, lidt ligesom dette? (virker dog ikke):

$load_settings = mysql_query("SELECT option_value FROM t_settings WHERE option_property IN('setting_1','setting_2','setting_3','setting_4')");
if($setting = mysql_fetch_assoc($load_setting)) {
    $set1 = $setting['setting_1'];
    $set2 = $setting['setting_2'];
    $set3 = $setting['setting_3'];
    $set4 = $setting['setting_4'];
}

Tak på forhånd :D
Avatar billede jakobdo Ekspert
24. oktober 2014 - 09:56 #7
Altså den query jeg har forslået tidligere, den skulle jo gerne sende 3 resultater retur.
Så dem skal du "loope" ala:

while($row = mysql_fetch_assoc($load_settings)){
print_r($row);
}
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

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