Autor | Zpráva | ||
---|---|---|---|
Ahoj Profil * |
#1 · Zasláno: 12. 7. 2013, 11:16:35 · Upravil/a: Ahoj
Dobrý den, potřeboval bych poradit. mám formulář a v něm select, ve kterém když se něco vybere, tak se má automaticky načíst do druhého selectu data z databáze, podle toho co bylo vybráno v prvním. problém je, že ten můj js mi refreshne stránku a ostatní položky ve formuláři vymaže, co s tím?
Tady je kod: vypis: function(){ $("#Select2").attr("disabled", "disabled"); $("#Select1").bind("change", function(){ var url = "?id=" + $("#Select1 option:selected").val(); window.open(url, "_self"); }) $("#Select2").removeAttr("disabled"); } <tr> <td><label for="Select1">Vyber1: </label></td> <td> <select name="IDvyber1" id="Select1"> <option></option> <?php foreach(getData() as $value): ?> <option value="<?= $value["ID"]?>"><?= $value["Hodnota"] ?></option> <?php endforeach; ?> </select> </td> </tr> <tr> <td><label for="Select2">Vyber2: </label></td> <td> <select name="IDvyber2" id="Select2"> <?php foreach(getData2($_GET["id"]) as $d): ?> <option value="<?= $d["ID"]?>"><?= $d["Hodnota"] ?></option> <?php endforeach; ?> </select> </td> </tr> Děkuji ještě jsem zapoměl přidat volání té funkce: <body onload="vypis()"> |
||
_es Profil |
#2 · Zasláno: 12. 7. 2013, 12:24:51
Ahoj:
window.open(url, "_self"); |
||
Ahoj Profil * |
#3 · Zasláno: 12. 7. 2013, 12:29:19
No a jak to teda udělat jinak?
|
||
_es Profil |
#4 · Zasláno: 12. 7. 2013, 12:52:48
Ahoj:
Áno, nejako inak. Naštuduj si základné veci o AJAXe. |
||
Ahoj Profil * |
#5 · Zasláno: 12. 7. 2013, 13:09:50
na to už jsem koukal, ale moc tomu nerozumím, mohl bys mi poradit víc? hledal jsem na internetu i nějaký hotový skript, ale nic moc jsem nenašel, přitom něco podobného jsem viděl snad u každého druhého webu...
|
||
Ahoj Profil * |
#6 · Zasláno: 12. 7. 2013, 18:11:55
Myslíš ten ajax použít na výpis z databáze?
|
||
Ahoj Profil * |
#7 · Zasláno: 12. 7. 2013, 21:52:01
Ahoj, tak už mám nějaké řešení, ale pořád to nefunguje tak jak by mělo. do toho druhého selectu se totiž vypíší nejprve hodnoty z toho prvního a pod to, ty které by tam měli být. tady je kod:
database: tridy IDtrida | Trida studenti IDstudent | IDtrida | Jmeno function.php function tridy(){ $query = mysql_query("SELECT `IDtrida`, `Trida` FROM `tridy`"); $data = array(); while ($row = mysql_fetch_array($query)) $data[] = $row; return $data; } function studenti($idTrida){ $query = mysql_query("SELECT `IDstudent`, `Jmeno` FROM `studenti` WHERE `IDtrida` = $idTrida"); $data = array(); while ($row = mysql_fetch_array($query)) $data[] = $row; return $data; } index.php <?php include "function.php"; ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="script/jquery.js"></script> <script type="text/javascript" src="script/jquery-ui.js"></script> <script type="text/javascript" src="script/function.js"></script> <title>Pokus</title> </head> <body> <form> <select name="trida" onchange="studenti(this.value)"> <?php foreach(tridy() as $t): ?> <option value="<?= $t["IDtrida"]?>"><?= $t["Trida"]?></option> <?php endforeach; ?> </select> <select name="student" id="student"> <?php foreach(studenti($_GET["id"]) as $s): ?> <option value="<?= $s["IDstudent"]?>"><?= $s["Jmeno"]?></option> <?php endforeach; ?> </select> </form> </body> </html> function.js m studenti: function(str) { if (str == "") { document.getElementById("student").innerHTML = ""; return; } 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(xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("student").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "index.php?id=" + str, true); xmlhttp.send(); 1.Třída 2.Třída 3.Třída .... Karel Jirka Prostě ten první select mi to zkopíruje do toho druhého... Už na to koukám dvě hodiny a pořád nevím co s tím...děkuji za radu. |
||
Ahoj Profil * |
#8 · Zasláno: 13. 7. 2013, 18:53:55
Opravdu se nenajde někdo kdo ví kde je chyba?
|
||
Ahoj Profil * |
#9 · Zasláno: 13. 7. 2013, 22:13:23
Přišel jsem na to, že problém asi nejspíš bude v tom function.js, že ten tam ty údaje z prvního selectu nějak přidává, ale nevím jak je to možné...
|
||
engien Profil * |
#10 · Zasláno: 14. 7. 2013, 01:13:50
že ten tam ty údaje z prvního selectu nějak přidává
Ne, je to jinak. Do stránky vlepujete AJAXem tu samou stránku ještě jednou. Máte AJAXem stahovat jen data pro druhý select. No a innerHTML Vám u selectu nebude fungovat v IE, takže se jednotlivé položky option musí měnit přímo. Zkuste pochopit co dělají kódy použité tady Ajax přidání options do selectu nefunguje v IE a pak už je to brnkačka. |
||
Ahoj Profil * |
#11 · Zasláno: 14. 7. 2013, 10:18:59
engien:
tak jsem koukal na kod v tom odkazu, udělal jsem to podle něj a pořád to funguje stejně. použil jsem tento js: <script type="text/javascript" charset="utf-8"> var xmlhttp; function loadXMLDoc(url,cfunc) { 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=cfunc; xmlhttp.open("GET",url,true); xmlhttp.send(); } function remove(element) { return element.parentNode.removeChild(element); } function ajax_load_options(val) { var sel = document.getElementById('dva'); var url = "ajax_load.php?data=" + val; loadXMLDoc(url,function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { sel.innerHTML = xmlhttp.responseText; // výstup přiřadí do selectu } }); } </script> |
||
engien Profil * |
#12 · Zasláno: 14. 7. 2013, 16:21:20
Co Vám vlastně nefunguje? Ukázka http://tests.designovej.eu/djpw/select.php?json=1 nebo výpis z databáze?
|
||
Ahoj Profil * |
#13 · Zasláno: 14. 7. 2013, 16:40:24
výpis z databáze je ok, problém je v tom, že to co je v prvním selectu se po vybrání objeví ve druhém.
takže když mám třeba: <select> A B C </select> po vybrání A by se mělo objevit třeba 1, 2, 3, ale ve druhém selectu bude <select> A B C 1 2 3 </select> problém bude v tom js, ale ten skript jsem zkopíroval, v té ukázce funguje a u mě ne... |
||
engien Profil * |
#14 · Zasláno: 14. 7. 2013, 18:05:46
Pošlete odkaz na to co Vám nefunguje. Když budeme koukat na funkční kód, tak se chyba hledá dost těžko.
|
||
Ahoj Profil * |
#15 · Zasláno: 14. 7. 2013, 18:22:34
|
||
engien Profil * |
#16 · Zasláno: 14. 7. 2013, 19:08:38
Je tam stejný kód jako jste ukazoval už předevčírem. Dokud to nespravíte, tak to samo od sebe fungovat nezačne.
howgh |
||
Ahoj Profil * |
#17 · Zasláno: 14. 7. 2013, 19:50:04
zkoušel jsem použít ten skript odtud http://tests.designovej.eu/djpw/select.php ale ten mi také nefungoval. možná by to vyřešilo to načítání cyklem jako je zde, ale nevím kam to tam mám přidat.
|
||
Časová prodleva: 11 let
|
0