我正在尋找一種創建協作翻譯小部件的方式。所以我有一個mysql數據庫和表(稱爲翻譯),以及一個允許用戶一次翻譯一頁的小腳本。從mysql查詢中打印一個隨機行
但我不太相信我的腳本。我認爲它不夠高效。首先,mysql獲取所有具有空'en'列的行,然後通過屏幕顯示一個單獨的行。有沒有其他的方式來做到這一點?這是代碼:
//Retrieve all the data from the "translations" table
$result = mysql_query("SELECT * FROM translations WHERE en IS NULL OR en=''") or die(mysql_error());
$Randnum=rand(0,mysql_num_rows($result)-1); //Gets a random number between 0 and the maximum number of rows
$i=0; //Start to 0
while($Col = mysql_fetch_array($result)) //While there are rows to evaluate
{
if ($i==$Randnum)
{
echo "\"".$Col['es']."\"<br><br>Translate it to English: <br>";
}
$i++;
}
我一直在尋找像 「回聲$山口[$ Randnum] [ '上課']」 或 「回聲$ $上校Randnum [ '上課']」,而不是使用整個while循環打印一個隨機行。我怎樣才能實現這個?如果這只是一個優化問題。如果您可以附帶腳本或想法將一行隨機數字和空白的'en'col分配給$ Col,那會更好! (我認爲這是不可能的)。 'en'行是文本,所以我不知道如何執行other methods我已經看到,因爲它們在ORDER BY中使用數字。
+1是第一個,雖然它的'RAND()':) – 2012-04-01 19:16:08
將它甚至與文字工作嗎?即使它工作,它不會選擇第一個ASCII爲rand()所表示的文本嗎? (例如,如果許多行以'H'開頭,它是不是每次只選擇第一個rand()爲72的行?) – 2012-04-01 19:17:43
@FrankPresenciaFandos:它與表中的數據完全無關。它在內部爲每一行生成一個隨機數,然後按該數字進行排序。 – ThiefMaster 2012-04-01 19:18:33