2016-10-30 15 views
0

ユーザーは、ティアリストのようにゲームのさまざまなアイテムに投票できるWebサイトを作成しようとしています。私は、ユーザーが投票したアイテムをランダムテーブルとそのテーブルのランダムな行から取得する必要があります。ランダムテーブルからランダムな行を選択する方法

今、私はランダムなアイテムを見つけるために、セットアップ、次のコードがあります。

$ran = mt_rand(1, 10); 
switch ($ran) { 
    case "1":$sql = "SELECT item, rating FROM ditems ORDER BY RAND() LIMIT 1"; 
     $result = $conn->query($sql); 
     while($row = $result->fetch_assoc()) { 
      echo $row["gun"]; 
     }; 
     break; 
    case "2":$sql = "SELECT item, rating FROM citems ORDER BY RAND() LIMIT 1"; 
     $result = $conn->query($sql); 
     while($row = $result->fetch_assoc()) { 
      echo $row["item"]; 
     }; 
etc 

を私はに実行し、問題は、私が選ばれた項目があるためswitch{}文の外にあるものにアクセスすることができないということです$row配列はローカルで宣言されていますが、その項目に投票するためにボタンを押し上げることができるようにする必要があります。

編集:私はあなたが選択されているエンティティを示すために、テキスト定数と別の列をSELECTできる1

+0

アイテムにはアイテムのペアリングに使用できるIDがありますか?もう少しあなたのコードを見せることができますか?今私はあなたを助けることができる十分な情報が見えません。 –

+0

なぜ複数のテーブルがあるのですか? – Strawberry

+0

なぜクエリが1つのレコードしか返さないときに 'while'を使いますか?レコードをフェッチしたテーブルを指定する '$ ran'があります。なぜ、それを使ってボタンを設定できないのですか?ここでも@Strawberryと同じですが、なぜあなたは複数のテーブルを持っていますか?これらのテーブルのデータ構造はお互いに異なるのですか? – EhsanT

答えて

0

RAND限界によって、単一のテーブル内のすべてのアイテムを投げると ORDERを使用してアイテムを選択することにしました:

$ran = mt_rand(1, 10); 
switch ($ran) { 
    case "1":$sql = "SELECT 'ditem' as entity, item, rating FROM ditems ORDER BY RAND() LIMIT 1"; 
     $result = $conn->query($sql); 
     while($row = $result->fetch_assoc()) { 
      echo $row["gun"]; 
     }; 
     break; 
    case "2":$sql = "SELECT 'citem' as entity, item, rating FROM citems ORDER BY RAND() LIMIT 1"; 
     $result = $conn->query($sql); 
     while($row = $result->fetch_assoc()) { 
      echo $row["item"]; 
     }; 
etc 
関連する問題