Получить конкретную строку результатов MySQL - PullRequest
0 голосов
/ 18 декабря 2011

Я хочу выбрать все записи в таблице MySQL и случайным образом отобразить их количество. Вот мой код:

include 'connectdb.php';

$query = "SELECT * FROM places WHERE box = 1";
$result = mysql_query($query);
$total = mysql_affected_rows();
$total = $total - 1;
$wanted = 2; // the number of entries i want to display
if( $wanted > $total ) {
    die("Not enough places yet!");
    }
$toshow = array();
for( $i = 0; $i < $wanted ; $i++ ) {
    $temp = rand( 0 , $total );
    while( in_array( $temp , $toshow ) ) {
        $temp = rand( 0 , $total );
        }
    $toshow[$i] = $temp;
    }
foreach( $toshow as $add ){
    $row = // function needed here //

    $name = $row['name'];
    $telephone = $row['telno'];
    //get rest of row and include a view to show the entry
    }

Я также пытался использовать:

mysql_result( $result , $add );

но это, похоже, не помогает. Соединение MySQL работает, цикл for возвращает массив чисел, которые существуют только один раз, так что я не показываю один и тот же пост все время, и я добавил кубик, потому что если нам нужно больше постов, чем число, он ges застрял в бесконечном цикле.

Есть идеи о функции, которая мне нужна / предложения для решения проблемы? / что я сделал совершенно неправильно?

1 Ответ

2 голосов
/ 18 декабря 2011

Просто выберите в случайном порядке, и у вас уже есть то, что вы просите:

$query = sprintf("SELECT * FROM places WHERE box = %d ORDER BY RAND() LIMIT 0, %d"
                     , 1, $wanted);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...