Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]listy SELECT
Forum PHP.pl > Forum > Przedszkole
lukas1986s
Witam

Posiadam formularz z dwoma rozwijanymi listami SELECT.

W jakis sposob skontruowac skrypt aby po wybraniu odpowiedniej opcji z pierwszej listy pojawily sie odpowiednie opcje w drugiej liscie . Czy moge tutaj skorzystac z php czy juz musze uzyc AJAX questionmark.gif
com
poco wymyślać koło na nowo http://turson.pl/blog/dynamiczne-zalezne-selecty/ wink.gif
johny_s
Przeszukaj forum wczoraj ten sam wątek był poruszany
lukas1986s
a co w pryzpadku jak ma dwie tabele np

a) Ulica
-Id
-Nazwa

cool.gif Pokoj
-Id
-UlicaId
-Nr Pokoju

Po wybraniu ulicy, chce zeby w drugiej liscie pojawily sie odpowiednie pryzpisane pokoje
Turson
Przecież przykład z linku podanego przez com dokładnie to opisuje
lukas1986s
do w/w bazy podlaczylem kod :

Kod
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<?php
// POŁĄCZENIE Z BAZĄ DANYCH
$db =  new PDO('mysql:host=localhost;dbname=rooms', 'admin', 'admin1', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
// POBRANIE WSZYSTKICH MAREK SAMOCHODÓW (DISTINCT - pobieramy marki bez powtórzeń)
$stmt = $db->query("SELECT DISTINCT(Nazwa) FROM ulica");
$ulica = $stmt->fetchAll();
?>

<form action="" method="post" id="formularz">
    <label for="ulica">Wybierz Ulice</label>
    <select id="ulice" name="ulica">
        <option>Wybierz</option>
        <?php foreach($ulice as $v): ?>
            <option><?php echo $v['ulica']; ?></option>
        <?php endforeach; ?>
    </select>

    <label for="pokoj">Wybierz pokoj</label>
    <select id="pokoje" name="pokoj">
    </select>
    <input type="submit" value="Ok">
</form>

<script>
$('#ulice').on('change', function(){
    var ulica = $(this).val();
    $.ajax({
        type: 'POST',
        url: 'szukaj.php',
        data: { 'ulica':ulica },
        success: function(msg){
            $("#pokoje").html(msg);
        }
    })
})
$('#formularz').submit(function(){
    /*
    SPRAWDZAMY, CZY UŻYTKOWNIK WYBRAŁ JAKIŚ MODEL, JEŻELI NIE TO NIE POZWALAMY WYSŁAĆ FORMULARZA
     */
    if (!$("#pokoje option:selected").length){
        alert('Wybierz pokoj');
        return false;
    }
})
</script>

</body>
</html>



szukaj.php

Kod
<?php
$db =  new PDO('mysql:host=localhost;dbname=rooms', 'reex', 'reex1', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
$stmt = $db->prepare("SELECT `NrPokoju` FROM `pokoj` WHERE ulica=:ulica");
$stmt->bindValue(':ulica', $_POST['ulica'], PDO::PARAM_STR);
$stmt->execute();
$pokoje = $stmt->fetchAll();
$odpowiedz = null;
if(count($pokoje)){
    foreach($pokoje as $v){
        $odpowiedz .= '<option>'.$v['pokoj'].'</option>';
    }
}
echo $odpowiedz;


niestety nie dziala :/ czy moze ktos wskazac mi blad, pewnie gdzies zle podstawione sa dane albo zapytanie mysql jest niedopowiednie
Turson
Odpal narzędzia deweloperskie przeglądarki i zajrzyj do konsoli oraz zobacz jakie dane wysyła i co zwraca skrypt

edit
skoro pobierasz NrPokoju to w $v wstaw NrPokoju albo pobierz dodatkowe kolumny
lukas1986s
Uncaught TypeError: Cannot read property 'create' of undefined
Turson
Jak klikniesz na bład to pojawia się linijka, której teoretycznie dotyczy. Poza tym popraw to co napisałem w edycji poprzedniego posta.
Ten błąd chyba nie ma nic wspólnego z tym kodem, ale pewnie blokuje wykonywanie dalsze js
lukas1986s
measurelt.js

if ((localStorage["firstRun"]!="false") && (localStorage["firstRun"]!=false)){
chrome.tabs.create({url: "welcome.html", selected:true})
//Uncaught TypeError: Connot read property 'create' of undefined
localStorage["firstRun"] = false;
}
Turson
Nie wiem co to jest, bo nie ma żadnego związku z kodem, który tyczy się tematu, a znajdziesz odpowiedź pewnie w google. Jak nie potrzebujesz tego, to po prpstu zakomentuj linijkę gdzie ładujesz measurelt.js
lukas1986s
czy zapytanie mysql w szukaj.php jest dobrze skonfigurowane questionmark.gif

czy lepiej ma byc
Kod
SELECT `NrPokoju` FROM `pokoj` WHERE ulica.Id=pokoj.Ulica.Id
Turson
Zapytanie poprzednie było dobre, tylko że musisz dodać jeszcze kolumnę `pokoj` w select jeżeli potem masz $v['pokoj']
lukas1986s
pierwsza lista pojawia sie , jesli natomiast wybiore jakas opcje to druga nadal jest pusta.

w szukaj.php usunalem z linijki

Kod
SELECT `NrPokoju` FROM `pokoj` WHERE ulica=:ulica"


warunek
Kod
WHERE ulica=:ulica


po tej operacji druga lista rowniez otrzymala dane, z tym ze zostaly umiesczone w niej wszystkie pokoje z tabeli a nie przyporzadkowane do wybranej ulicy
Turson
Mowielem juz zebys sprawdzic jakie dane ajax wysyla
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.