これはちょっとした頭の体操で、私はしばらくそれを行う方法を考えていました。タイトルが十分かどうかはわかりませんが、それは私ができる最善のことです.
現在開発中のサイトに集中オーディオ再生システムがあります。集中化とは、サイト上のすべてがそれを介して再生されることを意味するため、一度に再生できるトラックは 1 つだけであり、連続再生も可能になります。
プレーヤーについて詳しく説明する前に、サイトの一部について説明する必要があります。このサイトでは、ミュージシャン向けの音楽やその他のものをホストしています。ミュージシャンは、ユーザーによってサイトに掲載されるように投票されます。投票するには、ユーザーは投票をクリックし、トラックを聴いて、好きか嫌いかをクリックします。簡単です! トラックに十分な「いいね!」が集まると、トラックの作成者がサイトの一部になり、プロフィールやその他のものにさらに多くのトラックをアップロードできるようになります。これで、サイトのこの部分の内容が説明されるはずなので、プレーヤーについて詳しく説明できます。
2 つのプレーヤーがあり、1 つはツールバーにあり、もう 1 つはページ内にあり、soundcloud のプレーヤーのように複数のプレーヤーが存在する可能性があります。すべてがリンクされているため、トラックがインページ プレーヤーで再生されるとツールバー プレーヤーで再生され、その逆も同様です。
オーディオ プレーヤーは jQuery で構築されています。
オーディオ再生をトリガーするためにユーザーが実行できることも 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 に入れられます。
適切なことが起こるようにするには、どのように適切なクエリを選択すればよいでしょうか? または、少なくともクエリの正しい結果を選択しますか?
質問が少し長くなって申し訳ありませんが、ほぼすべての詳細を説明する必要がありました。