Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pole select
Forum PHP.pl > Forum > PHP
bbula
witam. mam 2 pola select a w nim maja znajdować sie kraje oraz ich miasta. wszystkie dane maja byc pobierane z bazy danych z 2 tabel miasto i kraj. Czyli select pierwszy zależny od drugiego.
Mam 3 pliki index.html
Kod
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
var ajax = new sack();

function getml(sel)
{
var cc = sel.options[sel.selectedIndex].value;
document.getElementById('miasto').options.length = 0;
if(cc.length>0){
ajax.requestFile = 'getm.php?cc='+cc;
ajax.onCompletion = makem;
ajax.runAJAX();
}
}

function makem()
{
var obj = document.getElementById('miasto');
eval(ajax.response);
}
</script>

</head>
<body>



<form action="">
<select id="kraj" name="kraj" size="1" onchange="getml(this)">
<option value="">--</option>
<?php
$conn = mysql_connect('mysql2.yoyo.pl','db698643','*****');
$db = mysql_select_db('db698643',$conn);
if($sql = mysql_query("SELECT * FROM kraj ORDER BY nazwa ASC",$conn))

while ($rekord = mysql_fetch_array($sql)){
if($rekord['nazwa']=='Polska')
echo '<option value="'.$rekord['id'].'" selected>'.$rekord['nazwa'].'</option>';
else echo '<option value="'.$rekord['id'].'">'.$rekord['nazwa'].'</option>';
}
mysql_close($conn);
?>
</select>

<select id="miasto" name="miasto" size="1">
<option value="">Wybierz miasto</option>
</select>

</form>
</body>
</html>

getm.php
Kod
getm.php
<?PHP
if(isset($_GET['cc'])){
$k=htmlspecialchars($_GET['cc']);
$conn = mysql_connect('mysql2.yoyo.pl','db698643','****');
$db = mysql_select_db('db698643',$conn);

echo '<option value="">--</option>';
if($sql = mysql_query("SELECT * FROM miasto WHERE kraj='$k' ORDER BY nazwa ASC",$conn))
while ($rekord = mysql_fetch_array($sql)){
echo '<option value="'.$rekord['id'].'">'.$rekord['nazwa'].'</option>';
}

mysql_close($conn);
}
?>

oraz dołączony plik ajax.js
to struktura tabel

Kod
CREATE TABLE kraj (
  id int(11) unsigned NOT NULL auto_increment,
  nazwa varchar(255) NOT NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY nazwa (nazwa)
);

CREATE TABLE miasto (
  id int(11) unsigned NOT NULL auto_increment,
  nazwa varchar(255) NOT NULL,
  kraj int(11) NOT NULL,
  PRIMARY KEY (id)
);

Pierwszy Select wyświetla mi kraje z bazy, lecz drugi jest pusty. Czy w kodzie jest błąd? prosze o pomoc, pozdrawiam
tmgryf
bez przygladania się zbytnio zorbilbym tak ze - sprawdzilbym jak dziala getm.php?cc=jakisnumer

i jeśli coś wyświtla to dobrze i dalej nie bardzo jestem ekspert od JS i ajaksa ale gdzie dokładnie jest "wstawianie do selecta[miasta]"?

może jeszcze powinno być:

ajax.onCompletion = makem(); questionmark.gif
bbula
Kod
getm.php?cc=numer

w ten sposób wyświetlają mi sie miasta, ale nie w polu select
a ta linijka gdzie ma być?
Cytat
ajax.onCompletion = makem();
tmgryf
Ja naprawdę jestem kiepski w tym temacie... doczytałem i wiem że... NIE STOSUJ SIĘ DO MOICH RAD bo jestem w błędzie, za co cie przepraszam,ale pokombunujję dalej:

function makem()
{
var obj = document.getElementById('miasto');
eval(ajax.response);
}


wywolujesz funkcję oncomplite
i dajesz eval(ajax.response)

a element ajax nie jest chyba elementem globalnym wiec to najprawdopodobniej bedzie twoj problem

a gdybyś tak zrobił:

ajax.onCompletion = function(req)
{
var obj = document.getElementById('miasto');
eval(ajax.response);
}
ajax.runAJAX();
bbula
uruchamiałem strone przez Mozille na Firebugu. Wybieram kraj (pobiera mi z bazy dane), lecz pole miasta jest puste.
Mam taki błąd:
Cytat
missing ; before statement

Co ktoś wie jak sie z tym uporać?
Foxx
Dodaj brakujący średnik na końcu linii;
bbula
Błąd jest w pliku ajax.js w lini 43, firebug zwraca taki komunikat:
missing ; before statement
createAJAX()()ajax.js (wiersz 43)
sack(undefined)ajax.js (wiersz 192)
(?)()page (wiersz 6)
< option value="">--</option><option valu...</option><option value="34">LV</option>\n

Ten plik jest z gotowego skryptu. Tam raczej nie powinno być błędu...?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.