Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pole select, błędny kod?
bbula
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.03.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował bbula 19.03.2009, 23:40:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
tmgryf
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 1
Dołączył: 14.02.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
bbula
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.03.2009

Ostrzeżenie: (0%)
-----


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();
Go to the top of the page
+Quote Post
tmgryf
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 1
Dołączył: 14.02.2009

Ostrzeżenie: (0%)
-----


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();

Ten post edytował tmgryf 8.03.2009, 18:39:07
Go to the top of the page
+Quote Post
bbula
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.03.2009

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował bbula 19.03.2009, 23:50:44
Go to the top of the page
+Quote Post
Foxx
post
Post #6





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Dodaj brakujący średnik na końcu linii;
Go to the top of the page
+Quote Post
bbula
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.03.2009

Ostrzeżenie: (0%)
-----


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...?

Ten post edytował bbula 20.03.2009, 12:02:33
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 17:31