AJAX-al frissített SELECT nem ad értéket

AJAX-al frissített SELECT nem ad értéket
2013-09-25T11:12:25+02:00
2013-09-25T12:44:52+02:00
2022-10-15T22:25:33+02:00
kukko
Sziasztok!

Az lenne a problémám hogy egy oldalon csináltam egy SELECT tag-et amiben egy ország (amit egy másik lenyíló menüből választok ki) megyéit listázom ki. A kilistázást AJAX-al csinálom, hogy mindig mikor a felhasználó átállítja az országot akkor kérje le a megyéket. Az AJAX tökéletesen vissza is adja nekem és be is teszi a célul kitűzött div-be. Viszont mikor elküldöm a FORM-ot, melyben már kiválasztottam az országot meg a megyét, nem hajlandó kiolvasni a megyének az értékét. Pedig hogyha külön megnyitom a böngészőben azt a fájlt ami a megyéket adja vissza, akkor ott látható hogy az option-ök értéke is meg van adva.

link

AJAX előtti lenyíló menü:
echo "<td style='width:20%;' id='megye'>"; echo "<select name='addvarosselectmegye' style='width:140px;'>"; if ($_GET['orszag']!=""){ $sql="SELECT * FROM megye WHERE orszag='$_GET[orszag]'"; $result=mysql_query($sql); if (mysql_num_rows($result)>0){ echo "<option value=''></option>"; while ($row=mysql_fetch_array($result)){ echo "<option value='".$row['id']."' "; if ($row['id']==$_GET['megye']){ echo "selected"; } echo ">".$row['nev']."</option>"; } } else{ echo "<option value=''>Nincsenek megyék</option>"; } } else{ echo "<option value=''>Válassz országot!</option>"; } echo "</select>"; echo "</td>";

AJAX utáni lenyíló menü:
<?php include '../connect.php'; $sql="SELECT * FROM megye WHERE orszag='$_GET[orszag]'"; $result=mysql_query($sql); echo "<select name='addvarosselectmegye' style='width:140px;'>"; if (mysql_num_rows($result)>0){ echo "<option value=''></option>"; while ($row=mysql_fetch_array($result)){ echo "<option value='$row[id]'>".$row['nev']."</option>"; } } else{ echo "<option value=''>Válassz országot!</option>"; } echo "</select>"; mysql_close($connection); ?>

AJAX:
function getMegye(){ var xmlhttp; if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("megye").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","../ajax/getmegye.php?orszag="+document.getElementById("addvarosselectorszag").value,true); xmlhttp.send(); } </script>

Remélem hogy valaki meglátja benne a hibát, eléggé bosszantó hogy szerintem jól írtam meg, mégse képes olvasni a lenyíló menüből.

Előre is köszönettel, kukko.
Mutasd a teljes hozzászólást!
És miért nem nézed meg ITT, hogy Micu hogyan csinálta?...
Megj: A segítőknek könnyebb lenne, ha átláthatóbb lenne a közölt kódod... -> Például így:
echo '<form action="index.php?page=varos&amp;orszag='.$_GET['orszag']. ' &amp;megye='.$_GET['megye'].'" '. ' method="post">'; echo "<tr>"; echo "<td style='width:10%;'>"; echo "</td>"; echo "<td style='width:30%;'>"; echo "<input type='text' name='addvaros'>"; echo "</td>"; echo "<td style='width:20%;'>"; echo "<select name='addvarosselectorszag' onchange='getMegye();' ". " id='addvarosselectorszag'>"; $sql="SELECT * FROM orszag"; $result=mysql_query($sql); if(mysql_num_rows($result)>0) { echo "<option value=''></option>"; while($row=mysql_fetch_array($result)) { echo "<option value='".$row['id']."' "; if($row['id']==$_GET['orszag']) { echo "selected"; } echo ">".$row['nev']."</option>"; } } else { // }
Azaz lépcsőzetes és ne kelljen vízszintesen görgetni...
Mutasd a teljes hozzászólást!

  • Hol van ahol megnyitod a formot?
    Hol van ahol megpróbálod feldolgozni, ahol nap kapja meg az értéket?
    Mutasd a teljes hozzászólást!
  • Elnézést, azt kifelejtettem.

    Feldolgozó:
    if (isset($_POST['varossubmit']) && $_POST['addvarosselectmegye']!="" && $_POST['addvarosselectorszag']!=""){ $sql="SELECT * FROM varos WHERE nev='$_POST[addvarosselectmegye]' AND orszag='$_POST[addvarosselectorszag]'"; $result=mysql_query($sql); if (mysql_num_rows($result)>0){ echo "Ez a város már szerepel az adatbázisban."; } else{ $sql="INSERT INTO varos (nev, orszag, megye) VALUES ('$_POST[addvaros]', '$_POST[addvarosselectorszag]', '$_POST[addvarosselectmegye]')"; mysql_query($sql); } }
    Mutasd a teljes hozzászólást!
  • És a többi ad értéket?

    print_r($_POST) mit ad vissza?
    Mutasd a teljes hozzászólást!
  • Hogyha az AJAX már módosította a lenyíló menüt akkor ki se írja az értékét, még a nevét sem.

    Ez az AJAX utáni eredmény:
    Array ( [addvaros] => asdasd [addvarosselectorszag] => 1 [varossubmit] => Elküldés )


    Ez pedig az amikor úgy küldöm el a FORM-ot hogy abban nem az AJAX generálta a lenyíló menüt:
    Array ( [addvaros] => [addvarosselectorszag] => 1 [addvarosselectmegye] => 4 [varossubmit] => Elküldés )
    Mutasd a teljes hozzászólást!
  • Nem lehet, hogy az ajax a FORM-on kívülre rakja a selectet?
    Mutasd a teljes hozzászólást!
  • Ez lenne az egész FORM:
    echo "<form action='index.php?page=varos&orszag=".$_GET['orszag']."&megye=".$_GET['megye']."' method='post'>"; echo "<tr>"; echo "<td style='width:10%;'>"; echo "</td>"; echo "<td style='width:30%;'>"; echo "<input type='text' name='addvaros'>"; echo "</td>"; echo "<td style='width:20%;'>"; echo "<select name='addvarosselectorszag' onchange='getMegye();' id='addvarosselectorszag'>"; $sql="SELECT * FROM orszag"; $result=mysql_query($sql); if (mysql_num_rows($result)>0){ echo "<option value=''></option>"; while ($row=mysql_fetch_array($result)){ echo "<option value='".$row['id']."' "; if ($row['id']==$_GET['orszag']){ echo "selected"; } echo ">".$row['nev']."</option>"; } } else{ echo "<option value=''>Nincsenek országok</option>"; } echo "</select>"; echo "</td>"; echo "<td style='width:20%;' id='megye'>"; echo "<select name='addvarosselectmegye' style='width:140px;'>"; if ($_GET['orszag']!=""){ $sql="SELECT * FROM megye WHERE orszag='$_GET[orszag]'"; $result=mysql_query($sql); if (mysql_num_rows($result)>0){ echo "<option value=''></option>"; while ($row=mysql_fetch_array($result)){ echo "<option value='".$row['id']."' "; if ($row['id']==$_GET['megye']){ echo "selected"; } echo ">".$row['nev']."</option>"; } } else{ echo "<option value=''>Nincsenek megyék</option>"; } } else{ echo "<option value=''>Válassz országot!</option>"; } echo "</select>"; echo "</td>"; echo "<td style='width:20%;'>"; echo "<input type='submit' style='width:100px;' name='varossubmit'>"; echo "</td>"; echo "</tr>"; echo "</form>";

    Erre még nem gondoltam, de a td amibe teszi a lenyíló menüt az a két form tag között van, úgyhogy a form-ba kerül.
    Mutasd a teljes hozzászólást!
  • Senkinek sincs ötlete hogy mi lehet a gond?
    Mutasd a teljes hozzászólást!
  • És miért nem nézed meg ITT, hogy Micu hogyan csinálta?...
    Megj: A segítőknek könnyebb lenne, ha átláthatóbb lenne a közölt kódod... -> Például így:
    echo '<form action="index.php?page=varos&amp;orszag='.$_GET['orszag']. ' &amp;megye='.$_GET['megye'].'" '. ' method="post">'; echo "<tr>"; echo "<td style='width:10%;'>"; echo "</td>"; echo "<td style='width:30%;'>"; echo "<input type='text' name='addvaros'>"; echo "</td>"; echo "<td style='width:20%;'>"; echo "<select name='addvarosselectorszag' onchange='getMegye();' ". " id='addvarosselectorszag'>"; $sql="SELECT * FROM orszag"; $result=mysql_query($sql); if(mysql_num_rows($result)>0) { echo "<option value=''></option>"; while($row=mysql_fetch_array($result)) { echo "<option value='".$row['id']."' "; if($row['id']==$_GET['orszag']) { echo "selected"; } echo ">".$row['nev']."</option>"; } } else { // }
    Azaz lépcsőzetes és ne kelljen vízszintesen görgetni...
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd