2017-04-15 31 views
1

我正在創建一個簡單的拖放jQuery遊戲,它需要從我的數據庫表中10行的洗牌結果集。我能夠通過重複10個獨立的查詢塊來實現這一目標,但我相信必須有一種更優雅的方式來實現這一點。我嘗試了很多東西,循環和追加等,但我無法獲得循環方式的工作。從數據庫表結果創建一個隨機關聯數組

我不能讓這個循環版本的工作:

<script type="text/javascript"> 
<?php 
// first create list of 10 fake id's and shuffle them 
$id_array = range(0, 9); 
shuffle($id_array); 

/* 
    // then loop to fetch all data from MySql table with spanish, english 
    // CANNOT GET THIS WORKiNG ? 
    for (i = 0; i < 10; i++) { 
     $query = "SELECT id, english, spanish FROM colors WHERE id = $id_array[i]"; 
     $result = mysqli_query($link, $query); 
     $row = mysqli_fetch_array($result); 
     $rand_value.append(i) = $row['english']; 
     $name.append(i) = strtoupper($row['spanish']); 
    } 
*/ 

寫出來的作品,但必須有一個更簡單的方法...

<script type="text/javascript"> 
<?php 
// create all input from MySql table for drag and drop area with spanish, english 
$query = "SELECT id, english, spanish FROM colors WHERE id = $id_array[0]"; 
$result = mysqli_query($link, $query); 
$row = mysqli_fetch_array($result); 
$random_key0 = $row['id']; 
$rand_value0 = $row['english']; 
$name0 = strtoupper($row['spanish']); 

$query = "SELECT id, english, spanish FROM colors WHERE id = $id_array[1]"; 
$result = mysqli_query($link, $query); 
$row = mysqli_fetch_array($result); 
$random_key1 = $row['id']; 
$rand_value1 = $row['english']; 
$name1 = strtoupper($row['spanish']); 

// and so on to run 10 queries total 
?> 
+0

我剛剛對您的問題進行了重大修改。我知道你想解釋你的項目,但是如果所有不相關的內容都從你的問題中刪除,它對未來的讀者更有幫助。我修改了你的標題,內容和標籤(試圖改進你的問題),如果你不喜歡我所做的,你可以重新編輯你的問題,但請理解,創建一個最小和明確的問題是目標。 – mickmackusa

回答

0

通過使用RAND()簡化一切您的查詢。只使用一個查詢並以混洗順序檢索所有十行。

$query="SELECT id,english,UPPER(spanish) FROM colors ORDER BY RAND() LIMIT 10;"; 
$result=mysqli_query($link,$query); 
while($row=mysqli_fetch_array($result)){ 
    // prepare and handle your results using: $row['id'], $row['english'], $row['spanish'] 
} 

編輯:我已經添加到UPPER()查詢,使西班牙值並不需要在你的PHP以後修改做。

+0

酷,沒有找到一個..搜索錯誤的地方(不是SQL選項)。非常感謝! – Inge