Avatar billede galaxy Nybegynder
28. december 2004 - 16:24 Der er 4 kommentarer og
1 løsning

PHP - Dynamisk form - PHP

Kort og godt behøver jeg hjælp til følgende:

Jeg har et udtræk fra db i PHP, som jeg lægger i en select. Når jeg trykker på et result i denne select, skal det flyttes over i en anden select (eller text-box ell. lignende... altså bare en midlertidig container). Man skal så kunne flytte genstanden tilbage ved at trykke på den i select-2 (eller andet).

Til sidst skal indholdet fra select-2 lægges i et PHP-array ved submit.

Håber jeg har udtrykt det klart, for får først tid til, at kigge på svar i morgen. ;)
Avatar billede skovenborg Nybegynder
28. december 2004 - 17:29 #1
prøv:
<script type="text/javascript">
function moveFromTo(from,to) {
    to.options[to.length] = new Option(from.options[from.selectedIndex].text,from.options[from.selectedIndex].value);
    from.options[from.selectedIndex] = null;
}
</script>

<form>
Select 1
  <select name="select1" onchange="if (this.selectedIndex > 0) {moveFromTo(this,this.form.select2);this.selectedIndex = 0}">
  <option value="">Vælg</option>
  <option value="val1">Option1</option>
  <option value="val1">Option2</option>
  <option value="val1">Option3</option>
  <option value="val1">Option4</option>
  </select>
  Select 2:
  <select name="select2" onchange="if (this.selectedIndex > 0) {moveFromTo(this,this.form.select1);this.selectedIndex = 0}">
  <option value="">Vælg</option>
  </select>
</form>

De to vælg-options er krævet, da onchange funktionen kun kaldes når et form-element ændres (dvs. det første options i select-boksen kunne ikke flyttes).

Dette er en omformulering af http://skovenborg.frac.dk/javascript/selectMove.php som du kan evt. kigge på hvis du synes den her er for bøvet.
Avatar billede skovenborg Nybegynder
28. december 2004 - 17:41 #2
nåja, og hvis du skal have resultatet som et php-array, kan du lave en lille hidden-boks, hvor værdierne af de valgte options kommer hen:
<script type="text/javascript">
function moveFromTo(from,to) {
    to.options[to.length] = new Option(from.options[from.selectedIndex].text,from.options[from.selectedIndex].value);
    from.options[from.selectedIndex] = null;
}

function convertSelectbox(selbox,toElm) {
      for (i=1;i<selbox.length;i++) {
          toElm.value += selbox.options[i].value+",";
      }
      return true;
}
</script>
/head>
<body>
<form action="side.php" method="post" onsubmit="return convertSelectbox(this.select2,this.select2Array);">
Select 1
  <select name="select1" onchange="if (this.selectedIndex > 0) {moveFromTo(this,this.form.select2);this.selectedIndex = 0}">
  <option value="">Vælg</option>
  <option value="val1">Option1</option>
  <option value="val2">Option2</option>
  <option value="val3">Option3</option>
  <option value="val4">Option4</option>
  </select>
  Select 2:
  <select name="select2" onchange="if (this.selectedIndex > 0) {moveFromTo(this,this.form.select1);this.selectedIndex = 0}">
  <option value="">Vælg</option>
  </select>
  <input type="submit">
  <input type="hidden" name="select2Array">
</form>
</body>

Hvor formen bliver submittet til side.php. På denne side kan du hente værdien af select2Array frem, og lave den om til et array:
<?php
if ($_POST) {
    $arr = split(",",$_POST['select2Array']);
    array_pop($arr);
    print_r($arr);
}
?>
Vi fjerner det sidste element, da javascript funktion medvirker til et tomt array-felt.
Avatar billede galaxy Nybegynder
29. december 2004 - 15:28 #3
Nice... det var nøjagtig, hvad jeg skulle bruge. Takker ;-)
Avatar billede galaxy Nybegynder
29. december 2004 - 15:30 #4
Læg et svar for resten... Så jeg kan give point.
Avatar billede skovenborg Nybegynder
29. december 2004 - 21:09 #5
værgso' og godt nytår :-)
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