TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[javascript,php,mysql] pomocy z kodem, bo $%&$@# zwariuje.. , koral 30/05/05 03:14 OK, chcialem polaczyc uzaleznianie zawartosci wyswietlanej w dwoch <select> (za pomoca javascript, to sie da wszedzie znalezc) z wypelnianiem tych <select> poprzez mysql i php. od slow do czynow, oto statyczny,dzialajacy javascript(nie pamietam skad):
-------------------------------------------------------------------
-------------------------------------------------------------------
<form name="doublecombo">
<p><select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<option>Witryny techniczne</option>
<option>Witryny informacyjne</option>
<option>Wyszukiwarki</option>
</select>
<select name="stage2" size="1">
<option value="http://wsabstract.com">Website Abstraction</option>
<option value="http://www.news.com">News.com</...n>
<option value="http://www.wired.com">Wired News</option>
</select>
<input type="button" name="test" value="Wczytaj!"
onClick="go()">
</p>
<script>
<!--
var groups=document.doublecombo.example.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
group[0][0]=new Option("Website Abstraction","http://wsabstract.com")
group[0][1]=new Option("News.com","http://www.news.com")
(...........troche wycialem..............)
group[2][2]=new Option("Excite","http://www.excite.com")
group[2][3]=new Option("Lycos","http://www.lycos.com")
var temp=document.doublecombo.stage2
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
function go(){
location=temp.options[temp.selectedIndex].value
}
//-->
</script>
-------------------------------------------------------------------
-------------------------------------------------------------------
A teraz to co poczarowalem (czesc z zapytaniami do bazy i obrobka wynikow jest wzieta z http://devshed.spunge.org/...Side/MySQL/JS_Arrays/ ):
-------------------------------------------------------------------
-------------------------------------------------------------------
<form name="doublecombo">
<SELECT NAME="example" onChange="redirect(this.options.selectedIndex)">
<? (.....tu zapytanie do mysql i stworzenie <option> -wszystko jest ok) ?>
</SELECT>
<select name="stage2" size="1">
<option>cosnapoczatku</option>
</select>
<input type="button" name="test" value="Wczytaj!" onClick="go()">
</form>
<script language="javascript">
<!--
<? (.......tu sa tworzone analogiczne jak w poprzednim group[x][y], ale poprzez mysql - wynik tego jest poprawny i zgodny z oczekiwanym:)- przynajmniej patrzac na zrodlo storny.......)
$query = "SELECT p.person_id, s.person_id, CONCAT(last_name,', ',first_name) AS name, skill_id
FROM personnel p, person_skill s WHERE p.person_id = s.person_id ORDER BY skill_id, name";
include("..\\..\\inc\\polaczenie.inc");
$type = "";
$number2 = "0";
?> (....wypisuje to samo co w poprzednim.....)
//var group = new Array(); alterantywna wersja
var groups=document.doublecombo.example.options.length
var group=new Array(groups);
<? (....tak naprawde to tu sa tworzone te group[x][y]....)
while ($myrow = mysql_fetch_row($result)) {
if ($myrow[3] != $type) {
if ($number2 != NULL) {
$newnumber2 = ($number2 + "1");
print ("group[$number2] = new Array();\n");
$number2 = $newnumber2;
$type = $myrow[3];
$number = "0";
}
}
print "group[" . ($number2 - "1") . "]";
if ($number != NULL) {
$newnumber = ($number + "1");
print ("[$number]");
$number = $newnumber;
}
print (" = new Option(\"$myrow[2]\", \"http://google.com\");\n");
}
?>
(....no i tu jest znowu dokladnie to, co w poprzednim po deklaracjach group[x][y])
-----------------------------------------------------------------
-----------------------------------------------------------------
No, zatem wszystko niby pieknie- ALE NIE DZIALA. I nie mam pojecia dlaczego. Moze ktos spotkal sie z problemem lub wie gdzie znalezc gotowe rozwiazanie, bo siedze nad tym w **** czasu i nic:/- ok, mam odpowiedz , koral 30/05/05 08:06
problem tkwil w:
print (" = new Option(\"$myrow[2]\", \"http://google.com\");\n");
nie wiedziec czemu linie czasem byly przelamywane, przez co JS sie wysypuje...poprawnie winno byc:
print (" = new Option(\"".preg_replace("/([\s]+)/", " ", $myrow[2])."\", \"http://google.com\");\n");
dodatkowo wszystkei zmienne php tez mozna przejechac:
preg_replace("/\r\n/", '', $zmienna);
ale to chyba nie jest konieczne |
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|