Avatar billede webbe Nybegynder
01. september 2011 - 12:22 Der er 18 kommentarer og
1 løsning

PHP script med tilkoblet AJAX script

Hej eksperter

Jeg er på udkig efter en AJAX løsning der, når man har valgt turnering i en dropdown box, automatisk lister de hold der kan tilmelde sig turneringen og, når hold er valgt i en dropdown, lister de spillere der er fra det valgte hold, så man kan vælge sig selv.

Håber det var til at forstå!?

Jeg har pt. følgende formular som jeg ønsker det bygget op omkring:

<form method="post" action="?page=<?php echo $page;?>" name="enter">
                                <fieldset>
                                    Vælg turnering:
                                    <select name="tourn">
                                        <option selected="selected" value="">Vælg her</option>
                                        <?php
                                        $sqlT = "select * from tournaments where tournSubscr >= ".date('d-m-Y')."";
                                        $queryT = mysqli_query($db,$sqlT) or die (mysqli_error($db));
                                        while($resT=mysqli_fetch_array($queryT)){
                                            echo"<option value='".$resT['tournID']."'>".$resT['tournName']."</option>";
                                        };
                                        ?>
                                    </select>
                                    Vælg dit hold:
                                    <select name="class">
                                        <option selected="selected" value="">Vælg her</option>
                                        <?php
                                        $sqlC = "select * from classes order by classID asc";
                                        $queryC = mysqli_query($db,$sqlC) or die (mysqli_error($db));
                                        while($resC=mysqli_fetch_array($queryC)){
                                            echo"<option value='".$resC['classID']."'>".$resC['className']."</option>";
                                        };
                                        ?>
                                    </select><br />
                                    Dit navn:
                                    <select name="player">
                                        <option selected="selected" value="">Vælg her</option>
                                        <?php
                                        $sqlP = "select * from players order by playerName asc";
                                        $queryP = mysqli_query($db,$sqlP) or die (mysqli_error($db));
                                        ?>
                                    </select><br />
                                    <input type="submit" name="okT" value="Tilmeld" />
                                </fieldset>
                            </form>
Avatar billede olebole Juniormester
01. september 2011 - 17:56 #1
<ole>

- og hvad er det, du ønsker hjælp til?

/mvh
</bole>
Avatar billede webbe Nybegynder
01. september 2011 - 19:38 #2
Selve AJAX delen...
Avatar billede olebole Juniormester
01. september 2011 - 20:15 #3
- og hvor er du kommet til?
Avatar billede webbe Nybegynder
02. september 2011 - 10:02 #4
Jeg er sådan set slet ikke kommet igang med AJAX delen, da jeg ikke har arbejdet med AJAX før.
Avatar billede olsensweb.dk Ekspert
02. september 2011 - 21:31 #5
her er et bud på hvordan det kunne se ud:
jeg har lavet navnet om på <select name="class"> til <select name="classes"> for at undgå problemer med det reseveret ord class (css), samt sat id'er på dine selectboxe
princippert er at jeg sender den valgte værdi over til severen, henter data på baggrund af denne værdi, encoder da i json, og retunerer det til mit script, i scriptet decoder jeg så data, og ligger det ind i en selectbox.

index.html
<?php
require_once("db_conn.php");
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
        function UpdateTeam(Val){
            var url = "request.php";       
            var params = "id=" + Val+"&group=team&rand="+Math.random();       
            var http = new XMLHttpRequest();
            http.open("GET", url+"?"+params, true); 
            http.onreadystatechange = function () {
                if(http.readyState == 4 && http.status == 200 ){            
                    js_ar = JSON.parse(http.responseText);                   
                    var lng = js_ar.length;               
                    var fragment = document.createDocumentFragment();
                    var listeelm = document.getElementById("classes");
                    var select = document.createElement('select');
                    select.setAttribute("id", "classes");       
                    select.setAttribute("name", "classes");       
                    select.setAttribute("onchange", "UpdatePlayer(this.value)");               
                   
                    var option = document.createElement('option');                   
                    var text = document.createTextNode("vælg hold");
                    option.setAttribute("value", "0");
                    option.appendChild(text);
                    select.appendChild(option);
                       
                    for( var i = 0; i < lng; i++ ) {
                        option = document.createElement('option');
                        option.setAttribute("value",js_ar[i]['id']);
                        text = document.createTextNode(js_ar[i]['name']);
                        option.appendChild(text);
                        select.appendChild(option);
                    }
                    fragment.appendChild(select);       
                    listeelm.parentNode.replaceChild(fragment, listeelm);
                }                   
            }           
            http.send(null);       
            UpdatePlayer(0);                           
        }

       
        function UpdatePlayer(Val){
            var url = "request.php";       
            var params = "id=" + Val+"&group=player&rand="+Math.random();       
            var http = new XMLHttpRequest();
            http.open("GET", url+"?"+params, true); 
            http.onreadystatechange = function () {
                if(http.readyState == 4 && http.status == 200 ){                    
                    js_ar = JSON.parse(http.responseText);                   
                    var lng = js_ar.length;               
                    var fragment = document.createDocumentFragment();
                    var listeelm = document.getElementById("player");
                    var select = document.createElement('select');
                    select.setAttribute("id", "player");               
                    select.setAttribute("name", "player");
                   
                    var option = document.createElement('option');                   
                    var text = document.createTextNode("vælg spiller");
                    option.setAttribute("value", "0");
                    option.appendChild(text);
                    select.appendChild(option);
                   
                   
                    for( var i = 0; i < lng; i++ ) {
                        option = document.createElement('option');
                        option.setAttribute("value",js_ar[i]['id']);
                        text = document.createTextNode(js_ar[i]['name']);
                        option.appendChild(text);
                        select.appendChild(option);
                    }
                    fragment.appendChild(select);       
                    listeelm.parentNode.replaceChild(fragment, listeelm);               
                }           
            }
            http.send(null);       
        }       
   
    </script>
</head>
<body>
<form method="post" action="?page=<?php echo $page;?>" name="enter">
    <fieldset>
    Vælg turnering:
    <select name="tourn" id="tourn" onchange ="UpdateTeam(this.value)">
        <option selected="selected" value="">Vælg her</option>
        <?php           
            $sqlT = "select * from tournaments where tournSubscr >= ".date('d-m-Y')."";
            $queryT = mysqli_query($db,$sqlT);
            while($resT=mysqli_fetch_array($queryT)){
                echo"<option value='".$resT['tournID']."'>".$resT['tournName']."</option>";
            }           
        ?>
    </select><br />
    Vælg dit hold:
    <select name="classes" id="classes" onchange ="UpdatePlayer(this.value)">
        <option selected="selected" value="">Vælg her</option>       
    </select><br />
    Dit navn:
    <select name="player" id="player">
        <option selected="selected" value="">Vælg her</option>     
    </select><br />
    <input type="submit" name="okT" value="Tilmeld" />
    </fieldset>
</form>
</body>
</html>


request.php
<?php
    require_once("db_conn.php");
    $id = $_GET['id'];   
    $group = $_GET['group'];
    $ar = array();   
   
    switch($group){   
        case "team":
            $sql = "select * from classes where tournID = ".$id."";   
            $query = mysqli_query($db,$sql);
            while($res=mysqli_fetch_array($query)){
                $ar[] = array("id" => $res['classID'], "name" => $res['className']);                 
            }           
        break;
   
        case "player":        
            $sql = "select * from players where classID = ".$id."";   
            $query = mysqli_query($db,$sql);           
            while($res=mysqli_fetch_array($query)){
                $ar[] = array("id" => $res['playerID'], "name" => $res['playerName']);                
            }       
        break;

    }   
    echo json_encode($ar);
?>


db_conn.php
<?php
$db = mysqli_connect('localhost', 'root', '', 'test');
if (!$db) {
    die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
mysqli_set_charset($db, "utf8");
?>


fil.sql
CREATE TABLE IF NOT EXISTS `classes` (
  `classID` int(11) NOT NULL AUTO_INCREMENT,
  `className` text NOT NULL,
  `tournID` int(11) NOT NULL,
  PRIMARY KEY (`classID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

INSERT INTO `classes` (`classID`, `className`, `tournID`) VALUES
(1, 'kl. 1', 1),
(2, 'kl. 2', 2),
(3, 'kl. 3', 2),
(4, 'kl. 4', 3);

CREATE TABLE IF NOT EXISTS `players` (
  `playerID` int(11) NOT NULL AUTO_INCREMENT,
  `playerName` text NOT NULL,
  `classID` int(11) NOT NULL,
  PRIMARY KEY (`playerID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

INSERT INTO `players` (`playerID`, `playerName`, `classID`) VALUES
(1, 'spiller 1', 1),
(2, 'spiller 2', 4),
(3, 'spiller 3', 2),
(4, 'spiller 4', 3),
(5, 'spiller 5', 2),
(6, 'spiller 6', 2);

CREATE TABLE IF NOT EXISTS `tournaments` (
  `tournID` int(11) NOT NULL AUTO_INCREMENT,
  `tournSubscr` date NOT NULL,
  `tournName` text NOT NULL,
  PRIMARY KEY (`tournID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `tournaments` (`tournID`, `tournSubscr`, `tournName`) VALUES
(1, '2011-09-12', 'Golf'),
(2, '2011-09-06', 'poker'),
(3, '2011-09-04', 'svømning');
Avatar billede majbom Novice
02. september 2011 - 23:06 #6
fik lige bikset lidt sammen her til aften:

PHP:
<?php
    header('Content-Type: text/html; charset=UTF-8');
    switch($_POST['list'])
    {
        case 'select1':
            $select_array = array(
                array(
                    array('id' => 0, 'name' => 'æbler'),
                    array('id' => 1, 'name' => 'bananer'),
                    array('id' => 2, 'name' => 'pærer')
                ),
                array(
                    array('id' => 0, 'name' => 'peberfrugter'),
                    array('id' => 1, 'name' => 'agurker'),
                    array('id' => 2, 'name' => 'tomater')
                ),
                array(
                    array('id' => 0, 'name' => 'gulerødder'),
                    array('id' => 1, 'name' => 'porrer'),
                    array('id' => 2, 'name' => 'løg')
                )
            );
            echo json_encode($select_array[$_POST['type']]);
            break;
        case 'select2':
            $select_array = array(
                array(
                    array(
                        array('id' => 0, 'name' => 'æblegrød'),
                        array('id' => 1, 'name' => 'æblekage')
                    ),
                    array(
                        array('id' => 0, 'name' => 'pæretærte'),
                        array('id' => 1, 'name' => 'syltede pærer')
                    ),
                    array(
                        array('id' => 0, 'name' => 'banankage'),
                        array('id' => 1, 'name' => 'bananmos')
                    )
                ),
                array(
                    array(
                        array('id' => 0, 'name' => 'fyldte peberfrugter'),
                        array('id' => 1, 'name' => 'grillede peberfrugter')
                    ),
                    array(
                        array('id' => 0, 'name' => 'agurksalat'),
                        array('id' => 1, 'name' => 'tzatziki')
                    ),
                    array(
                        array('id' => 0, 'name' => 'tomatsuppe'),
                        array('id' => 1, 'name' => 'ovnbagte tomater')
                    )
                ),
                array(
                    array(
                        array('id' => 0, 'name' => 'råkostsalat'),
                        array('id' => 1, 'name' => 'gulerodskage')
                    ),
                    array(
                        array('id' => 0, 'name' => 'farserede porrer'),
                        array('id' => 1, 'name' => 'porretærte')
                    ),
                    array(
                        array('id' => 0, 'name' => 'ristede løg'),
                        array('id' => 1, 'name' => 'løgbrød')
                    )
                )
            );
            echo json_encode($select_array[$_POST['type']][$_POST['name']]);
            break;
        default:
            echo '';
    }
?>


og html/js:

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
        <title>EXP 946280</title>
        <script type="text/javascript">
            function xmlHttpObject(){
            // Hvis XMLHttpRequest understøttes, så returner en ny instans
                    if (window.XMLHttpRequest) return new XMLHttpRequest();

            // Ellers - hvis ActiveX heller ikke understøttes, så returner null
                    if (!window.ActiveXObject) return null;

            // Ellers oprettes et array med de forskellige objekt versioner - nyeste først
                    var a = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
                    var o = null;
            // For hver version ...
                    for (var i=0,j=a.length; i<j; i++) {
            // Undgå at generere fejl, hvis versionen ikke genkendes
                            try {
            // Hvis objektet kan oprettes, så returner det
                                    if ( o=new ActiveXObject(a[i]) ) return o;
                            }
                            catch(e){};
                    }
              // Hvis intet lykkedes, ryddes op og der returneres null
                    return a = o = null;
            }

            function ajaxConn(){
                xmlHttp = new xmlHttpObject();
            }

            function ajaxSend(sUrl, sParams)
            {
                var params = sParams;
                var url = sUrl;

                xmlHttp.open("POST",url,true);
                xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
                xmlHttp.setRequestHeader("Content-length", params.length);
                xmlHttp.setRequestHeader("Connection", "close");
                xmlHttp.send(params);
            }

            function fetchList(objSelect)
            {
                var strObjectId = objSelect.getAttribute('id');

                if(objSelect.value == ''){
                    return false;
                }
               
                ajaxConn();
                xmlHttp.onreadystatechange=function(){
                    if((xmlHttp.readyState==4) && (xmlHttp.status == 200)){
                        var arrResponse = JSON.parse(xmlHttp.responseText);
                        switch(strObjectId)
                        {
                            case 'select1':
                                    var selectBox = document.getElementById('select2');
                                break;
                            case 'select2':
                                    var selectBox = document.getElementById('select3');
                                break;
                        }
                        for(i=0, s=arrResponse.length; i<s; i++)
                        {
                            var option = document.createElement('option');
                            option.setAttribute('value', arrResponse[i].id);
                            option.appendChild(document.createTextNode(arrResponse[i].name));
                            selectBox.appendChild(option);
                        }
                    }
                }
                switch(strObjectId)
                {
                    case 'select1':
                        ajaxSend("ajax.php", "list=" + strObjectId + "&type=" + objSelect.value);
                        break;
                    case 'select2':
                        var intType = document.getElementById('select1').value;
                        ajaxSend("ajax.php", "list=" + strObjectId + "&type=" + intType + "&name=" + objSelect.value);
                        break;
                }
            }
        </script>
    </head>
    <body>
        <select name="select1" id="select1" onchange="fetchList(this)"><option value="">vælg noget her</option><option value="0">Frugter</option><option value="1">Grøntsager</option><option value="2">Rodfrugter</option></select>
        <select name="select2" id="select2" onchange="fetchList(this)"></select>
        <select name="select3" id="select3"></select>
    </body>
</html>


du skal selvfølgelig lave nogle databasekald i php-filen, jeg lavede blot nogle arrays til eksemplet...

du kan se det i aktion her: http://majbom.com/testarea/exp/946280/

det skal nok lige finpudses lidt, men det grundlæggende er der...
Avatar billede majbom Novice
02. september 2011 - 23:15 #7
ahh - fik sq ikke lige opdateret inden jeg postede, ronols var jo langt foran mig...

jeg kan dog se at der bliver brugt GET - det er bedre at bruge POST (da browseren henter fra cachen ved brug af GET), men til gengæld har ronols lavet noget databasekald, så du kan jo blande dem lidt sammen :)
Avatar billede olsensweb.dk Ekspert
03. september 2011 - 08:54 #8
#6function ajaxConn(){
    xmlHttp = new xmlHttpObject();
}

hvor længe gider du blive ved med at teste for de gamle browsere ?? (jeg vil kalde det spild af tid)
kender du nogle browsere der er under 10 år gamle der ikke understøtter XMLHttpRequest() ??
men selvføgelig hvis dit marked er østen ja så skal du teste http://www.ie6countdown.com/

#7 da browseren henter fra cachen ved brug af GET
jeg går ud fra du hentyder til den IE bug, det skulle jo kunne undgås ved at sende en uniq string hver gang, hvilke er årsagen til jeg har Math.random() til slut i mine params
men ellers har du da ret man bør nok vænne sig til at bruge POST.
Avatar billede olebole Juniormester
03. september 2011 - 14:15 #9
ronols >> Et godt gammelt citat siger: "Det, vi observerer er ikke naturen, men naturen udsat for vores måde at spørge på"  *o)

Man kan sagtens bruge en sådan statistik, men 'brug' kan let føre til 'misbrug'. Jeg husker således, da Netscape 6 kom på banen. I de næste 5-6 år anvendte mange store firmaer og organisationer stadig Netscape 4.X - herunder TopDanmark (til sammenligning - og i respekt for historien - er det ikke 10 år siden, IE7 kom på banen, men 'kun' knap 5 år).

Det betød, at hvis man var leverandør til forsikringsbranchen og omegn, så var det et absolut must, at koden understøttede en forlængst udgået browser. Statistisk set var det kun ganske få, der brugte NS4, men det var for mange webudviklere en rystende ligegyldig betragtning.

Statistikker oplyser ofte en masse - men ikke nødvendigvis noget, man kan bruge  *o)
Avatar billede majbom Novice
03. september 2011 - 14:46 #10
-> ronols - jeg tror faktisk min "xmlHttpObject"-funktion er noget jeg har fra olebole, som i sin tid havde en side omkring emnet svjh.

jeg tvivler på at det er noget der sløver browseren mærkbart, så jeg bruger det endnu - og jeg må ærligt tilstå at jeg ikke ved hvilke browsere der understøtter XMLHttpRequest...

og mht GET vs. POST så mener jeg ikke at det er en bug at der bliver cachet ved brug af GET - men igen, så er jeg ikke sikker.
Avatar billede olsensweb.dk Ekspert
03. september 2011 - 15:40 #11
@9
- >Et godt gammelt citat siger: "Det, vi observerer er ikke naturen, men naturen udsat for vores måde at spørge på"  *o)
så sandt som det er "sagt", det sammen kan siges om statestik :)
>og i respekt for historien - er det ikke 10 år siden, IE7 kom på banen, men 'kun' knap 5 år).
IE7 understøtter så sandelig også XMLHttpRequest()
som jeg skrev kender du nogle browsere der er under 10 år gamle der ikke understøtter XMLHttpRequest() ??

@10
- jeg tvivler på at det er noget der sløver browseren mærkbart,
enig, det tvivler jeg også på, men hvorfor lave en test når man på forhånd kender svaret.

- og jeg må ærligt tilstå at jeg ikke ved hvilke browsere der understøtter XMLHttpRequest...
en link som jeg ved olebole mf hader
ref http://www.w3schools.com/Ajax/ajax_xmlhttprequest_create.asp
Create an XMLHttpRequest Object

All modern browsers (IE7+, Firefox, Chrome, Safari, and Opera) have a built-in XMLHttpRequest object.
Avatar billede olebole Juniormester
03. september 2011 - 16:03 #12
"IE7 understøtter så sandelig også XMLHttpRequest()" >> Jeg er glad for, du erklærer dig enig i min pointe. Der er ikke tale om, at slpazz's script forsøger at understøtte en 10 år gammel browser (IE6).

Bevares, den fødselsdato ligger 10 år tilbage - men det er kun knap 5 år siden, den blev afløst af en ny version. Scriptet forsøger med andre ord blot at understøtte IE's adfærd indtil for små 5 år siden.

Ja, jeg kender i allerhøjeste grad browsere fra de seneste 10 år, som ikke understøtter XMLHttpRequest objektet  =)

Derudover var pointen, at man skal kende det eksakte brugersegment, man skriver til. Derfor siger generelle statistikker ikke nødvendigvis ret meget
Avatar billede majbom Novice
04. september 2011 - 07:16 #13
-> #11 - tak for linket, kan ikke se hvorfor folk skulle hade linket (medmindre der står ukorrekte oplysninger på siden) - jeg har da nogle sider, hvor jeg er sikker på at der ikke bliver brugt under version 7 af ie.
Avatar billede olebole Juniormester
04. september 2011 - 14:28 #14
Det er da også half past en middelsvær overtolkning. Det ville være komplet tåbeligt at hade et link - eller for den sags skyld et website. På grund af sitets enorme fejlrate har jeg til gengæld ingen respekt for det - og det er jo noget helt andet. Had er sjældent fagligt/sagligt begrundet - det er niveauet af min respekt derimod ofte  *o)

Faktisk er oplysningerne på den side, der linkes til, da heller ikke korrekte. Microsoft har haft adskillige versioner af XMLHTTP objektet, og for at være sikker på at kunne tilfredsstille IE5 og IE6 anbefaler de selv, at man tester for disse versioner: MSXML2.XMLHTTP.6.0 - MSXML2.XMLHTTP.3.0 - Msxml2.XMLHTTP og Microsoft.XMLHTTP. Det burde som et minimum fremgå af 'artiklen'.

Jeg kan dog se, at din (splazz) version af mit script er den allerførste - fra før jeg ret hurtigt fandt ud af, at version 4 og 5 var buggy og derfor bør undgås  =)

Jeg bestrider ingenlunde, at mange har et site, hvor der ikke kommer en eneste Explorer under version 7, men det kan skyldes flere ting - alt efter, hvordan man stiller spørgsmålet.

Der kommer naturligt nok ikke mange veganere på Jensens Bøfhus, fordi de på forhånd ved, de ikke kan bruge maden. På samme måde får man ikke besøg af browsere, ens site ikke understøtter. Det er den klassiske diskusion fra 'Store Browserkrig'.

Desuden er der overordentlig konservative brugere, firmaer og organisationer, for hvem det tager evigheder at udskifte browsere. Derfor er det enormt vigtigt at kende sit målsegment grundigt og sørge for, at det bliver passende serviceret. Ellers skyder man sig selv (eller kunden) i foden med svær kalliber!
Avatar billede webbe Nybegynder
05. september 2011 - 09:16 #15
Til ronols

Jeg har nu forsøgt at integrere dit løsningsforslag, men det virker ikke helt som forventet (ja faktisk slet ikke).

Min kode ser nu således ud (efter at have rettet stier m.m.):

AJAX-script:
<script type="text/javascript">
        function UpdateTeam(Val){
            var url = "include/request.php";       
            var params = "id=" + Val+"&group=team&rand="+Math.random();       
            var http = new XMLHttpRequest();
            http.open("GET", url+"?"+params, true); 
            http.onreadystatechange = function () {
                if(http.readyState == 4 && http.status == 200 ){           
                    js_ar = JSON.parse(http.responseText);                   
                    var lng = js_ar.length;               
                    var fragment = document.createDocumentFragment();
                    var listeelm = document.getElementById("classes");
                    var select = document.createElement('select');
                    select.setAttribute("id", "classes");       
                    select.setAttribute("name", "classes");       
                    select.setAttribute("onchange", "UpdatePlayer(this.value)");               
                   
                    var option = document.createElement('option');                   
                    var text = document.createTextNode("vælg hold");
                    option.setAttribute("value", "0");
                    option.appendChild(text);
                    select.appendChild(option);
                       
                    for( var i = 0; i < lng; i++ ) {
                        option = document.createElement('option');
                        option.setAttribute("value",js_ar[i]['id']);
                        text = document.createTextNode(js_ar[i]['name']);
                        option.appendChild(text);
                        select.appendChild(option);
                    }
                    fragment.appendChild(select);       
                    listeelm.parentNode.replaceChild(fragment, listeelm);
                }                   
            }           
            http.send(null);       
            UpdatePlayer(0);                           
        }

       
        function UpdatePlayer(Val){
            var url = "include/request.php";       
            var params = "id=" + Val+"&group=player&rand="+Math.random();       
            var http = new XMLHttpRequest();
            http.open("GET", url+"?"+params, true); 
            http.onreadystatechange = function () {
                if(http.readyState == 4 && http.status == 200 ){                   
                    js_ar = JSON.parse(http.responseText);                   
                    var lng = js_ar.length;               
                    var fragment = document.createDocumentFragment();
                    var listeelm = document.getElementById("player");
                    var select = document.createElement('select');
                    select.setAttribute("id", "player");               
                    select.setAttribute("name", "player");
                   
                    var option = document.createElement('option');                   
                    var text = document.createTextNode("vælg spiller");
                    option.setAttribute("value", "0");
                    option.appendChild(text);
                    select.appendChild(option);
                   
                   
                    for( var i = 0; i < lng; i++ ) {
                        option = document.createElement('option');
                        option.setAttribute("value",js_ar[i]['id']);
                        text = document.createTextNode(js_ar[i]['name']);
                        option.appendChild(text);
                        select.appendChild(option);
                    }
                    fragment.appendChild(select);       
                    listeelm.parentNode.replaceChild(fragment, listeelm);               
                }           
            }
            http.send(null);       
        }       
   
    </script>

Formularen:
<form method="post" action="?page=<?php echo $page;?>" name="enter">
                                <fieldset>
                                    Vælg turnering:
                                    <select name="tourn" id="tourn" onchange="UpdateTeam(this.value)">
                                        <option selected="selected" value="">Vælg her</option>
                                        <?php           
                                            $sqlT = "select * from tournaments";// where tournSubscr >= ".date('d-m-Y')."";
                                            $queryT = mysqli_query($db,$sqlT);
                                            while($resT=mysqli_fetch_array($queryT)){
                                                echo"<option value='".$resT['tournID']."'>".$resT['tournName']."</option>";
                                            }           
                                        ?>
                                    </select>
                                    Vælg dit hold:
                                    <select name="classes" id="classes" onchange="UpdatePlayer(this.value)">
                                        <option selected="selected" value="">Vælg her</option>       
                                    </select><br />
                                    Dit navn:
                                    <select name="player" id="player">
                                        <option selected="selected" value="">Vælg her</option>     
                                    </select><br />
                                    <input type="submit" name="okT" value="Tilmeld" />
                                </fieldset>
                            </form>

Og request.php:
<?php
    require_once("config.php");
    $id = $_GET['id'];   
    $group = $_GET['group'];
    $ar = array();   
   
    switch($group){   
        case "team":
            $sql = "select * from classes where tournID = ".$id."";   
            $query = mysqli_query($db,$sql);
            while($res=mysqli_fetch_array($query)){
                $ar[] = array("id" => $res['classID'], "name" => $res['className']);                 
            }           
        break;
   
        case "player":       
            $sql = "select * from players where classID = ".$id."";   
            $query = mysqli_query($db,$sql);           
            while($res=mysqli_fetch_array($query)){
                $ar[] = array("id" => $res['playerID'], "name" => $res['playerName']);               
            }       
        break;

    }   
    echo json_encode($ar);
?>

Såvidt jeg kan lure mig frem til så skulle det egentlig være det, men der sker bare ikke noget når jeg vælger turnering, og jeg har tjekket at mine relationer i databasen er korrekte.

Hvad gør jeg galt?
Avatar billede webbe Nybegynder
05. september 2011 - 13:33 #16
Til ronols

Fik det til at virke - det var mine sql-strenge der skulle rettes lidt til i.

Smid et svar og pointene er dine
Avatar billede olsensweb.dk Ekspert
05. september 2011 - 20:49 #17
får du så her

men overvej at anvende post istedet for get når du sender request til request.php
overvej også om du vil teste for om brugerens browser understøtter XMLHttpRequest (min målgruppe bruger alle en moderne browser der understøtter XMLHttpRequest, så jeg tester ikke for det)
Avatar billede olsensweb.dk Ekspert
05. september 2011 - 20:50 #18
skulle ha været et svar
Avatar billede webbe Nybegynder
06. september 2011 - 08:36 #19
Tak for info.

Med hensyn til POST/GET er det allerede rettet til, og min målgruppe bruger alle en nyere browser.

Systemet er til en uddannelse inden for web-området, hvor vi kører en bordfodbold turnering, så vi må formode at alle bruger en nyere browser.

Det kan godt være jeg henvender mig igen senere med et lignende spørgsmål, når jeg når dertil hvor resultaterne af kampene skal indtastes.
Håber det vil være OK.
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