1

選択した ID によって行が選択され、ランダム化されます。ただし、同じ要素をランダム化することはできます。例: 「私はピアノを弾くのが好きです。」私が期待している出力は、たとえば次のようにランダム化されています。「私はピアノのように演奏してください」しかし、私が受け取るのは時々「私はピアノのようにピアノが好きです」ということが判明しました。この言葉はデータベース(phpmyadmin)から来ています。データがすべて表示されるが繰り返されないようにするにはどうすればよいですか?

$strSQL = "SELECT * FROM sentences WHERE id 
ORDER BY RAND() LIMIT 1;";

$x = rand(1,4);
echo "$x";
$y = rand(1,4);
echo "$y";
$z = rand(1,4);
echo "$z";
$c = rand(1,4);
echo "$c";

$rs = mysql_query($strSQL);

// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {

    // Write the data of the person
    echo "<dt>Sentence:</dt><dd>" . $row["$x"] . " " . $row["$y"] . " " . $row["$z"] . " " . $row["$c"] ."</dd>";
}
4

2 に答える 2

1

できるよ:

//create an array with numbers 1-4
$order = array(1,2,3,4);

//shuffle them in random order
shuffle($order);

$rs = mysql_query($strSQL);

// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {
    // Write the data of the person
    //Display all the array values from 0-3 (array index starts from 0)
    echo "<dt>Sentence:</dt><dd>" . $row[$order[0]] . " " . $row[$order[1]] . " " . $row[$order[2]] . " " . $row[$order[3]] ."</dd>";
}

ノート:

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2014-05-27T07:03:57.553 に答える
1

機能を使ってみてくださいshuffle()

$strSQL = "SELECT * FROM sentences WHERE id 
ORDER BY RAND() LIMIT 1;";

// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {

    shuffle($row);

    // Write the data of the person
    echo "<dt>Sentence:</dt><dd>" . implode(' ', $row) . "</dd>";
}

無関係: mysql_*php 5.5 の時点で非推奨であり、将来削除される予定です。代わりに mysqli または PDO を使用してください。

于 2014-05-27T07:04:12.177 に答える