Estaba buscando una forma de crear un widget de traducción colaborativa. Así que tengo una base de datos y una tabla mysql (llamadas traducciones) y un pequeño script para permitir a los usuarios traducir una página a la vez.Imprimir una fila al azar de una consulta de mysql
Pero no estoy del todo convencido con mi script. No creo que sea lo suficientemente eficiente. Primero, el mysql obtiene todas las filas con la columna vacía 'en', y luego una pantalla muestra una de ellas por un tiempo. ¿Hay otra manera de hacer esto? Este es el código:
//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++;
}
que estaba buscando algo así como "echo $ Col [$ Randnum] [ 'es']" o "echo $ Col. $ Randnum [ 'es']" en lugar de utilizar todo el ciclo While para imprimir una sola fila aleatoria. ¿Cómo puedo implementar esto? Si solo es una cuestión de optimización. Si pudieras venir con un guion o idea para asignarle a $ Col solo UNA fila con un número aleatorio y el 'en' col vacío, ¡eso sería aún mejor! (Creo que no es posible esto último). La fila 'en' es texto, así que no sé cómo implementar other methods que he visto ya que usan el número con ORDER BY.
+1 por ser el primero, aunque es 'RAND()' :) –
¿Funcionará incluso con el texto? Incluso si funciona, ¿no seleccionaría el texto que tiene el primer ASCII como dijo rand()? (por ejemplo, si muchas filas comienzan con 'H', ¿no seleccionará solo la primera CADA vez que rand() es 72?) –
@FrankPresenciaFandos: No está relacionado con los datos en su tabla. Genera internamente un número aleatorio para cada fila y luego ordena por ese número. – ThiefMaster