1

PHPを使用してMySQLデータベースと対話し、ドロップダウンに動的にデータを入力して、jQueryMobileサイトを構築しています。最初のページ(送信ボタンのあるフォーム内の単純な選択リスト)を作成するコードは次のとおりです。

app.php:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>
    </title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <style>
        /* App custom styles */
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js">
    </script>
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js">
    </script>
</head>
<body bgcolor="#000000">
    <div data-role="page" data-theme="a" id="page1">
        <div data-theme="a" data-role="header">
            <h3>
                Header
            </h3>
        </div>
        <div data-role="content">
            <div data-role="fieldcontain">
                <form action="showView.php" method="POST">
                <label for="selectmenu1">
                    Select a show:
                </label>
                <select name="selectmenu1" id="select_a_show">
                 <?php 
$con = mysql_connect('tfis.db.7386546.hostedresource.com','tfis','Kurdt4794');

if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db('tfis', $con);

$queryStr = 'SELECT * FROM Shows';      
$result = mysql_query($queryStr);
while($row = mysql_fetch_array($result))
{
    $episode_num = $row['episode_num'];
    echo "<option value=" . $episode_num . ">Episode " . $episode_num . "</option>";
} 
mysql_close($con);
?>
        </select>
                <input type="submit" value="Submit" />
            </form>
            </div>
        </div>
    </div>
</body>

次に、選択した値を処理する2番目のページがあります。これは、次のコードでデータベースへのPHPクエリで使用します。

showView.php:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>
    </title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js">
    </script>
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js">
    </script>
</head>
    <body>

<?php 
$con = mysql_connect('tfis.db.7386546.hostedresource.com','tfis','Kurdt4794');

if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db('tfis', $con);

$episode = $_REQUEST["select_a_show"];
$queryStr = "SELECT * FROM Shows WHERE episode_num = $episode LIMIT 1";
echo "Episode" . $episode . $queryStr;
$result = mysql_query($queryStr);

while($row = mysql_fetch_array($result))
{
    $episode_title = $row['episode_title'];
    $description = $row['description'];
    $filename = $row['filename'];
    $image_filename = $row['image_filename'];
    $youtube = $row['youtube'];
}
echo "<div data-theme='a' data-role='header'> <h3> " . $episode_title . "</h3>
        </div>
        <div data-role='content'>
        <img src='http://foxtechnyc.com/TFIS/images/" . $image_filename . "' />
            </div>
            <div>" . $description . "
            <a data-role='button' data-transition='fade' href='http://foxtechnyc.com/TFIS/audio/" . $filename . "'>
            Listen To Show</a>
            <a data-role='button' data-transition='fade' href='http://www.youtube.com/watch?v=" . $youtube . "&feature=player_embedded>
            Watch YouTube Video
            </a></div>";
?>
<script>
    alert(selection);
</script>
</body>

問題は、次のコードを使用して値が正しくフェッチされていないことです。

$episode = $_REQUEST["select_a_show"];

JQueryはクライアント側でPHPはサーバー側であるため、サーバーからのAJAXロングポーリングについて調べましたが、ここでどのように実装できるかわかりません。

助けてくれてありがとう!

4

1 に答える 1

1

フォームでは、selectフィールドの名前はname="select_a_show"

つまり、app.php の 30 行目を次のように変更します。 <select name="selectmenu1" id="select_a_show">

<select name="select_a_show" id="select_a_show">

これでうまくいくはずです。

于 2012-05-18T21:00:41.813 に答える