Stavo cercando un modo per creare un widget di traduzione collaborativa. Quindi ho un database e una tabella mysql (chiamate traduzioni) e un piccolo script per consentire agli utenti di tradurre una pagina alla volta.Stampa una riga casuale da una query mysql
Ma non sono abbastanza convinto con la mia sceneggiatura. Non penso sia abbastanza efficiente. In primo luogo, il mysql ottiene tutte le righe con la colonna 'en' vuota, e poi una sola di esse viene mostrata a schermo per un po '. C'è un altro modo per farlo? Questo è il codice:
//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++;
}
ero alla ricerca di qualcosa come "echo $ Col [$ Randnum] [ 'es']" o "echo $ Col. $ Randnum [ 'es']" invece di utilizzare l'intero ciclo while per stampare una singola riga casuale. Come posso implementarlo? Se si tratta solo di ottimizzazione. Se potessi venire con una sceneggiatura o un'idea da assegnare a $ Col solo UNA riga con un numero casuale e il campo vuoto 'en', sarebbe ancora meglio! (Penso che non sia possibile questo ultimo bit). La riga 'en' è testo quindi non so come implementare other methods che ho visto in giro mentre usano il numero con ORDER BY.
+1 per essere i primi, anche se è 'RAND()' :) –
Funzionerà anche con il testo? Anche se funzionasse, non selezionerebbe il testo che ha il primo ASCII come rand() ha detto? (ad esempio, se molte righe iniziano con 'H', non selezionerà solo la prima OGNI volta che rand() è 72?) –
@FrankPresenciaFandos: non è completamente correlato ai dati nella tabella. Genera internamente un numero casuale per ogni riga e quindi ordina per quel numero. – ThiefMaster