0

サイトはこちら。

あるフォームがデータベースから別のフォームの作成をトリガーするようにしようとしています。HTML、PHP、およびデータベースを並べ替えましたが、jQuery に苦労しています。

誰かが私を正しい方向に向けることができますか? 私は死ぬほどグーグルで検索しましたが、何を検索すればよいか正確にわからないという事実によって、少し制限されています。

編集:

これが私があなたのアドバイスに従っているものです。残念ながら、まだ機能していません。

jQuery:

<script type="text/javascript">                       
$('#city').change(function(){
    var $club = $('#club');
    $club.find('option:not([value="default"])').remove(); //Remove previous items
    $.getJSON('GetClubs.php', {city:$(this).val()}, function(clubs){
        $.each(clubs, function(index, city){
            $club.append('<option value="'+city[0]+'">'+city[1]+'</option>');
        });
    });
});
</script>

HTML:

<form name="myform" action="" method="POST">
<h1>1. Choose your city</h1>
<select name="city" class="dropdown" id="city">
<option value="default" disabled="disabled" selected="selected">--- Select your option ---</option>
<?php getCities(); ?>
</select>

<h1>2. Choose your club</h1>
<select name="club" class="dropdown" id="club">
<option value="default" disabled="disabled" selected="selected">--- Select your option ---</option>
</select>
</form>

PHP:

<?php

date_default_timezone_set('Europe/London');

$day = date("l");
$time = date("G");

if ($time >= 21) {
    $day = date('l', strtotime($day .' +1 day'));
    }

$city = $_POST['city'];


if ($day == Monday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY')";
    }

else if ($day == Tuesday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY')";
    }

else if ($day == Wednesday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY')";
    }

else if ($day == Thursday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY')";
    }

else if ($day == Friday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY')";
    }

else if ($day == Saturday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY')";
    }

else if ($day == Sunday) {
    $query = "SELECT name FROM nights WHERE city = '$city' ORDER BY FIELD(day, 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY')";
    }

    $result = mysql_query($query);
    $items = array();

    if($result && mysql_num_rows($result) > 0) { 
        while ($row = mysql_fetch_array($result)) { 
            $items[] = array( $row[0], $row[1] );
            }         
    } 

    mysql_close(); 
    // convert into JSON format and print
    echo json_encode($items);
?>
4

2 に答える 2

0
$('#city').change(function(){
    var $club = $('#club');
    $club.find('option:not([value="default"])').remove(); //Remove previous items
    $.getJSON('GetClubs.php', {city:$(this).val()}, function(clubs){
        $.each(clubs, function(index, city){
            $club.append('<option value="'+city[0]+'">'+city[1]+'</option>');
        });
    });
});

You'll also have to remove the echo "<option...".

You should also have a look at mysql-real-escape-string

于 2012-06-07T13:01:45.437 に答える
0

これをチェックして

「onChange」イベントで最初のドロップダウンがjquery関数を呼び出すようにします。この関数では、1) 選択したオプションの値を取得し、2) 以下のコードのように上記のリンクの例を使用して ajax を作成し、その値を ur GetClubs.php に渡します。

    $.getJSON('url/GetClubs.php', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<option value="' + key + '">' + val + '</option>');
  });

  $('<select/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('#secondDropdown');
});

もちろん、この例は JSON ファイルの構造に依存しています。

{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

それでおしまい。最初の選択ボックスの値を変更すると、データが取り込まれます

于 2012-06-07T13:07:33.053 に答える