3

動的に生成されたドロップダウン リストを使用してテーブルに入力しようとしています。データベースから生成されたドロップダウン リストがあります (特定のプレーヤーで利用可能なすべての年を取得します)。ドロップダウンから年を選択して、テーブルを更新できるようにしたいと考えています。ドロップダウンを生成していますが、ドロップダウンから選択した値を取得できません。ここで見つけた以下のコードがありますが、機能していないようです。これが私がこれまでに持っているコードです:

<input name="update" type="submit" value="Update" />
</form>
<p></p>
<form  action="player_login.html">
<input type="submit" value="Logout" />
</form>
</div>

<div style="float: left">
    <p></p>
<h1>Player Stats</h1>
<table width="300" border="1" cellpadding="2" cellspacing="2">

<?php
    // get "id" field from player table
    $login_id = $_COOKIE["DB"];
    $id = "select id from player where login_id='$login_id';";
    $result1=mysql_query($id)  or die('Select1 Query failed: ' . mysql_error());
    $row = mysql_fetch_array($result1);

    // create a dropdown from stats table in db
    echo "--Select Year--";
        $years_query = "select year from stats where player_id='$row[id]';";
        $years = mysql_query($years_query, $connect);

        // fill array with db info
        $var = array();
        while ($row2 = mysql_fetch_array($years))
        {
            $var[] = $row2['year'];
        }

        // create dropdown
    echo'<select name="years" id="years">'; 
    // For each value of the array assign variable name "city" 
    foreach($var as $year)
    { 
            echo'<option value="'.$year.'">'.$year.'</option>'; 
    }    
    echo'</select>';

    // get selected option from dropdown
    $selected_key = $_POST['years'];
    $selected_val = $var[$_POST['years']];
    echo "<p></p>selected key: " . $selected_val; // this wont print anything???

    $search_query="select * from stats where player_id='$row[id]' and year=2013;";
    $result=mysql_query($search_query)  or die('Select2 Query failed: ' . mysql_error());
    $num_cols = mysql_num_fields($result);
    $line = mysql_fetch_row($result);

    // create table with results
    echo "<tr>";
    echo "<td>Year</td>";  
        $j=1;
        echo "<td><input name='$j' type='text' value='$line[$j]' size=20/></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Total Points</td>";  
        $j=2;
        echo "<td><input name='$j' type='text' value='$line[$j]' size=20/></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>PPG</td>";  
        $j=3;
        echo "<td><input name='$j' type='text' value='$line[$j]' size=20/></td>";
    echo "</tr>";


?> 

</table>
</div>
4

3 に答える 3

1

$_POST を使用しているようですが、フォームが送信されていないため、$_POST のデータが設定されていません。イベントをキャッチし、AJAX クエリのフェッチ結果を送信して更新するために使用した利用可能な最良のオプション。

以下のようにJ Queryの助けを借りてこれを行いました

$('#years').change(function() {
   $.ajax({
           //request of AJAX
    type : 'POST',
    url : 'players_data.php',
    dataType : 'json',
    data: {
        //Data with $_POST request
        years : $('#years').val();

    },
    success: function(data){
    //Things to be done with returned data
    }
}};

新しいファイルplayers_data.phpを作成し、そこにdbからデータを取得するためのコードを次のように記述します。

// get selected option from dropdown
$selected_key = $_POST['years'];
$selected_val = $var[$_POST['years']];
echo "<p></p>selected key: " . $selected_val; // this wont print anything???

$search_query="select * from stats where player_id='$row[id]' and year=2013;";
$result=mysql_query($search_query);
$num_cols = mysql_num_fields($result);
$line = mysql_fetch_row($result);
$return['year']=$line;
echo json_encode($return);
于 2013-10-26T19:06:03.847 に答える
0

$_POSTを使用しているようですが、フォームを使用しないのはなぜですか?

//This is for get the form
    echo '<script type="text/javascript">
        //<![CDATA[
        function get_form( element )
        {
            while( element )
            {
                element = element.parentNode
                if( element.tagName.toLowerCase() == "form" )
                {
                    return element
                }
            }
            return 0; //error: no form found in ancestors
        }
        //]]>
    </script>';

//create a form
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
// create dropdown; onchange will send the form when selected index changes...
echo '<select name="years" id="years" onchange="get_form(this).submit(); return false;">'; 
    // For each value of the array assign variable name "city" 
    foreach($var as $year)
    { 
            echo'<option value="'.$year.'">'.$year.'</option>'; 
    }    
    echo'</select></form>';

そしてそれだけです!:D

すべてのページを更新するために独自のフォームを使用していることもわかりました...送信ボタンしかなく、フォームに要素がないため、うまくいきません。それを読んでください:http://www .w3schools.com/tags/tag_form.asp

于 2013-10-26T18:54:28.163 に答える
0

あなたのコードから、選択ボックスから値を取得し、すぐにテーブルにデータを入力して結果を表示したいことがわかります.jqueryを使用して、選択したオブジェクトの値を取得し、javascript変数をphp変数に割り当てます. そしてデータベースに挿入します..

       <script type="text/javascript">
   $( "#years" ).change(function() {
     var value=document.getElementById("years").value;
         alert(value);
       </script>

変数を php に割り当て、php クエリを実行します。

              <?php
             $data = "<script>document.write(value)</script>";
                  //execute  your query here..
        ?>

ajaxも見てください..それはとてもうまくいきます...

于 2013-10-26T19:09:28.837 に答える