Avatar billede encorez Nybegynder
04. august 2009 - 23:24 Der er 5 kommentarer og
1 løsning

Metode til DB udtræk

Hej

Jeg ved ikke hvilken af disse to metoder er bedst.

Jeg har en MySQL med en table med emner. Hvert emne som en bruger har valgt skal jeg trække ud. Hvilke emner brugeren har valgt gemmer jeg i et array i en cookie. "Entry" i arrayet er ID'et på emnet og værdien til den entry er den placering brugeren vil have vist emnerne i.
Emne 2, plads 1
Emne 4, plads 2
Emne 7, plads 3
emner[2]->1, emner[4]->2, emner[7]->3
Håber det giver lidt mening.

Spørgsmålet er hvordan jeg skal udtrække det.

1. Jeg udtrække alle de valgte emner fra DB i ét hug. Derefter skal jeg så på en eller anden måde sortere mit udtræk efter placeringerne i arrayet.
F.eks. finder jeg i arrayet Emner at placering 1 er EmneID 2.
Så leder jeg mit udtræk igennem til jeg finder emneID 2 og måske skal bruge mysql_data_seek.
Dette giver kun ét kald til database, men til gengæld noget efterfølgende sorteringsarbejde.

2. Jeg sorterer arrayet efter placering, og for hver entry i arrayet laver jeg et DB query for at få udtrækket.
Det vil give en del flere kald til databasen, til gengæld er der bagefter ikke noget sortering.

Har I nogle tanker til dette, hvis I kan følge med? Hvad er mest effektiv? Hvordan bør jeg gøre?
Avatar billede erikjacobsen Ekspert
04. august 2009 - 23:40 #1
Du kan bruge 1. men så du trækker dine data ud i et array. Det kan du så kigge igennem efter emner.
Avatar billede encorez Nybegynder
05. august 2009 - 13:29 #2
OK, det vil jeg gøre.

Jeg er slet ikke stiv i arrays. Har lige set de forskellige funktioner igennem efter noget til at sortere med.

Er der en php-funktioner der kan hjælpe med at sortere arrayet efter værdierne? Og altså ikke efter index-værdierne.
Avatar billede encorez Nybegynder
05. august 2009 - 13:55 #3
kan asort() f.eks. ikke gøre det?
Avatar billede encorez Nybegynder
05. august 2009 - 19:43 #4
Hmmm, sider og kæmper med et problem med et mysql-udtræk.

Jeg skal bruger emnerIDer i denne rækkefølge, 2, 4, 3 fra mit array.
Så når jeg løber de 3 emner igennem, skal jeg finder i mysql-udtrækket først EmneID 2 og stille pointeren på den, derefter 4 og så 3.

$find_emner = mysql_query($string);
asort($rækkefølgen);
foreach ($rækkefølgen as $rk) {
$temp_emner = $find_emner;

while($emne = mysql_fetch_array($temp_emner)){
  if($emne[id]==$rk) break;
}//WHILE

}//For each
Avatar billede encorez Nybegynder
05. august 2009 - 20:43 #5
Jeg fandt løsningen :)

Jeg stopper nu. Tak for hjælpen
Avatar billede erikjacobsen Ekspert
05. august 2009 - 22:54 #6
Det kan være nogen er interesseret i at vide, hvad resultatet endte med.
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