0

これはちょっとした頭の体操で、私はしばらくそれを行う方法を考えていました。タイトルが十分かどうかはわかりませんが、それは私ができる最善のことです.

現在開発中のサイトに集中オーディオ再生システムがあります。集中化とは、サイト上のすべてがそれを介して再生されることを意味するため、一度に再生できるトラックは 1 つだけであり、連続再生も可能になります。

プレーヤーについて詳しく説明する前に、サイトの一部について説明する必要があります。このサイトでは、ミュージシャン向けの音楽やその他のものをホストしています。ミュージシャンは、ユーザーによってサイトに掲載されるように投票されます。投票するには、ユーザーは投票をクリックし、トラックを聴いて、好きか嫌いかをクリックします。簡単です! トラックに十分な「いいね!」が集まると、トラックの作成者がサイトの一部になり、プロフィールやその他のものにさらに多くのトラックをアップロードできるようになります。これで、サイトのこの部分の内容が説明されるはずなので、プレーヤーについて詳しく説明できます。

2 つのプレーヤーがあり、1 つはツールバーにあり、もう 1 つはページ内にあり、soundcloud のプレーヤーのように複数のプレーヤーが存在する可能性があります。すべてがリンクされているため、トラックがインページ プレーヤーで再生されるとツールバー プレーヤーで再生され、その逆も同様です。

オーディオ プレーヤーは jQuery で構築されています。

オーディオ再生をトリガーするためにユーザーが実行できることも 3 つあります。

  1. ツールバー プレーヤーに表示されている最新のトラックを再生します。
  2. ページ内プレーヤーでトラックを再生します。
  3. 投票をクリックして、ランダムなトラックを聴いて投票してください。

今私が抱えている問題は、mysql クエリとその選択方法にあります。ユーザーが送信できる 3 つのトリガーはそれぞれ異なる mysql クエリを必要とするため、トリガーごとにクエリを選択する方法を考える必要があります。

以下のクエリでは、選択したトラックに基づいてアーティストに関する情報を取得する変数とクエリを省略しています。

1 (ツールバー プレーヤー) のクエリ。

$fetchtrack = mysql_query("SELECT * FROM tracks ORDER BY timestamp DESC LIMIT 1");
$track = mysql_fetch_array($fetchurl);

$url = $track['url'];

2 のクエリ (ページ プレーヤー内)

$fetchtrack = mysql_query("SELECT * FROM tracks WHERE track_ID = Variable for the selected track");
$track = mysql_fetch_array($fetchurl);

$url = $track['url'];

3 のクエリ (投票)

 //Set up artist query so no artists are shown and cannot be voted on

 $findartist = mysql_query("SELECT * FROM artists");
 $artist = mysql_fetch_array($findartist);

 $artist =  $artist['name']; 

 //Set up vote query so that you are not shown a track you have already voted on

 $findvoted = mysql_query ("SELECT * FROM votes WHERE ID = '$user_ID'");
 $voted = mysql_fetch_array($findvoted);

 $votedID = $voted['track_ID'];

 //Query tracks with relevent information

 $fetchtrack = mysql_query("SELECT * FROM tracks WHERE ID != '$user_ID' AND track_ID != '$votedID' LIMIT 1");
 $track = mysql_fetch_array($fetchtrack);
 $url = $track['url'];

ああ、投票システム、ツールバー プレーヤー、およびページ内プレーヤーがすべて別のファイルにあり、すべてが jQuery の単一の js ファイルにリンクされていることを理解するのに役立ちます。$url 変数は、var として jQuery に入れられます。

適切なことが起こるようにするには、どのように適切なクエリを選択すればよいでしょうか? または、少なくともクエリの正しい結果を選択しますか?

質問が少し長くなって申し訳ありませんが、ほぼすべての詳細を説明する必要がありました。

4

1 に答える 1

0

私はそれを並べ替えました。JavaScriptでいくつかのAJAXリクエストを使用することになったので、かなり長くなりました。クエリごとに AJAX 要求があり、各クエリは個別のファイルにあり、URL がエコーアウトされます。URL は、曲を再生する JavaScript に送り返されます。同時に、URL がプレーヤーの 1 つに送信され、そこでさらに多くの SQL クエリが作成され、正しい情報が取得され、正しいトラックにエコーされます。jQueryでAJAX関数のこつをつかんだとき、それは単純で論理的でした。

于 2012-08-17T21:20:15.457 に答える