ugrás a tartalomhoz

Select menü létrehozása AJAX segítségével hiba

MrNemo · 2018. Okt. 21. (V), 08.07
Sziasztok
Készítettem egy kis progit, ami a következő képen kellene működjön:
Adott egy form, amit php-val állítok össze adatbázisból:
1. Egy lenyíló listából kiválasztom az iskolát
2. Az előbb kiválasztott iskola azonosítójával létrejön egy oktató lista
3. Módosítás gomb hatására elküldöm az adatokat, és itt a baj, mert az oktato_id változó nincs benne a $_POST változóban
A kódok:

<tr><form action="bizottsag.php" id="bizottsag_form1" name="bizottsag_form1" method="post">
	<td>
	<div class="form-group">
		<select class="form-control" id="iskola_id" name="iskola_id" onChange="showOktatoSelect(this.value, 'oktato4', '4');">
			<option value="0" selected>Válassz iskolát</option>
            <option value="1">Alfa Autósiskola</option>
            <option value="2">Áncsán</option>
		</select>
	</div>
	</td>
	<td>
	<div class="form-group" id="oktato4">
		<input type="text" class="form-control" id="oktato_nev" name="oktato_nev" value="Fehér László" readonly>
		<input type="hidden" id="oktato_id" name="oktato_id" value="1">
	</div>
	</td>
	<td>
	<div class="form-group">
		<span class="text-center"><button type="submit" class="btn btn-primary">Módosít</button></span>
	</div>
	</td>
</form></tr>
Az AJAX kód:
function showOktatoSelect(iskolaID, selectID, ID) {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById(selectID).innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","oktato-select.php?id="+iskolaID+"&ssz="+ID,true);
        xmlhttp.send();
}
Ha iskola váltás nélkül elküldöm a formot, akkor minden érték ott van a $_POST-ba.
Miután kiválasztom az iskolát, az "oktato4" DIV tartalma átvált erre:
<div class="form-group" id="oktato4">
	<select class="form-control" id="oktato_id" name="oktato_id">
    	<option value="0" selected="">Válassz</option>
        <option value="6">Oktató ancsán 1</option>
        <option value="7">Oktató ancsán 2</option>
    </select>
</div>
Ha most küldöm el a formot, akkor már nincs oktato_id. Mi lehet a baj?
A segítségeket előre is köszönöm.
 
1

Tipp

Pepita · 2018. Okt. 21. (V), 17.53
Mivel nem írod le, hogy ez hogyan / mitől történik:
az "oktato4" DIV tartalma átvált erre

így csak tippelni tudok:
valamilyen js kód az, ami matat a DOM-ban, ezért mire ki szeretnéd nyerni az oktato_id értékét, addigra nem az van bent, amire keresel.
Így html ránézésre: másképp kell kinyerni egy input értékét és megint másképp egy select.option tömbből a selected értékét.
Amennyi js-t megmutattál, abban pont nincs benne, hogyan szeded össze a 3 id-t, és valószínűleg ott a hiba.
Próbáld meg esetleg kinyerni az input.value-t, és ha ez nem sikerül, akkor keresd select.option.selected-ként. Mindenképp érdemes adatellenőrzést bele tenni (és dev környezetben logolni) ott, ahol keresgélsz a DOM-ban.
Természetesen ez nem helyettesítheti a szerver oldali ellenőrzést!
2

Megoldva

MrNemo · 2018. Okt. 21. (V), 19.47
Köszönöm a hozzászólást.
Megoldódott közben. A form a fentieknél jóval hosszabb, ide csak a lényeget másoltam be.
Tesztelés céljából korábban raktam bele hidden oktato_id mezőt semmi értékkel. És természetesen az volt később a kódban, így mindig semmi lett az értéke.
Ez van ha az ember fáradtan programozgat.