私は共同翻訳ウィジェットを作成する方法を探していました。だから、私はmysqlデータベースとテーブル(翻訳と呼ばれる)と、ユーザーが一度に1ページを翻訳できるようにするための小さなスクリプトを持っています。mysqlクエリからランダムな行を出力します
しかし、私は自分のスクリプトでは納得できません。私はそれが十分に効率的だとは思わない。まず、mysqlは空の 'en'カラムを持つすべての行を取得し、そのうち1つは画面でしばらく表示されます。これを行う他の方法はありますか?
//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] [ 'ES']" または "エコー$大佐$ Randnum [ 'ES']" のようなものを探していたの代わりに使用した:これはコードです全体のwhileループは単一のランダムな行を出力します。これをどのように実装できますか?これは単なる最適化の問題です。 $ Colに1行だけ乱数と空の 'en' colを代入するスクリプトやアイデアがあれば、それはさらに良いでしょう! (私はそれがこの最後のビットが可能ではないと思う)。 「行」はテキストなので、実装方法はわかりませんother methods ORDER BYで数字を使用しているのを見てきました。
+1最初のもののために、それは 'RAND()'だが、:) –
それもテキストで動作しますか?それが動作しても、rand()が言ったように最初のASCIIを持つテキストは選択されませんか? (たとえば、多くの行が 'H'で始まる場合は、rand()が72であるたびに最初の行のみを選択しません) –
@FrankPresenciaFandos:これはテーブル内のデータとはまったく関係ありません。内部的には、各行に対して乱数を生成し、その数で注文します。 – ThiefMaster