Avatar billede adoks Nybegynder
23. februar 2006 - 16:06 Der er 6 kommentarer og
1 løsning

gennemløbe en postet array

Hej

Jeg har fået en til at lave et javscript der gemmer oplysninger fra en multiple select liste ned i et array.

function SelectAll(fromObject) {
    for (var i=0, l=fromObject.options.length;i<l;i++) {
        fromObject.options[i].text,fromObject.options[i].selected = true;
    }

Min multiple select liste ser sådan ud:

$result = mysql_query("select users_username from matches where date = '$date'");?>
<select multiple name="player[]" size='8' style="width:200px">
<?while($query = mysql_fetch_array($result)){
    if ($query['users_username'] != null){
    echo "<option value=".$query['users_username'].">".$query['users_username']."</option>";
    }
}?>
</select>


Via submit poster jeg så arrayet videre til en ny side(PHP).

<input type="button" value="Send data" onClick="SelectAll(this.form.elements['players[]']);submit()">

Mit problem er så at få fat i arrayet og løbe det igennem, så jeg kan få få fat i de data jeg har gemt.

På forhånd tak
Avatar billede adoks Nybegynder
23. februar 2006 - 16:12 #1
jeg har allerede fundet første fejl, hehe det tyder godt, der manglede lige et s i players:

<select multiple name="players[]" size='8' style="width:200px">
Avatar billede roenving Novice
25. februar 2006 - 21:36 #2
Du har slet ikke gemt nogle data !-)

-- i den ovenstående kode, løber du bare en tur igennem uden at data bruges på nogen måde, så f.eks.

function SelectAll(fromObject) {
    var hidField = fromObject.form.hidPlayers,txt="";
    for (var i=0, l=fromObject.length;i<l;i++) {
        if(fromObject.options[i].selected)
          txt +="," + fromObject.options[i].text;
    }
    if(txt)
      hidField.value = txt.substring(1);
}

-- og så skal du i samme form tilføje et felt, der kan opbevare data:

<input type="hidden" name="hidPlayers">
Avatar billede adoks Nybegynder
26. februar 2006 - 12:45 #3
Tak for dit svar, der blev mine manglende IT evner udstillet :-)

Jeg har måtte flyttet en parentes i din kode for at få den postet til en anden side.

function SelectAll(fromObject) {
    var hidField = fromObject.form.hidPlayers,txt="";
    for (var i=0, l=fromObject.options.length;i<l;i++) {
        if(fromObject.options[i].selected)
          txt +="," + fromObject.options[i].text;
          if(txt)
      hidField.value = txt.substring(1);
    }
}

Men jeg kan stadig ikke få fat i arrayet fra min PHP side.
Avatar billede roenving Novice
27. februar 2006 - 01:11 #4
Du skal vel hente den med $_POST("hidPlayers") (såvidt jeg husker !-)

-- og flytningen af tuborgen skulle ingen spille trille, bortset fra, at den samme handling evt. gentages en hel del gange ...
Avatar billede adoks Nybegynder
27. februar 2006 - 20:02 #5
Kannon det virker og med metoden explode, er det nemt at gemme dataen fra den kommasepareret String i et array.

Send et svar så du kan få dine velfortjente point.
Avatar billede roenving Novice
27. februar 2006 - 21:33 #6
Velbekomme '-)
Avatar billede roenving Novice
25. marts 2006 - 15:20 #7
-- og tak for point ;~}
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