Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Overhevelen van variabelen tussen twee multiple selectboxes

martinvw
31 antwoorden
  • Goeiemorgen iedereen,

    Ik zit eigenlijk nog steeds met het hetzelfde probleem van vorige week vrijdag.

    Welk probleem?

    Er is echter wat veranderd;

    [img:cdfebf0ad4]http://www.klussenbank.nl/www/library/problem2.gif[/img:cdfebf0ad4]

    Ik krijg het maar niet voorelkaar om de trefwoorden (gesplitst) over te hevelen naar de tweede selectbox.

    Heeft iemand een idee?

    Vr.gr,

    Djurre






    _________________
    Wij werken hier met fun, friendship, finance :grin:

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-22 11:55 ]
  • 1. Waarom een nieuwe post? Je had toch ook door kunnen gaan in die andere?
    2. Wat lukt er niet?
  • Hoi Annie,

    Goed weekend gehad? :wink:

    - Ja, dat had gekund, maar het zag er naar uit dat ik er niet al te veel reacties op zou krijgen - en het is een ietwat andere opzet (wellicht makkelijker) geworden.
    - Het uitlezen van de array-variabel tussen beide selectboxes en het overhevelen hiervan lukt mij niet.


    Djurre
  • In je andere post heb ik een linkje gezet naar hoe je om kan gaan met een "select multiple". Dan is de rest toch kinderwerk?

    Bij een klik op de "->" knop post je de form naar zichzelf waarbij je de geselecteerde onderdelen in een loopje als options plaatst in de tweede select.
    Feitelijk doe je hetzelfde als het vullen van een select uit een database alleen werk je nu met een array.

    Dus ik zie het probleem niet. En van opmerkingen als "het lukt niet" word ik natuurlijk ook niet veel wijzer. Laat eens zien wat je al gedaan cq. geprobeerd hebt (bijv. een stukje pseudo code waarin de flow van je code duidelijk wordt of waarin je laat zien wat je wil bereiken).
  • Bedankt voor je hulp, je hebt gelijk,

    Ik heb het nu met JavaScript enigzins opgelost:

    [code:1:b5754fbf9c]<?php


    // Copyright © Interakt Online 2001
    // http://www.interakt.ro/

    require("./../../adodb/adodb.inc.php");
    require("./../../Connections/klussenbank_con.php");
    ?><?php
    $Rs_get_trefwoord=$klussenbank_con->Execute("SELECT trefwoord FROM trefwoorden") or DIE($klussenbank_con->ErrorMsg());
    $Rs_get_trefwoord_numRows=0;
    $Rs_get_trefwoord__totalRows=$Rs_get_trefwoord->RecordCount();
    ?><?php
    $Repeat1__numRows = -1;
    $Repeat1__index= 0;
    $Rs_get_trefwoord_numRows = $Rs_get_trefwoord_numRows + $Repeat1__numRows;
    ?>
    <html>
    <head>
    <title>Javascript test</title>
    </head>
    <script language="Javascript1.2">
    <!–
    /**
    * (2002) GoMotion Multimedia
    * Hevel bepaalde opties uit Select1 over naar Select2
    * Met dank aan Mathieu Kooiman <mathieu@gginter.net> (MAP Internet Services)
    * en Annie
    *
    */

    selectedValues = new Array();

    function isSelected(value)
    {
    for (i=0;i<selectedValues.length;i++) {
    if (selectedValues == value) {
    return true;
    }
    }

    return false;
    }

    function hevelOverCurrSelected()
    {
    select1 = document.forms[0].select1;
    s1SelOpt = select1.options[select1.selectedIndex];
    select2 = document.forms[0].select2;

    if (!isSelected(s1SelOpt.value)) {
    select2.options[select2.options.length] = new Option(s1SelOpt.text, s1SelOpt.value,0,0);
    selectedValues[selectedValues.length] = s1SelOpt.value;
    } else {
    alert("Already selected: " + s1SelOpt.value);
    }
    }
    //–>
    </script>
    <body>
    <form method="post" action="bla.php">

    <select name="select1" size="6" multiple>
    <?php while (($Repeat1__numRows– != 0) && (!$Rs_get_trefwoord->EOF))
    {
    ?>
    <option value="<?php echo $Rs_get_trefwoord->Fields("trefwoord")?>">
    <?php echo $Rs_get_trefwoord->Fields("trefwoord")?>
    </option>
    <?php
    $Repeat1__index++;
    $Rs_get_trefwoord->MoveNext();
    }
    ?>
    </select>
    <select name="select2" size="6" multiple>
    </select>
    <input type="button" onclick="hevelOverCurrSelected()" value="OK" />
    </form>
    </body>
    </html>
    <?php
    $Rs_get_trefwoord->Close();
    ?>[/code:1:b5754fbf9c]

    Nu nog het verwijderen van trefwoorden uit 'select2' en de waardes hiervan in één database-veld stoppen en dan is dit ook weer opgelost. Heeft iemand een idee?

    Djurre

    _________________
    Wij werken hier met fun, friendship, finance :grin:

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-22 12:53 ]

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-22 12:56 ]
  • Om een option te verwijderen kan je gewoon de option op "null" zetten:
    selectObj.options[index] = null;

    Als je ze ook terug wil zetten dan kan je natuurlijk gewoon de functie die je nu al hebt hergebruiken (alleen dan de andere kant op).

    Om de waarden in de database te zetten zal je ze allemaal moeten selecteren (via een javascriptje) en daarna pas submitten (alleen geselecteerde options gaan immers mee in een submit) of de values uit de rechterbox in een hidden input zetten voor je submit en deze waarde uitlezen in je verwerkingsscript ipv de select.

    ps. het plaatsen van die enorme lap code heeft nu niet echt veel meerwaarde binnen deze thread vind je ook niet?
    ps2. wat doet mijn naam in de code?

    [ Dit bericht is bewerkt door: Annie op 2002-04-22 13:19 ]
  • [quote:e3386c2c41]
    Op 22-04-2002 13:13 schreef Annie:
    Om een option te verwijderen kan je gewoon de option op "null" zetten:
    selectObj.options[index] = null;
    [/quote:e3386c2c41]

    Ehm… hij doet het niet; dit werkt wel (half);
    [code:1:e3386c2c41]
    function DeleteOverCurrSelected()
    {
    select2.options[select2.selectedIndex] = null;
    }
    [/code:1:e3386c2c41]

    maar als ik dan weer hetzelfde trefwoord wil toevoegen krijg ik 'de alert'. hmmm….

    Djurre

  • [quote:665e6ae61c]
    ps. het plaatsen van die enorme lap code heeft nu niet echt veel meerwaarde binnen deze thread vind je ook niet?
    ps2. wat doet mijn naam in de code?
    [/quote:665e6ae61c]

    - Ik had gedacht dat het voor het overzicht wat makkelijker was om het hele 'swikkie' te plaatsen. Zó lang is het toch ook niet?
    Heb je op je werk geen 21" monitor? Tsjonge…
    :smile:
    - Een klein eerbetoon voor de keren dat je mij de weg gewezen/geholpen hebt, zoals bijv. vorige week vrijdag en vandaag. Nooit verkeerd toch?

    _________________
    Wij werken hier met fun, friendship, finance :grin:

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-22 13:52 ]
  • Nee op me werk heb ik geen 21" :smile:
    Ennuh, over eerbetoon: de gedachte dat ik soms iemand kan helpen vind ik genoeg.
  • goeiemorgen,

    Gisteren ben ik bezig geweest met het maken van een script dat het overhevelen van opties tussen twee selectboxes mogelijk maakt. Dit heb nu eindelijk voor elkaar.
    (hèhè… :grin: )
    Zie evt. http://www.klussenbank.nl/www/library/trefwoord_select.php

    Nu wil ik de opties met php in een array stoppen, maar zodra ik de naam van de tweede box verander van 'select2' naar 'select2[]' (ook in het JavaScript-script) werkt het JavaScript niet goed meer. Logisch, omdat Javascript-processor met de naam in de knoop komt te zitten vanwege de array.
    Ik krijg dus een error - Object wordt verwacht, Regel 95, teken 1.

    De (ingekorte) source code;
    [code:1:4493365290]
    <?php
    <html>
    <head>
    <title>GoMotion Mulitmedia</title>
    </head>
    <script language="Javascript1.2">
    <!–
    /**
    * (2002) GoMotion Multimedia
    * Hevel bepaalde opties uit Select1 over naar Select2
    * Met dank aan Mathieu Kooiman <mathieu@gginter.net>
    *
    *
    */

    selectedValues = new Array();

    function isSelected(value)
    {
    for (i=0;i<selectedValues.length;i++) {
    if (selectedValues == value) {
    return true;
    }
    }

    return false;
    }

    function hevelOverCurrSelected()
    {
    select1 = document.forms[0].select1;
    s1SelOpt = select1.options[select1.selectedIndex];
    select2 = document.forms[0].select2;

    if (!isSelected(s1SelOpt.value)) {
    select2.options[select2.options.length] = new Option(s1SelOpt.text, s1SelOpt.value,0,0);
    selectedValues[selectedValues.length] = s1SelOpt.value;
    } else {
    alert("Trefwoord is al geselecteerd: " + s1SelOpt.value);
    }
    }

    function DeleteCurrSelected()
    {
    select2.options[select2.selectedIndex] = null;
    selectedValues.length = null;
    }
    //–>
    </script>
    <body>
    <form method="post" action="bla.php">
    <select name="select1" size="6" style="font-family: Verdana; font-size: 8 pt; border: 1 solid #808080">
    <?php while (($Repeat1__numRows– != 0) && (!$Rs_get_trefwoord->EOF))
    {
    ?>
    <option value="<?php echo $Rs_get_trefwoord->Fields("trefwoord")?>" style="font-family: Verdana; font-size: 8 pt; border: 1 solid #808080">
    <?php echo $Rs_get_trefwoord->Fields("trefwoord")?>
    </option>
    <?php
    $Repeat1__index++;
    $Rs_get_trefwoord->MoveNext();
    }
    ?>
    </select>
    //REGEL 95! <select name="select2" size="6" style="font-family: Verdana; font-size: 8 pt; border: 1 solid #808080">
    </select><img src="../images/wiz_btns/ok.gif" width="44" height="28" onClick="hevelOverCurrSelected>
    <img src="../images/wiz_btns/terug.gif" width="61" height="28" onClick="DeleteCurrSelected</form>
    </body>
    </html>
    <?php
    $Rs_get_trefwoord->Close();
    ?>
    [/code:1:4493365290]

    Heeft iemand een oplossing?

    Alvast bedankt :smile:

    Djurre

    _________________
    Wij werken hier met fun, friendship, finance :grin:

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-23 11:54 ]

    _________________
    Wij werken hier met fun, friendship, finance :grin:

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-23 20:58 ]
  • probeer het eens met de elements-collection van een form
    dus: document.forms[index].elements[index]

  • Zeg het maar hoor, we bijten niet :wink:

  • Blijf je nu lege posts plaatsen?

    Als het niet werkt, probeer het dan dalijk nog eens, nu moet ik alle posts weghalen iedere keer en ik heb eerlijk gezegd wel wat beters te doen :wink:

  • Nou okeej, dan :smile:

    Ik zal even lezen :smile:

    [ Dit bericht is bewerkt door: mvwinger op 2002-04-23 17:43 ]
  • Het forum werkte gewoon niet mailde hij mij net, dus er is zeker geen sprake van topics omhoogschoppen…
  • Okeej heb net even gekeken, ik denk dat ik het probleem snap:

    Zodra je een ding verwijderd is het mogelijk om alle items er nog een keer neer te gooien.

    Oplossing: hmm, ik ga de source bekijken

    [edit]
    Oplossing voor het door mij genoemde probleem:

    Vervang de bestaande "function DeleteCurrSelected" door het onderstaande.
    [code:1:24b77085bd]
    function DeleteCurrSelected()
    {
    select2.options[select2.selectedIndex] = null;
    selectedValues.length = selectedValues.length - 1;
    }
    [/code:1:24b77085bd]
    [/edit]

    Is meteen een compensatie van het loze topic wat ik net opende, en daarna pas begon met zoeken. Als er nog meer problemen met het script zijn zeg het maar heb het script nu toch doorgrond.

    [ Dit bericht is bewerkt door: mvwinger op 2002-04-23 18:18 ]
  • Hoi mvwinger,

    [quote:cd23f67ac1]
    Bill Gates:
    Het forum werkte gewoon niet mailde hij mij net, dus er is zeker geen sprake van topics omhoogschoppen…
    [/quote:cd23f67ac1]

    Inderdaad, heel frappant. Ik krijg de laatste tijd ook veel time-outmeldingen en DNS-errors :sad:
    Ik had het niet door dat de berichten maar hálf geplaatst werden.


    —————-

    Bedankt voor je reactie,

    Het script doet het in zoverre dat het overhevelen en het verwijderen van de opties in de boxes functioneert.
    Nu rest nog de taak om de [b:cd23f67ac1]geselecteerde opties in de tweede box, 'select2' bijelkaar op te tellen als een string (met een spatie tussen elk woord)[/b:cd23f67ac1] en in een veld in de database te zetten.
    Ik had gehoopt dit met een array (input name="select2[]") in PHP te kunnen bereiken, maar zoals gezegd kreeg ik dan problemen met het JavaScript.
    Een andere oplossing is misschien het tegelijkertijd vullen van een hidden field (met bijvoorbeeld de naam 'trefwoord') tijdens het selecteren van de opties, met de betreffende waarden.
    Een van de lastigheden hiervan is het verwijderen van de juiste opties in 'trefwoord' als deze verwijderd worden uit 'select2', de tweede select-box.

    Ik ben hier al de hele dag mee bezig geweest, maar ik krijg het niet voormekaar, ondanks de goede hulp van gebruikers van het Computer!Totaal-forum.
    Misschien dat jij (of nog iemand anders natuurlijk… :wink: ) er iets op weet?

    Alvast bedankt :grin:


    Djurre


    (Hé, nu plaatst ze wéér meerdere keren! :sad: )

    (Ik was de URL vergeten.)

    _________________
    Wij werken hier met fun, friendship, finance :grin:

    [ Dit bericht is bewerkt door: nssadmin op 2002-04-23 20:26 ]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.