Avatar billede Mik2000 Professor
20. februar 2011 - 13:22 Der er 8 kommentarer og
1 løsning

Hent fra tabel til select

Hej

Jeg har 2 multiple select lister og ønsker at kunne overføre fra den ene liste til den anden, og det er sådan set lykkes.

Mit problem er at listen til venstre henter fra databasen, og jeg er i tvivl om det er den smarteste måde, for der er følgende problemer:

1: Hvordan sikrer man at dem man allerede har flyttet over i feltet til højre, ikke vises længere på listen til venstre (if på id vil jo give rigtig meget kode)

2: Bliver det for tungt at køre en forspørgsel til database hver gang man skriver noget i feltet med LIKE i sql'en
Avatar billede tjens Nybegynder
20. februar 2011 - 16:15 #1
Måske kan det ordnes i javascript.
Følgende demo viser princippet:

http://www.mredkj.com/tutorials/tutorial_mixed2b.html

Når javascript bare flytter DOM-objekter mellem de to selects, er det ikke muligt at få vist en værdi i begge sider.
Avatar billede Mik2000 Professor
21. februar 2011 - 00:33 #2
Hej

Tak... det fungerer egentlig ganske fint, men jeg har brug for at adde nogle til feltet til at starte med, og forsøger at bruge add-funktionen
addOption(theSel, theText, theValue)

skriver addOption(document.form1.felt1, "tekst", "5")
Men den smider ikke nogle ting ind i feltet selvom den kører den

Har også prøvet følgende uden held:
addOption("document.form1.felt1", "tekst", 5)
addOption('document.form1.felt1', 'tekst', 5)
addOption('document.form1.felt1', 'tekst', '5')
addOption("document.form1.felt1", "tekst", "5")

Men intet kommer der i
Avatar billede tjens Nybegynder
21. februar 2011 - 10:18 #3
#2 Du skal ikke have første parameter i anførselstegn, da parameteren skal være et DOM-objekt. Prøv denne:
addOption(document.form1.felt1, 'tekst', 5)


Desuden: Det der står i felterne til at starte med er defineret i HTML i eksemplet.
Jeg troede, du allerede havde et script, der viste select 1 med alle options, når siden loader.
Derved skulle det ikke være nødvendigt, at du udfører addOption.
Avatar billede Mik2000 Professor
21. februar 2011 - 11:33 #4
Hej

Der kommer desværre ikke noget i

Det er fordi den skal vise noget fra PHP, men der skal være et søgefelt så den kun viser det man søger på

Derfor er min ide at gemme alle php poster i et javascript array, og så lade javascript skrive dem til feltet
Når der så søges så tager javascript de ting der matcher og skriver ind i nyt array, tømmer feltet og skriver det nye array ind i feltet.
På den måde får vi kun et kald til databasen

Men jeg kan slet ikke få den til at smide noget i feltet

Mit felt ser sådan ud
<form id="form1" name="form1" method="post" action="">
<select name="felt1" size=25 multiple="multiple" id="felt1" style="width:322px; overflow: auto;">
</select>
</form>

Men addOption(document.form1.felt1, 'tekst', 5) gør ingenting
Avatar billede tjens Nybegynder
21. februar 2011 - 13:46 #5
Har tastet et eksempel med din kode i den kode jeg tidligere linkede til, og det virker fint: http://tjens.dk/eksperten/932111/

Hvornår udfører du addOption?
Det kan ikke køres tidligere end onload, fordi HTML-DOM-objektet skal eksistere først.
Avatar billede Mik2000 Professor
21. februar 2011 - 17:27 #6
Hej

Fik kørt den for tidligt ... virker nu

Tak for hjælpen

Hvis du ligger et svar så er der point :)
Avatar billede Mik2000 Professor
21. februar 2011 - 17:34 #7
Måske du også kan hjælpe med:
http://www.eksperten.dk/spm/932217

:):):)
Avatar billede tjens Nybegynder
21. februar 2011 - 18:09 #8
Svar
Avatar billede Mik2000 Professor
21. februar 2011 - 18:18 #9
Tak for hjælpen :)
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