Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]dynamiczne, zalezne selecty
lukas1986s
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 25.08.2012

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


witam

z wczesniejszych moich tematow otrzymalem wzor pewnego kodu zaleznych od siebie selectow

http://turson.pl/blog/dynamiczne-zalezne-selecty/

Kod przerobilem. Niestety cos nie dziala w drugiej liscie. Druga lista powinna pokazywac nr-y pokoji przypisanych do ulicy wybranej w pierwszym slelecie. W moim przypadku pomimo wybraniu jakielkowiek pierwszej opcji w drugiej liscie pojawiaja sie wszystkie pokoje, ponizej kod

Kod
<?php
// POŁĄCZENIE Z BAZĄ DANYCH
$db =  new PDO('mysql:host=localhost;dbname=rooms', 'reex', 'reex1', 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 Nazwa FROM ulica");
$ulica = $stmt->fetchAll();
?>

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

    <label for="pokoj">Wybierz pokoj</label>
    <select id="pokoje" name="pokoj">
    </select>
</form>

<script>
$('#ulica').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>



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 `Nazwa`,`NrPokoju` FROM `pokoj`,`ulica` WHERE pokoj.UlicaId=ulica.Id ");
$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['NrPokoju'].'</option>';
    }
}
echo $odpowiedz;

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Już dostałeś odpowiedź. Jak bindujesz :ulica to uwzględnij to w zapytaniu a nie bierzesz dane z kosmosu
SELECT `Nazwa`,`NrPokoju` FROM `pokoj`,`ulica` WHERE UlicaId=:ulica


@edit
o matko, zastanów się co robisz. Wstawiasz w warunek stringa gdzie id może być tylko integerem. Po pierwsze musisz zmodyfikować w formularzu selecta, żeby przesyłał id ulicy a nie nazwę!

Ten post edytował Turson 10.06.2014, 18:26:15
Go to the top of the page
+Quote Post
lukas1986s
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 25.08.2012

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


Cytat(Turson @ 10.06.2014, 19:24:13 ) *
Już dostałeś odpowiedź. Jak bindujesz :ulica to uwzględnij to w zapytaniu a nie bierzesz dane z kosmosu
SELECT `Nazwa`,`NrPokoju` FROM `pokoj`,`ulica` WHERE UlicaId=:ulica


@edit
o matko, zastanów się co robisz. Wstawiasz w warunek stringa gdzie id może być tylko integerem. Po pierwsze musisz zmodyfikować w formularzu selecta, żeby przesyłał id ulicy a nie nazwę!


jestem bardzo poczatkujacym dlatego pytam na forum
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 18:35