Waardes uit multiple selectbox generated door javascript/php

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb het volgende probleem:
Ik heb 2 multiple selectboxen, waarvan 1 uit een php database wordt gegenereerd. Het is nu de bedoeling dat je van die 1e selectbox (bestaande uit 15 waardes) 10 waardes kunt selecteren die dan in de 2e selectbox komen. Dit wordt gedaan mbv javascript, met php kreeg ik het niet goed werkend. Nu is het dan de bedoeling dat die waardes uit de 2e selectbox weer worden opgeslagen in de database. met behulp van php. Ik kan die waardes echter niet opvragen, ik weet dat normaal een multiple selectbox met een name[] wel zou werken in php, maar dan werkt het javascript weer niet :S Iemand enig idee?
Dit is het voorbeeld: https://economix.uvt.nl/~s869809/test/blaat.php?team_id=42
Dit is de code die ik gebruikt heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
if ($_POST['opslaan'])
{
    echo $etapperenners;
}
else
{
?>
    <html>
    <head>
    <SCRIPT LANGUAGE="JavaScript">
    <!-- 
    
    function moveOver() 
    {
        var boxLength = document.alloceerRenners.etapperenners.length;
        var selectedItem = document.alloceerRenners.teamrenners.selectedIndex;
        var selectedText = document.alloceerRenners.teamrenners.options[selectedItem].text;
        var selectedValue = document.alloceerRenners.teamrenners.options[selectedItem].value;
        var i;
        var isNew = true;
        if (boxLength == 10)
        {
           window.alert("Je hebt al 10 renners geselecteerd!");
           isNew = false;
        }
        else
        {
            if (boxLength != 0) 
            {
                for (i = 0; i < boxLength; i++) 
                {
                    thisitem = document.alloceerRenners.etapperenners.options[i].text;
                    if (thisitem == selectedText) 
                    {
                        isNew = false;
                        break;
                    }
                }
            } 
       }
       if (isNew) 
       {
             newoption = new Option(selectedText, selectedValue, false, false);
             document.alloceerRenners.etapperenners.options[boxLength] = newoption;
       }
            document.alloceerRenners.teamrenners.selectedIndex=-1;
    }
function removeMe() 
{
   var boxLength = document.alloceerRenners.etapperenners.length;
   arrSelected = new Array();
   var count = 0;
   for (i = 0; i < boxLength; i++) 
   {
       if (document.alloceerRenners.etapperenners.options[i].selected) 
       {
            arrSelected[count] = document.alloceerRenners.etapperenners.options[i].value;
       }
       count++;
   }
   var x;
   for (i = 0; i < boxLength; i++) 
   {
       for (x = 0; x < arrSelected.length; x++) 
       {
         if (document.alloceerRenners.etapperenners.options[i].value == arrSelected[x]) 
         {
            document.alloceerRenners.etapperenners.options[i] = null;
         }
       }
       boxLength = document.alloceerRenners.etapperenners.length;
   }
}
// -->
</script>
</head>
<?php
$dbconn = pg_connect("dbname=* user=*");
$renners= "select renner_id from gebruiker_team_renners where team_id = '$team_id'";
$rennersdb = pg_exec($renners);
$numrows = pg_numrows($rennersdb);
$row=0;
?>
<table>

<form name="alloceerRenners" action = "" method="post">
<tr><td>
Renners waar je een keuze uit kunt maken :
</td>
<td>Renners die je in etappe mee laat rijden :</td>
<tr><td>
<br>
<select name="teamrenners" size=15 onchange="moveOver();">
<?php
do
{
    $rennerarray = pg_fetch_array($rennersdb);
    $naam = "select naam from renner where renner_id = '$rennerarray[renner_id]'";
    $naamdb = pg_exec($naam);
    $naamarray= pg_fetch_array($naamdb);
    $options .= "<option value='$rennerarray[renner_id]'>$naamarray[naam]</option>\n";
    $row++;
}
while($row < $numrows);
echo $options;
?>
</select>
</td>
<td>

<br>
<select multiple name="etapperenners" style="width:150;" size="10">
</select>
</td></tr>
<tr><td colspan="2" align="center">
<input type="button" value="Verwijderen" onclick="removeMe();"><input type="submit" value="Sla op" name="opslaan"></td></tr>
</form>
<?php
}
?>

[ Voor 20% gewijzigd door Verwijderd op 13-05-2004 13:35 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

als je document.forms["formnaam"].elements["naam[]"] gebruikt moet het toch wel werken?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op die manier kan ik inderdaad de selectbox etapperenners[] noemen.
Maar als ik dan in het bovenste stuk code bijvoorbeeld: echo $etapperenners[0];
zet dan pakt hij hem nog niet.
(Javascript ziet er nu dus zo uit: var boxLength = document.forms["alloceerRenners"].elements["etapperenners[]"].length;
dat was de bedoeling toch?)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het lijkt me dus dat hij de waardes dan nog niet in een array zet, ligt dit aan het javascript?

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
voor de zekerheid,
Ik neem wel aan de je:
PHP:
1
2
$etapperenners=$_POST['etapperenners'];
echo $etapperenners[0];

doet, en niet de array probeert aan te spreken zonder de $_POST te gebruiken....

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat is niet nodig bij deze phpversie/postgresql.
Ik heb tig php documenten gemaakt op die server en daar werkt het allemaal gewoon als $naam, $_post is niet nodig.

Acties:
  • 0 Henk 'm!

  • KolNedra
  • Registratie: September 2001
  • Laatst online: 18-04-2020

KolNedra

...

beetle71 schreef op 13 mei 2004 @ 15:42:
voor de zekerheid,
Ik neem wel aan de je:
PHP:
1
2
$etapperenners=$_POST['etapperenners'];
echo $etapperenners[0];

doet, en niet de array probeert aan te spreken zonder de $_POST te gebruiken....
Dat gaat niet werken he, hij geeft alleen de geselecteerde waardes dan door, niet de waardes die IN de list staan
Zodra je 'n POST doet stuurt hij logischer wijs niet de complete listbox door. Alleen diegeen die je geselecteerd hebt.

Wat nu wel ?

HTML:
1
<input type="submit" value="Sla op" name="opslaan">
veranderen in
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- Ook even iets anders veranderen, die etapperenners[] , kijk maar : -->
<select multiple name="etapperenners" style="width:150;" size="10">
<input type="button" value="Sla op" name="slaop" onClick="opslaan(document.alloceerRenners.etapperenners)">
<input type="hidden" value="" name="renners_selected">
<script>
function opslaan(obj) {
var total = "";
for ( var x=0; x<obj.length; x++ ) {
total = total+" "+obj.options[x].value;
}
document.alloceerRenners.renners_selected.value=total;
document.alloceerRenners.submit();
}
</script>


PHP:
1
2
3
4
// Vang ze dan zo op in PHP:

$renners_selected = explode(" ",$renners_selected);
// $renners_selected is dan een array met de renners id's

[ Voor 110% gewijzigd door KolNedra op 13-05-2004 16:16 ]

::: flickr.com/kolnedra ::: Nikon D80 + Sigma 18-200mm f/3.5-6.3 DC + Sigma 10-20mm f/4-5.6 EX DC HSM


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Alleen nog even de id's aanpassen aan de id's die voor jou relevant zijn.
JavaScript:
1
2
3
4
5
6
7
function selectall() {
  for(var i=0;i<document.getElementById('fieldTo').length;i++){
    document.getElementById('fieldTo')[i].selected=true;
  }

  document.getElementById('selectform').submit();
}

[ Voor 43% gewijzigd door djluc op 13-05-2004 15:55 ]

Pagina: 1