Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Ajax?PHP MySQL]Wybór z selecta
Forum PHP.pl > Forum > Przedszkole
kanji
Mam dwa selecty jeden wojewodztwa i jeden miasta, kiedy wybieram wojewodztwo to mi się miasto nie zmienia. Nie wiem dlaczego wydaje mi się że mam dobrze, wczoraj spędziłem nad tym z 4h i nie umiem dojśc do tego o co chodzi.

pierwszy plik
  1. <? include ("skrypty/select.php"); ?>
  2. <div class="szukaj">
  3.    <form action="?gdzie=10" method="post">
  4.    <p class="txt1">Znajdź Pizzerie w swoim mieście:</p> <br />
  5.    <select name="wojewodztwo" class="woj" onchange="pokaz_miasta(this.Value)">
  6.        <? fWojew(); ?>
  7.    </select>
  8.  
  9.    <select id="miasta" name="miasto" class="mia">
  10.        <? fMiasta() ; ?>
  11.    </select>
  12.    <button type="submit" class="szu1">Szukaj</button>
  13.        
  14.    </form>
  15. </div><br />

następnie select.php
  1. <?
  2. /* wybieranie wojewodztw z BD */
  3. function fWojew()
  4. {
  5.    $sWoj = "select * from wojewodztwo";
  6.    $wWoj = mysql_query($sWoj);
  7.    $num = mysql_numrows($wWoj);
  8.    
  9.    
  10.    $i=0;
  11.    
  12.    while ($i < $num)
  13.    {
  14.        echo"<option value=".mysql_result($wWoj,$i,"ID_Woj").">".mysql_result($wWoj,$i,"nazwa")."</option>";
  15.        $i++;
  16.    }
  17. }
  18. //////////////////////////////////////
  19. function fMiasta()
  20. {
  21.    $sMia = "select ID_Miasto, nazwa from miasto where ID_Woj=".$_GET['idwoj']."";
  22.    $wMia = mysql_query($sWoj);
  23.    $fMia = mysql_fetch_array($sMia);
  24.    
  25.    while ($fMia)
  26.    {
  27.        echo"<option value=".$fMia['ID_Miasto'].">".$fMia['nazwa']."</option>";
  28.    }
  29. }    
  30. ?>

skrypt z js dodwany jest w index.php
  1. <?php
  2. var xmlhttp
  3.  
  4. function pokaz_miasta(str)
  5. {
  6. xmlhttp=GetXmlHttpObject();
  7. if (xmlhttp==null)
  8.  {
  9.  alert ("Twoja przelgądarka nie wspiera AJAXA!");
  10.  return;
  11.  }
  12. var url = "?gdzie=1";
  13. url=url+"&idwoj="+str;
  14. xmlhttp.onreadystatechange=zmien_status;
  15. xmlhttp.open("GET",url,true);
  16. xmlhttp.send(null);
  17. }
  18.  
  19. function zmien_status()
  20. {
  21. if (xmlhttp.readyState==4)
  22.  {
  23.  document.getElementById("miasta").innerHTML=xmlhttp.responseText;
  24.  }
  25. }
  26.  
  27. function GetXmlHttpObject()
  28. {
  29. if (window.XMLHttpRequest)
  30.  {
  31.  return new XMLHttpRequest();
  32.  }
  33. if (window.ActiveXObject)
  34.  {
  35.  return new ActiveXObject("Microsoft.XMLHTTP");
  36.  }
  37. return null;
  38. }
  39. ?>


I nic się nie dzieje nie zmienia się nic w drugim selecie gdzie są miasta
erix
Cytat
Nie wiem dlaczego wydaje mi się że mam dobrze, wczoraj spędziłem nad tym z 4h i nie umiem dojśc do tego o co chodzi.

A konsola błędów?
osl
we wszystkich przeglądarkach? z tego co pamiętam, IE6 (nie wiem jak IE7), ma problem z dodawaniem opcji przez innerHTML...
kanji
a w konsoli to za każdym razem co innego, jeśli ma problem przez inner to na co zmienic? Ale w FireFox tez nie działa
konsola z IE7
wiersz 22
znak 3
blad nieznany bład czasu wykonania
kod 0
golaod
http://www.w3schools.com/htmldom/dom_obj_select.asp

Czy to naprawdę aż takie trudne znaleźć samemu coś, co się nazywa "właściwym" rozwiązaniem ?
kanji
Czy to naprawdę trudne przeczytac o co chodzi a nie dawac link do atrybutów selecta?
golaod
Możemy się tak kłócić do końca jednak jak będziesz na tyle "fajny" i rozsądny, a w dodatku wdzięczny, że Ci pomogłem to zjedziesz na dół i znajdziesz takie funkcje jak add i remove ?
kanji
To może bys mógł mi podpowidziec jak to wstawic bo nie mam zielonego pojecia
golaod
Teraz Ci pomogę jednak pamiętaj, że następnym razem możesz zapomnieć o pomocy i w dodatku zostaniesz zrugany...bo na stronie jest napisane jak użyć tych dwóch funkcji.

Kod
var myOption=document.createElement('option');
myOption.text='Kiwi'
var mySelect = document.getElementById('moj_select');
mySelect.add(myOption);

mySelect.remove(numer_indeksu);
kanji
ale nie rozumiem po co dawac add? skoro PHP załatwia to wszystko, jak przeglądam kod co się generuje to mam taką odp.
  1. <b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <b>c:\usr\krasnal\www\mgr\skrypty\select.php

a te linie z php to jest
  1. <?php
  2. $wMia = mysql_query($sMia);
  3.    $fMia = mysql_fetch_array($wMia);
  4. ?>


więc tu mi się wydaje problem że zmienna nie przechodzi albo coś innego, bo jakby przekazało to na pewno select by się uzupełnił
Andaramuxo
Kod
<?php
$wMia = mysql_query($sMia);
   $fMia = mysql_fetch_array($wMia, MYSQL_ASSOC);
?>
ernie242
Bardziej to wygląda jak nieudane zapytanie. Czyli w $wMia nie ma zasobu, bo query nie powiodło się.
A sprawdzania błędów ni ma.. więc nie wiesz smile.gif
Polecam stosować :
  1. <?php
  2. ?>

mysql_error

I proponuję stosować jakieś bardziej odpowiednie nazwy zmiennych, co na przykład ma oznaczać $wMia questionmark.gif !?!
Powinno być $zasób, albo $resource, albo cokolwiek co by wskazywało na to co ma być w zmiennej.
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.