#php #mysql #mysqli
#php #mysql #mysqli
Вопрос:
Возможно ли это как-то?:
Выделить все строки (упорядочить по rand())
Создайте цикл while, который выводит все строки, кроме первой
$sql = 'SELECT id, name FROM tablename ORDER BY rand ()';
$stmt = $conn->query($sql);
while ($row = $stmt->fetch_assoc()) {
// IF NOT FIRST ROW, DO THIS
$text .= '<p>' . $row['id'] . '<br />' . $row['name'] . '</p>';
}
А затем включите исключенную строку в конец
$text .= '<p>' . $FIRSTROW_id . '<br />' . $FIRSTROW_name . '</p>';
Комментарии:
1. Почему вы хотите это сделать? Рандомизация результатов сделает бессмысленным размещение первого результата последним, ваша первая строка в любом случае не будет отличима от последней строки.
2. Зачем вам это делать? Если порядок случайный, то любая строка может быть первой, так что вы фактически ничего не делаете. Если есть конкретная строка, которую вы хотите использовать первой, то это может быть легко выполнено.
3. Я не уверен, что есть большая разница между «первым», выбранным случайным образом, и «последним», но вы могли бы записать «Первый» в другую переменную (т. Е. не
$text
), а затем добавить его после завершения цикла.4. План состоит в том, чтобы установить основное содержимое (одну строку), затем создать массив для jquery / ajax (для непрерывного слайдера). И этот массив не должен начинаться с первой строки (чтобы избежать повторения одного и того же содержимого). Надеюсь, вы понимаете
5. @mowgli итак, вы хотите «бесконечную прокрутку» со случайно отсортированными строками?
Ответ №1:
Создайте счетчик и, если это первое значение, сохраните его в переменной. Затем, после цикла, вы используете свою переменную с данными из первой строки.
$sql = 'SELECT id, name FROM tablename ORDER BY rand ()';
$stmt = $conn->query($sql);
$i = 0;
while ($row = $stmt->fetch_assoc())
{
if ( $i == 0 )
$firstrow = $row;
else
$text .= '<p>' . $row['id'] . '<br />' . $row['name'] . '</p>';
$i ;
}
if ( $firstrow )
$text .= '<p>' . $firstrow['id'] . '<br />' . $firstrow['name'] . '</p>';
РЕДАКТИРОВАТЬ : Из того, что вы сказали в комментариях, вы можете просто передать первую строку как параметр в AJAX и исключить ее в своем запросе :
$sql = "SELECT id, name FROM tablename WHERE id != '".intval($_GET['id'])."' ORDER BY rand ()";
$stmt = $conn->query($sql);
$_GET['id']
будет параметром, который вы отправляете с помощью AJAX.
Комментарии:
1. Я пробовал это и другие способы.. Я понимаю, что мне просто нужно проверить с помощью js / jquery, какой идентификатор является текущим в div. А затем теперь переключитесь на тот же идентификатор содержимого