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:
  1. <tr><form action="bizottsag.php" id="bizottsag_form1" name="bizottsag_form1" method="post">  
  2.     <td>  
  3.     <div class="form-group">  
  4.         <select class="form-control" id="iskola_id" name="iskola_id" onChange="showOktatoSelect(this.value, 'oktato4', '4');">  
  5.             <option value="0" selected>Válassz iskolát</option>  
  6.             <option value="1">Alfa Autósiskola</option>  
  7.             <option value="2">Áncsán</option>  
  8.         </select>  
  9.     </div>  
  10.     </td>  
  11.     <td>  
  12.     <div class="form-group" id="oktato4">  
  13.         <input type="text" class="form-control" id="oktato_nev" name="oktato_nev" value="Fehér László" readonly>  
  14.         <input type="hidden" id="oktato_id" name="oktato_id" value="1">  
  15.     </div>  
  16.     </td>  
  17.     <td>  
  18.     <div class="form-group">  
  19.         <span class="text-center"><button type="submit" class="btn btn-primary">Módosít</button></span>  
  20.     </div>  
  21.     </td>  
  22. </form></tr>  
Az AJAX kód:
  1. function showOktatoSelect(iskolaID, selectID, ID) {  
  2.         if (window.XMLHttpRequest) {  
  3.             // code for IE7+, Firefox, Chrome, Opera, Safari  
  4.             xmlhttp = new XMLHttpRequest();  
  5.         } else {  
  6.             // code for IE6, IE5  
  7.             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
  8.         }  
  9.         xmlhttp.onreadystatechange = function() {  
  10.             if (this.readyState == 4 && this.status == 200) {  
  11.                 document.getElementById(selectID).innerHTML = this.responseText;  
  12.             }  
  13.         };  
  14.         xmlhttp.open("GET","oktato-select.php?id="+iskolaID+"&ssz="+ID,true);  
  15.         xmlhttp.send();  
  16. }  
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:
  1. <div class="form-group" id="oktato4">  
  2.     <select class="form-control" id="oktato_id" name="oktato_id">  
  3.         <option value="0" selected="">Válassz</option>  
  4.         <option value="6">Oktató ancsán 1</option>  
  5.         <option value="7">Oktató ancsán 2</option>  
  6.     </select>  
  7. </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.